From e66e2e9ce5f2036174ecb114b96761ad023d95a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Mon, 18 Apr 2022 10:28:54 +0200 Subject: Revert "Revert "Fix PostProcess regression for hugo server"" This reverts commit 6c35a1a9eacf2aa86a11ecd31c4022ce330b2f16. Updates #9794 --- commands/commandeer.go | 28 ++++++++++------------------ commands/commands_test.go | 4 ++++ commands/server_test.go | 46 ++++++++++++++++++++++++++++++++++++---------- 3 files changed, 50 insertions(+), 28 deletions(-) (limited to 'commands') diff --git a/commands/commandeer.go b/commands/commandeer.go index 1162a4b70..c42de5d11 100644 --- a/commands/commandeer.go +++ b/commands/commandeer.go @@ -395,23 +395,23 @@ func (c *commandeer) loadConfig() error { } c.fsCreate.Do(func() { - fs := hugofs.NewFrom(sourceFs, config) + // Assume both source and destination are using same filesystem. + fs := hugofs.NewFromSourceAndDestination(sourceFs, sourceFs, config) if c.publishDirFs != nil { // Need to reuse the destination on server rebuilds. fs.PublishDir = c.publishDirFs fs.PublishDirServer = c.publishDirServerFs } else { - publishDir := config.GetString("publishDir") - publishDirStatic := config.GetString("publishDirStatic") - workingDir := config.GetString("workingDir") - absPublishDir := paths.AbsPathify(workingDir, publishDir) - absPublishDirStatic := paths.AbsPathify(workingDir, publishDirStatic) - if c.renderStaticToDisk { - // Writes the dynamic output oton memory, + publishDirStatic := config.GetString("publishDirStatic") + workingDir := config.GetString("workingDir") + absPublishDirStatic := paths.AbsPathify(workingDir, publishDirStatic) + + fs = hugofs.NewFromSourceAndDestination(sourceFs, afero.NewMemMapFs(), config) + // Writes the dynamic output to memory, // while serve others directly from /public on disk. - dynamicFs := afero.NewMemMapFs() + dynamicFs := fs.PublishDir staticFs := afero.NewBasePathFs(afero.NewOsFs(), absPublishDirStatic) // Serve from both the static and dynamic fs, @@ -427,18 +427,10 @@ func (c *commandeer) loadConfig() error { }, }, ) - fs.PublishDir = dynamicFs fs.PublishDirStatic = staticFs } else if createMemFs { // Hugo writes the output to memory instead of the disk. - fs.PublishDir = new(afero.MemMapFs) - fs.PublishDirServer = fs.PublishDir - fs.PublishDirStatic = fs.PublishDir - } else { - // Write everything to disk. - fs.PublishDir = afero.NewBasePathFs(afero.NewOsFs(), absPublishDir) - fs.PublishDirServer = fs.PublishDir - fs.PublishDirStatic = fs.PublishDir + fs = hugofs.NewFromSourceAndDestination(sourceFs, afero.NewMemMapFs(), config) } } diff --git a/commands/commands_test.go b/commands/commands_test.go index e3ec7bd99..97d81ec6e 100644 --- a/commands/commands_test.go +++ b/commands/commands_test.go @@ -375,6 +375,10 @@ Single: {{ .Title }} List: {{ .Title }} Environment: {{ hugo.Environment }} +For issue 9788: +{{ $foo :="abc" | resources.FromString "foo.css" | minify | resources.PostProcess }} +PostProcess: {{ $foo.RelPermalink }} + `) return dir diff --git a/commands/server_test.go b/commands/server_test.go index ea50afd94..c2aa0dfd5 100644 --- a/commands/server_test.go +++ b/commands/server_test.go @@ -31,16 +31,6 @@ import ( qt "github.com/frankban/quicktest" ) -func TestServer(t *testing.T) { - c := qt.New(t) - - r := runServerTest(c, true, "") - - c.Assert(r.err, qt.IsNil) - c.Assert(r.homeContent, qt.Contains, "List: Hugo Commands") - c.Assert(r.homeContent, qt.Contains, "Environment: development") -} - // Issue 9518 func TestServerPanicOnConfigError(t *testing.T) { c := qt.New(t) @@ -101,6 +91,42 @@ baseURL="https://example.org" } +func TestServerBugs(t *testing.T) { + c := qt.New(t) + + for _, test := range []struct { + name string + flag string + assert func(c *qt.C, r serverTestResult) + }{ + // Issue 9788 + {"PostProcess, memory", "", func(c *qt.C, r serverTestResult) { + c.Assert(r.err, qt.IsNil) + c.Assert(r.homeContent, qt.Contains, "PostProcess: /foo.min.css") + }}, + {"PostProcess, disk", "--renderToDisk", func(c *qt.C, r serverTestResult) { + c.Assert(r.err, qt.IsNil) + c.Assert(r.homeContent, qt.Contains, "PostProcess: /foo.min.css") + }}, + } { + c.Run(test.name, func(c *qt.C) { + config := ` +baseURL="https://example.org" +` + + var args []string + if test.flag != "" { + args = strings.Split(test.flag, "=") + } + r := runServerTest(c, true, config, args...) + test.assert(c, r) + + }) + + } + +} + type serverTestResult struct { err error homeContent string -- cgit v1.2.3