Rework the Destination filesystem to make --renderStaticToDisk work

See #9626
This commit is contained in:
Bjørn Erik Pedersen
2022-03-21 09:35:15 +01:00
parent b08193971a
commit d070bdf10f
75 changed files with 651 additions and 566 deletions

View File

@@ -59,13 +59,14 @@ path="github.com/gohugoio/hugoTestModule2"
return fmt.Sprintf(tomlConfig, workingDir, moduleOpts)
}
newTestBuilder := func(t testing.TB, moduleOpts string) (*sitesBuilder, func()) {
newTestBuilder := func(t testing.TB, moduleOpts string) *sitesBuilder {
b := newTestSitesBuilder(t)
tempDir, clean, err := htesting.CreateTempDir(hugofs.Os, "hugo-modules-variants")
b.Assert(err, qt.IsNil)
tempDir := t.TempDir()
workingDir := filepath.Join(tempDir, "myhugosite")
b.Assert(os.MkdirAll(workingDir, 0777), qt.IsNil)
b.Fs = hugofs.NewDefault(config.New())
cfg := config.NewWithTestDefaults()
cfg.Set("workingDir", workingDir)
b.Fs = hugofs.NewDefault(cfg)
b.WithWorkingDir(workingDir).WithConfigFile("toml", createConfig(workingDir, moduleOpts))
b.WithTemplates(
"index.html", `
@@ -92,22 +93,18 @@ github.com/gohugoio/hugoTestModule2 v0.0.0-20200131160637-9657d7697877 h1:WLM2bQ
github.com/gohugoio/hugoTestModule2 v0.0.0-20200131160637-9657d7697877/go.mod h1:CBFZS3khIAXKxReMwq0le8sEl/D8hcXmixlOHVv+Gd0=
`)
return b, clean
return b
}
t.Run("Target in subfolder", func(t *testing.T) {
b, clean := newTestBuilder(t, "ignoreImports=true")
defer clean()
b := newTestBuilder(t, "ignoreImports=true")
b.Build(BuildCfg{})
b.AssertFileContent("public/p1/index.html", `<p>Page|https://bep.is|Title: |Text: A link|END</p>`)
})
t.Run("Ignore config", func(t *testing.T) {
b, clean := newTestBuilder(t, "ignoreConfig=true")
defer clean()
b := newTestBuilder(t, "ignoreConfig=true")
b.Build(BuildCfg{})
b.AssertFileContent("public/index.html", `
@@ -117,9 +114,7 @@ JS imported in module: |
})
t.Run("Ignore imports", func(t *testing.T) {
b, clean := newTestBuilder(t, "ignoreImports=true")
defer clean()
b := newTestBuilder(t, "ignoreImports=true")
b.Build(BuildCfg{})
b.AssertFileContent("public/index.html", `
@@ -129,8 +124,7 @@ JS imported in module: |
})
t.Run("Create package.json", func(t *testing.T) {
b, clean := newTestBuilder(t, "")
defer clean()
b := newTestBuilder(t, "")
b.WithSourceFile("package.json", `{
"name": "mypack",
@@ -205,8 +199,7 @@ JS imported in module: |
})
t.Run("Create package.json, no default", func(t *testing.T) {
b, clean := newTestBuilder(t, "")
defer clean()
b := newTestBuilder(t, "")
const origPackageJSON = `{
"name": "mypack",
@@ -268,8 +261,7 @@ JS imported in module: |
})
t.Run("Create package.json, no default, no package.json", func(t *testing.T) {
b, clean := newTestBuilder(t, "")
defer clean()
b := newTestBuilder(t, "")
b.Build(BuildCfg{})
b.Assert(npm.Pack(b.H.BaseFs.SourceFs, b.H.BaseFs.Assets.Dirs), qt.IsNil)
@@ -333,12 +325,13 @@ func TestHugoModulesMatrix(t *testing.T) {
for _, m := range testmods[:2] {
c := qt.New(t)
v := config.New()
workingDir, clean, err := htesting.CreateTempDir(hugofs.Os, "hugo-modules-test")
c.Assert(err, qt.IsNil)
defer clean()
v := config.NewWithTestDefaults()
v.Set("workingDir", workingDir)
configTemplate := `
baseURL = "https://example.com"
title = "My Modular Site"
@@ -670,13 +663,14 @@ func TestModulesSymlinks(t *testing.T) {
}()
c := qt.New(t)
// We need to use the OS fs for this.
cfg := config.New()
fs := hugofs.NewFrom(hugofs.Os, cfg)
workDir, clean, err := htesting.CreateTempDir(hugofs.Os, "hugo-mod-sym")
workingDir, clean, err := htesting.CreateTempDir(hugofs.Os, "hugo-mod-sym")
c.Assert(err, qt.IsNil)
// We need to use the OS fs for this.
cfg := config.NewWithTestDefaults()
cfg.Set("workingDir", workingDir)
fs := hugofs.NewFrom(hugofs.Os, cfg)
defer clean()
const homeTemplate = `
@@ -694,9 +688,9 @@ Data: {{ .Site.Data }}
}
// Create project dirs and files.
createDirsAndFiles(workDir)
createDirsAndFiles(workingDir)
// Create one module inside the default themes folder.
themeDir := filepath.Join(workDir, "themes", "mymod")
themeDir := filepath.Join(workingDir, "themes", "mymod")
createDirsAndFiles(themeDir)
createSymlinks := func(baseDir, id string) {
@@ -711,7 +705,7 @@ Data: {{ .Site.Data }}
}
}
createSymlinks(workDir, "project")
createSymlinks(workingDir, "project")
createSymlinks(themeDir, "mod")
config := `
@@ -729,12 +723,12 @@ weight = 2
`
b := newTestSitesBuilder(t).WithNothingAdded().WithWorkingDir(workDir)
b := newTestSitesBuilder(t).WithNothingAdded().WithWorkingDir(workingDir)
b.WithLogger(loggers.NewErrorLogger())
b.Fs = fs
b.WithConfigFile("toml", config)
c.Assert(os.Chdir(workDir), qt.IsNil)
c.Assert(os.Chdir(workingDir), qt.IsNil)
b.Build(BuildCfg{})
@@ -846,7 +840,10 @@ workingDir = %q
b := newTestSitesBuilder(t).Running()
b.Fs = hugofs.NewDefault(config.New())
cfg := config.NewWithTestDefaults()
cfg.Set("workingDir", workingDir)
b.Fs = hugofs.NewDefault(cfg)
b.WithWorkingDir(workingDir).WithConfigFile("toml", tomlConfig)
b.WithTemplatesAdded("index.html", `
@@ -968,7 +965,9 @@ workingDir = %q
b := newTestSitesBuilder(c).Running()
b.Fs = hugofs.NewDefault(config.New())
cfg := config.NewWithTestDefaults()
cfg.Set("workingDir", workingDir)
b.Fs = hugofs.NewDefault(cfg)
os.MkdirAll(filepath.Join(workingDir, "content", "blog"), 0777)
@@ -1067,7 +1066,7 @@ func TestSiteWithGoModButNoModules(t *testing.T) {
workDir, clean, err := htesting.CreateTempDir(hugofs.Os, "hugo-no-mod")
c.Assert(err, qt.IsNil)
cfg := config.New()
cfg := config.NewWithTestDefaults()
cfg.Set("workingDir", workDir)
fs := hugofs.NewFrom(hugofs.Os, cfg)
@@ -1093,7 +1092,7 @@ func TestModuleAbsMount(t *testing.T) {
absContentDir, clean2, err := htesting.CreateTempDir(hugofs.Os, "hugo-content")
c.Assert(err, qt.IsNil)
cfg := config.New()
cfg := config.NewWithTestDefaults()
cfg.Set("workingDir", workDir)
fs := hugofs.NewFrom(hugofs.Os, cfg)