summaryrefslogtreecommitdiffstats
path: root/hugolib/resource_chain_test.go
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2022-02-09 14:04:57 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2022-02-09 15:41:32 +0100
commitd22f7795c721272b03f49ee41211adf054931e53 (patch)
tree5eb336efd447969f3d9d03560780f92e468e0f01 /hugolib/resource_chain_test.go
parent39f69ca7f078fe00ca80eef8f512f894a78e8f68 (diff)
tocss: Port integration tests to their package
Diffstat (limited to 'hugolib/resource_chain_test.go')
-rw-r--r--hugolib/resource_chain_test.go330
1 files changed, 0 insertions, 330 deletions
diff --git a/hugolib/resource_chain_test.go b/hugolib/resource_chain_test.go
index 8b17b01a4..5d57b2a16 100644
--- a/hugolib/resource_chain_test.go
+++ b/hugolib/resource_chain_test.go
@@ -29,8 +29,6 @@ import (
"github.com/gohugoio/hugo/config"
- "github.com/gohugoio/hugo/resources/resource_transformers/tocss/dartsass"
-
jww "github.com/spf13/jwalterweatherman"
"github.com/gohugoio/hugo/common/herrors"
@@ -46,334 +44,6 @@ import (
"github.com/gohugoio/hugo/resources/resource_transformers/tocss/scss"
)
-func TestSCSSWithIncludePaths(t *testing.T) {
- c := qt.New(t)
-
- for _, test := range []struct {
- name string
- supports func() bool
- }{
- {"libsass", func() bool { return scss.Supports() }},
- {"dartsass", func() bool { return dartsass.Supports() }},
- } {
- c.Run(test.name, func(c *qt.C) {
- if !test.supports() {
- c.Skip(fmt.Sprintf("Skip %s", test.name))
- }
-
- workDir, clean, err := htesting.CreateTempDir(hugofs.Os, fmt.Sprintf("hugo-scss-include-%s", test.name))
- c.Assert(err, qt.IsNil)
- defer clean()
-
- v := config.New()
- v.Set("workingDir", workDir)
- b := newTestSitesBuilder(c).WithLogger(loggers.NewErrorLogger())
- // Need to use OS fs for this.
- b.Fs = hugofs.NewDefault(v)
- b.WithWorkingDir(workDir)
- b.WithViper(v)
-
- fooDir := filepath.Join(workDir, "node_modules", "foo")
- scssDir := filepath.Join(workDir, "assets", "scss")
- c.Assert(os.MkdirAll(fooDir, 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(workDir, "content", "sect"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(workDir, "data"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(workDir, "i18n"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(workDir, "layouts", "shortcodes"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(workDir, "layouts", "_default"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(scssDir), 0777), qt.IsNil)
-
- b.WithSourceFile(filepath.Join(fooDir, "_moo.scss"), `
-$moolor: #fff;
-
-moo {
- color: $moolor;
-}
-`)
-
- b.WithSourceFile(filepath.Join(scssDir, "main.scss"), `
-@import "moo";
-
-`)
-
- b.WithTemplatesAdded("index.html", fmt.Sprintf(`
-{{ $cssOpts := (dict "includePaths" (slice "node_modules/foo") "transpiler" %q ) }}
-{{ $r := resources.Get "scss/main.scss" | toCSS $cssOpts | minify }}
-T1: {{ $r.Content }}
-`, test.name))
- b.Build(BuildCfg{})
-
- b.AssertFileContent(filepath.Join(workDir, "public/index.html"), `T1: moo{color:#fff}`)
- })
- }
-}
-
-func TestSCSSWithRegularCSSImport(t *testing.T) {
- c := qt.New(t)
-
- for _, test := range []struct {
- name string
- supports func() bool
- }{
- {"libsass", func() bool { return scss.Supports() }},
- {"dartsass", func() bool { return dartsass.Supports() }},
- } {
- c.Run(test.name, func(c *qt.C) {
- if !test.supports() {
- c.Skip(fmt.Sprintf("Skip %s", test.name))
- }
-
- workDir, clean, err := htesting.CreateTempDir(hugofs.Os, fmt.Sprintf("hugo-scss-include-regular-%s", test.name))
- c.Assert(err, qt.IsNil)
- defer clean()
-
- v := config.New()
- v.Set("workingDir", workDir)
- b := newTestSitesBuilder(c).WithLogger(loggers.NewErrorLogger())
- // Need to use OS fs for this.
- b.Fs = hugofs.NewDefault(v)
- b.WithWorkingDir(workDir)
- b.WithViper(v)
-
- scssDir := filepath.Join(workDir, "assets", "scss")
- c.Assert(os.MkdirAll(filepath.Join(workDir, "content", "sect"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(workDir, "data"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(workDir, "i18n"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(workDir, "layouts", "shortcodes"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(workDir, "layouts", "_default"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(scssDir), 0777), qt.IsNil)
- b.WithSourceFile(filepath.Join(scssDir, "regular.css"), ``)
- b.WithSourceFile(filepath.Join(scssDir, "another.css"), ``)
- b.WithSourceFile(filepath.Join(scssDir, "_moo.scss"), `
-$moolor: #fff;
-
-moo {
- color: $moolor;
-}
-`)
-
- b.WithSourceFile(filepath.Join(scssDir, "main.scss"), `
-@import "moo";
-@import "regular.css";
-@import "moo";
-@import "another.css";
-
-/* foo */
-`)
-
- b.WithTemplatesAdded("index.html", fmt.Sprintf(`
-{{ $r := resources.Get "scss/main.scss" | toCSS (dict "transpiler" %q) }}
-T1: {{ $r.Content | safeHTML }}
-`, test.name))
- b.Build(BuildCfg{})
-
- if test.name == "libsass" {
- // LibSass does not support regular CSS imports. There
- // is an open bug about it that probably will never be resolved.
- // Hugo works around this by preserving them in place:
- b.AssertFileContent(filepath.Join(workDir, "public/index.html"), `
- T1: moo {
- color: #fff; }
-
-@import "regular.css";
-moo {
- color: #fff; }
-
-@import "another.css";
-/* foo */
-
-`)
- } else {
- // Dart Sass does not follow regular CSS import, but they
- // get pulled to the top.
- b.AssertFileContent(filepath.Join(workDir, "public/index.html"), `T1: @import "regular.css";
-@import "another.css";
-moo {
- color: #fff;
-}
-
-moo {
- color: #fff;
-}
-
-/* foo */`)
- }
- })
- }
-}
-
-func TestSCSSWithThemeOverrides(t *testing.T) {
- c := qt.New(t)
-
- for _, test := range []struct {
- name string
- supports func() bool
- }{
- {"libsass", func() bool { return scss.Supports() }},
- {"dartsass", func() bool { return dartsass.Supports() }},
- } {
- c.Run(test.name, func(c *qt.C) {
- if !test.supports() {
- c.Skip(fmt.Sprintf("Skip %s", test.name))
- }
-
- workDir, clean1, err := htesting.CreateTempDir(hugofs.Os, fmt.Sprintf("hugo-scss-include-theme-overrides-%s", test.name))
- c.Assert(err, qt.IsNil)
- defer clean1()
-
- theme := "mytheme"
- themesDir := filepath.Join(workDir, "themes")
- themeDirs := filepath.Join(themesDir, theme)
- v := config.New()
- v.Set("workingDir", workDir)
- v.Set("theme", theme)
- b := newTestSitesBuilder(c).WithLogger(loggers.NewErrorLogger())
- // Need to use OS fs for this.
- b.Fs = hugofs.NewDefault(v)
- b.WithWorkingDir(workDir)
- b.WithViper(v)
-
- fooDir := filepath.Join(workDir, "node_modules", "foo")
- scssDir := filepath.Join(workDir, "assets", "scss")
- scssThemeDir := filepath.Join(themeDirs, "assets", "scss")
- c.Assert(os.MkdirAll(fooDir, 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(workDir, "content", "sect"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(workDir, "data"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(workDir, "i18n"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(workDir, "layouts", "shortcodes"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(workDir, "layouts", "_default"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(scssDir, "components"), 0777), qt.IsNil)
- c.Assert(os.MkdirAll(filepath.Join(scssThemeDir, "components"), 0777), qt.IsNil)
-
- b.WithSourceFile(filepath.Join(scssThemeDir, "components", "_imports.scss"), `
-@import "moo";
-@import "_boo";
-@import "_zoo";
-
-`)
-
- b.WithSourceFile(filepath.Join(scssThemeDir, "components", "_moo.scss"), `
-$moolor: #fff;
-
-moo {
- color: $moolor;
-}
-`)
-
- // Only in theme.
- b.WithSourceFile(filepath.Join(scssThemeDir, "components", "_zoo.scss"), `
-$zoolor: pink;
-
-zoo {
- color: $zoolor;
-}
-`)
-
- b.WithSourceFile(filepath.Join(scssThemeDir, "components", "_boo.scss"), `
-$boolor: orange;
-
-boo {
- color: $boolor;
-}
-`)
-
- b.WithSourceFile(filepath.Join(scssThemeDir, "main.scss"), `
-@import "components/imports";
-
-`)
-
- b.WithSourceFile(filepath.Join(scssDir, "components", "_moo.scss"), `
-$moolor: #ccc;
-
-moo {
- color: $moolor;
-}
-`)
-
- b.WithSourceFile(filepath.Join(scssDir, "components", "_boo.scss"), `
-$boolor: green;
-
-boo {
- color: $boolor;
-}
-`)
-
- b.WithTemplatesAdded("index.html", fmt.Sprintf(`
-{{ $cssOpts := (dict "includePaths" (slice "node_modules/foo" ) "transpiler" %q ) }}
-{{ $r := resources.Get "scss/main.scss" | toCSS $cssOpts | minify }}
-T1: {{ $r.Content }}
-`, test.name))
- b.Build(BuildCfg{})
-
- b.AssertFileContent(
- filepath.Join(workDir, "public/index.html"),
- `T1: moo{color:#ccc}boo{color:green}zoo{color:pink}`,
- )
- })
- }
-}
-
-// https://github.com/gohugoio/hugo/issues/6274
-func TestSCSSWithIncludePathsSass(t *testing.T) {
- c := qt.New(t)
-
- for _, test := range []struct {
- name string
- supports func() bool
- }{
- {"libsass", func() bool { return scss.Supports() }},
- {"dartsass", func() bool { return dartsass.Supports() }},
- } {
- c.Run(test.name, func(c *qt.C) {
- if !test.supports() {
- c.Skip(fmt.Sprintf("Skip %s", test.name))
- }
- })
- }
- if !scss.Supports() {
- t.Skip("Skip SCSS")
- }
- workDir, clean1, err := htesting.CreateTempDir(hugofs.Os, "hugo-scss-includepaths")
- c.Assert(err, qt.IsNil)
- defer clean1()
-
- v := config.New()
- v.Set("workingDir", workDir)
- v.Set("theme", "mytheme")
- b := newTestSitesBuilder(t).WithLogger(loggers.NewErrorLogger())
- // Need to use OS fs for this.
- b.Fs = hugofs.NewDefault(v)
- b.WithWorkingDir(workDir)
- b.WithViper(v)
-
- hulmaDir := filepath.Join(workDir, "node_modules", "hulma")
- scssDir := filepath.Join(workDir, "themes/mytheme/assets", "scss")
- c.Assert(os.MkdirAll(hulmaDir, 0777), qt.IsNil)
- c.Assert(os.MkdirAll(scssDir, 0777), qt.IsNil)
-
- b.WithSourceFile(filepath.Join(scssDir, "main.scss"), `
-@import "hulma/hulma";
-
-`)
-
- b.WithSourceFile(filepath.Join(hulmaDir, "hulma.sass"), `
-$hulma: #ccc;
-
-foo
- color: $hulma;
-
-`)
-
- b.WithTemplatesAdded("index.html", `
- {{ $scssOptions := (dict "targetPath" "css/styles.css" "enableSourceMap" false "includePaths" (slice "node_modules")) }}
-{{ $r := resources.Get "scss/main.scss" | toCSS $scssOptions | minify }}
-T1: {{ $r.Content }}
-`)
- b.Build(BuildCfg{})
-
- b.AssertFileContent(filepath.Join(workDir, "public/index.html"), `T1: foo{color:#ccc}`)
-}
-
func TestResourceChainBasic(t *testing.T) {
ts := httptest.NewServer(http.FileServer(http.Dir("testdata/")))
t.Cleanup(func() {