mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-07 20:30:36 -05:00
parent
2fbdee7268
commit
e8537e6dd0
2 changed files with 63 additions and 51 deletions
|
@ -22,19 +22,15 @@ import (
|
||||||
jww "github.com/spf13/jwalterweatherman"
|
jww "github.com/spf13/jwalterweatherman"
|
||||||
|
|
||||||
qt "github.com/frankban/quicktest"
|
qt "github.com/frankban/quicktest"
|
||||||
|
"github.com/gohugoio/hugo/common/herrors"
|
||||||
"github.com/gohugoio/hugo/htesting"
|
"github.com/gohugoio/hugo/htesting"
|
||||||
"github.com/gohugoio/hugo/hugolib"
|
"github.com/gohugoio/hugo/hugolib"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestTransformPostCSS(t *testing.T) {
|
const postCSSIntegrationTestFiles = `
|
||||||
if !htesting.IsCI() {
|
|
||||||
t.Skip("Skip long running test when running locally")
|
|
||||||
}
|
|
||||||
|
|
||||||
c := qt.New(t)
|
|
||||||
|
|
||||||
files := `
|
|
||||||
-- assets/css/components/a.css --
|
-- assets/css/components/a.css --
|
||||||
|
/* A comment. */
|
||||||
|
/* Another comment. */
|
||||||
class-in-a {
|
class-in-a {
|
||||||
color: blue;
|
color: blue;
|
||||||
}
|
}
|
||||||
|
@ -98,51 +94,57 @@ module.exports = {
|
||||||
|
|
||||||
`
|
`
|
||||||
|
|
||||||
c.Run("Success", func(c *qt.C) {
|
func TestTransformPostCSS(t *testing.T) {
|
||||||
b := hugolib.NewIntegrationTestBuilder(
|
if !htesting.IsCI() {
|
||||||
hugolib.IntegrationTestConfig{
|
t.Skip("Skip long running test when running locally")
|
||||||
T: c,
|
}
|
||||||
NeedsOsFS: true,
|
|
||||||
NeedsNpmInstall: true,
|
|
||||||
LogLevel: jww.LevelInfo,
|
|
||||||
TxtarString: files,
|
|
||||||
}).Build()
|
|
||||||
|
|
||||||
b.AssertLogContains("Hugo Environment: production")
|
|
||||||
b.AssertLogContains(filepath.FromSlash(fmt.Sprintf("PostCSS Config File: %s/postcss.config.js", b.Cfg.WorkingDir)))
|
|
||||||
b.AssertLogContains(filepath.FromSlash(fmt.Sprintf("package.json: %s/package.json", b.Cfg.WorkingDir)))
|
|
||||||
|
|
||||||
b.AssertFileContent("public/index.html", `
|
|
||||||
Styles RelPermalink: /css/styles.css
|
|
||||||
Styles Content: Len: 770875|
|
|
||||||
`)
|
|
||||||
})
|
|
||||||
|
|
||||||
c.Run("Error", func(c *qt.C) {
|
|
||||||
s, err := hugolib.NewIntegrationTestBuilder(
|
|
||||||
hugolib.IntegrationTestConfig{
|
|
||||||
T: c,
|
|
||||||
NeedsOsFS: true,
|
|
||||||
NeedsNpmInstall: true,
|
|
||||||
TxtarString: strings.ReplaceAll(files, "color: blue;", "@apply foo;"), // Syntax error
|
|
||||||
}).BuildE()
|
|
||||||
s.AssertIsFileError(err)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
// bookmark2
|
|
||||||
func TestIntegrationTestTemplate(t *testing.T) {
|
|
||||||
c := qt.New(t)
|
c := qt.New(t)
|
||||||
|
|
||||||
files := ``
|
|
||||||
|
|
||||||
b := hugolib.NewIntegrationTestBuilder(
|
b := hugolib.NewIntegrationTestBuilder(
|
||||||
hugolib.IntegrationTestConfig{
|
hugolib.IntegrationTestConfig{
|
||||||
T: c,
|
T: c,
|
||||||
NeedsOsFS: false,
|
NeedsOsFS: true,
|
||||||
NeedsNpmInstall: false,
|
NeedsNpmInstall: true,
|
||||||
TxtarString: files,
|
LogLevel: jww.LevelInfo,
|
||||||
|
TxtarString: postCSSIntegrationTestFiles,
|
||||||
}).Build()
|
}).Build()
|
||||||
|
|
||||||
b.Assert(true, qt.IsTrue)
|
b.AssertLogContains("Hugo Environment: production")
|
||||||
|
b.AssertLogContains(filepath.FromSlash(fmt.Sprintf("PostCSS Config File: %s/postcss.config.js", b.Cfg.WorkingDir)))
|
||||||
|
b.AssertLogContains(filepath.FromSlash(fmt.Sprintf("package.json: %s/package.json", b.Cfg.WorkingDir)))
|
||||||
|
|
||||||
|
b.AssertFileContent("public/index.html", `
|
||||||
|
Styles RelPermalink: /css/styles.css
|
||||||
|
Styles Content: Len: 770875|
|
||||||
|
`)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// 9880
|
||||||
|
func TestTransformPostCSSError(t *testing.T) {
|
||||||
|
if !htesting.IsCI() {
|
||||||
|
t.Skip("Skip long running test when running locally")
|
||||||
|
}
|
||||||
|
|
||||||
|
c := qt.New(t)
|
||||||
|
|
||||||
|
s, err := hugolib.NewIntegrationTestBuilder(
|
||||||
|
hugolib.IntegrationTestConfig{
|
||||||
|
T: c,
|
||||||
|
NeedsOsFS: true,
|
||||||
|
NeedsNpmInstall: true,
|
||||||
|
TxtarString: strings.ReplaceAll(postCSSIntegrationTestFiles, "color: blue;", "@apply foo;"), // Syntax error
|
||||||
|
}).BuildE()
|
||||||
|
|
||||||
|
s.AssertIsFileError(err)
|
||||||
|
fe := herrors.UnwrapFileError(err)
|
||||||
|
pos := fe.Position()
|
||||||
|
c.Assert(strings.TrimPrefix(pos.Filename, s.H.WorkingDir), qt.Equals, filepath.FromSlash("/assets/css/components/a.css"))
|
||||||
|
c.Assert(pos.LineNumber, qt.Equals, 4)
|
||||||
|
errctx := fe.ErrorContext()
|
||||||
|
c.Assert(errctx, qt.IsNotNil)
|
||||||
|
c.Assert(errctx.Lines, qt.DeepEquals, []string{"/* Another comment. */", "class-in-a {", "\t@apply foo;", "}", ""})
|
||||||
|
c.Assert(errctx.ChromaLexer, qt.Equals, "css")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ import (
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/common/collections"
|
"github.com/gohugoio/hugo/common/collections"
|
||||||
"github.com/gohugoio/hugo/common/hexec"
|
"github.com/gohugoio/hugo/common/hexec"
|
||||||
|
"github.com/gohugoio/hugo/hugofs"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/common/hugo"
|
"github.com/gohugoio/hugo/common/hugo"
|
||||||
|
|
||||||
|
@ -39,8 +40,6 @@ import (
|
||||||
|
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/hugofs"
|
|
||||||
|
|
||||||
"github.com/mitchellh/mapstructure"
|
"github.com/mitchellh/mapstructure"
|
||||||
|
|
||||||
"github.com/gohugoio/hugo/common/herrors"
|
"github.com/gohugoio/hugo/common/herrors"
|
||||||
|
@ -391,8 +390,19 @@ func (imp *importResolver) toFileError(output string) error {
|
||||||
return inErr
|
return inErr
|
||||||
}
|
}
|
||||||
|
|
||||||
realFilename := fi.(hugofs.FileMetaInfo).Meta().Filename
|
meta := fi.(hugofs.FileMetaInfo).Meta()
|
||||||
|
realFilename := meta.Filename
|
||||||
|
f, err := meta.Open()
|
||||||
|
if err != nil {
|
||||||
|
return inErr
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
return herrors.NewFileErrorFromFile(inErr, file.Filename, realFilename, hugofs.Os, herrors.SimpleLineMatcher)
|
ferr := herrors.NewFileError(realFilename, inErr)
|
||||||
|
pos := ferr.Position()
|
||||||
|
pos.LineNumber = file.Offset + 1
|
||||||
|
return ferr.UpdatePosition(pos).UpdateContent(f, nil)
|
||||||
|
|
||||||
|
//return herrors.NewFileErrorFromFile(inErr, file.Filename, realFilename, hugofs.Os, herrors.SimpleLineMatcher)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue