hugolib/filesystems: Fix theme config for Work Fs
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 18 Jul 2018 09:02:21 +0000 (11:02 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Wed, 18 Jul 2018 09:39:04 +0000 (11:39 +0200)
Which was the reason why `PostCSS´ from theme(s) was not picked up.

Fixes #4951

hugolib/filesystems/basefs.go
hugolib/filesystems/basefs_test.go

index 1a99da17b4abebc7a877aa3c0b809c5f7f65115d..731b5a195953c6a46519ff2ac8aa9cd98ff2976d 100644 (file)
@@ -407,6 +407,11 @@ func (b *sourceFilesystemsBuilder) createFs(
        s := &SourceFilesystem{
                SourceFs: b.p.Fs.Source,
        }
+
+       if themeFolder == "" {
+               themeFolder = filePathSeparator
+       }
+
        var dir string
        if dirKey != "" {
                dir = b.p.Cfg.GetString(dirKey)
index c4da0be8316c72392f1d34951e15c876e972c16e..62a5895505973a176c79380d259340d776aaaf5d 100644 (file)
@@ -50,8 +50,14 @@ func TestNewBaseFs(t *testing.T) {
                        fs.Source.Mkdir(base, 0755)
                        afero.WriteFile(fs.Source, filepath.Join(base, fmt.Sprintf("theme-file-%s-%s.txt", theme, dir)), []byte(fmt.Sprintf("content:%s:%s", theme, dir)), 0755)
                }
+               // Write some files to the root of the theme
+               base := filepath.Join(workingDir, "themes", theme)
+               afero.WriteFile(fs.Source, filepath.Join(base, fmt.Sprintf("theme-root-%s.txt", theme)), []byte(fmt.Sprintf("content:%s", theme)), 0755)
+               afero.WriteFile(fs.Source, filepath.Join(base, "file-root.txt"), []byte(fmt.Sprintf("content:%s", theme)), 0755)
        }
 
+       afero.WriteFile(fs.Source, filepath.Join(workingDir, "file-root.txt"), []byte("content-project"), 0755)
+
        afero.WriteFile(fs.Source, filepath.Join(workingDir, "themes", "btheme", "config.toml"), []byte(`
 theme = ["atheme"]
 `), 0755)
@@ -102,7 +108,7 @@ theme = ["atheme"]
        checkFileCount(bfs.Archetypes.Fs, "", assert, 8)
        checkFileCount(bfs.Assets.Fs, "", assert, 9)
        checkFileCount(bfs.Resources.Fs, "", assert, 10)
-       checkFileCount(bfs.Work.Fs, "", assert, 57)
+       checkFileCount(bfs.Work.Fs, "", assert, 69)
 
        assert.Equal([]string{filepath.FromSlash("/my/work/mydata"), filepath.FromSlash("/my/work/themes/btheme/data"), filepath.FromSlash("/my/work/themes/atheme/data")}, bfs.Data.Dirnames)
 
@@ -117,6 +123,10 @@ theme = ["atheme"]
        rel := bfs.RelContentDir(contentFilename)
        assert.Equal("file1.txt", rel)
 
+       // Check Work fs vs theme
+       checkFileContent(bfs.Work.Fs, "file-root.txt", assert, "content-project")
+       checkFileContent(bfs.Work.Fs, "theme-root-atheme.txt", assert, "content:atheme")
+
 }
 
 func createConfig() *viper.Viper {