diff options
author | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2023-01-04 18:24:36 +0100 |
---|---|---|
committer | Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com> | 2023-05-16 18:01:29 +0200 |
commit | 241b21b0fd34d91fccb2ce69874110dceae6f926 (patch) | |
tree | d4e0118eac7e9c42f065815447a70805f8d6ad3e /commands/hugo_test.go | |
parent | 6aededf6b42011c3039f5f66487a89a8dd65e0e7 (diff) | |
download | hugo-241b21b0fd34d91fccb2ce69874110dceae6f926.tar.gz hugo-241b21b0fd34d91fccb2ce69874110dceae6f926.zip |
Create a struct with all of Hugo's config options
Primary motivation is documentation, but it will also hopefully simplify the code.
Also,
* Lower case the default output format names; this is in line with the custom ones (map keys) and how
it's treated all the places. This avoids doing `stringds.EqualFold` everywhere.
Closes #10896
Closes #10620
Diffstat (limited to 'commands/hugo_test.go')
-rw-r--r-- | commands/hugo_test.go | 206 |
1 files changed, 0 insertions, 206 deletions
diff --git a/commands/hugo_test.go b/commands/hugo_test.go deleted file mode 100644 index 1e1326642..000000000 --- a/commands/hugo_test.go +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright 2019 The Hugo Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package commands - -import ( - "bytes" - "fmt" - "math/rand" - "path/filepath" - "strings" - "testing" - - "github.com/bep/clock" - qt "github.com/frankban/quicktest" - "github.com/gohugoio/hugo/common/htime" - "github.com/gohugoio/hugo/hugofs" - "github.com/spf13/afero" - "golang.org/x/tools/txtar" -) - -// Issue #5662 -func TestHugoWithContentDirOverride(t *testing.T) { - t.Parallel() - c := qt.New(t) - - files := ` --- config.toml -- -baseURL = "https://example.org" -title = "Hugo Commands" --- mycontent/p1.md -- ---- -title: "P1" ---- --- layouts/_default/single.html -- -Page: {{ .Title }}| - -` - s := newTestHugoCmdBuilder(c, files, []string{"-c", "mycontent"}).Build() - s.AssertFileContent("public/p1/index.html", `Page: P1|`) - -} - -// Issue #9794 -func TestHugoStaticFilesMultipleStaticAndManyFolders(t *testing.T) { - t.Parallel() - c := qt.New(t) - - files := ` --- config.toml -- -baseURL = "https://example.org" -theme = "mytheme" --- layouts/index.html -- -Home. - -` - const ( - numDirs = 33 - numFilesMax = 12 - ) - - r := rand.New(rand.NewSource(32)) - - for i := 0; i < numDirs; i++ { - for j := 0; j < r.Intn(numFilesMax); j++ { - if j%3 == 0 { - files += fmt.Sprintf("-- themes/mytheme/static/d%d/f%d.txt --\nHellot%d-%d\n", i, j, i, j) - files += fmt.Sprintf("-- themes/mytheme/static/d%d/ft%d.txt --\nHellot%d-%d\n", i, j, i, j) - } - files += fmt.Sprintf("-- static/d%d/f%d.txt --\nHello%d-%d\n", i, j, i, j) - } - } - - r = rand.New(rand.NewSource(32)) - - s := newTestHugoCmdBuilder(c, files, []string{"-c", "mycontent"}).Build() - for i := 0; i < numDirs; i++ { - for j := 0; j < r.Intn(numFilesMax); j++ { - if j%3 == 0 { - if j%3 == 0 { - s.AssertFileContent(fmt.Sprintf("public/d%d/ft%d.txt", i, j), fmt.Sprintf("Hellot%d-%d", i, j)) - } - s.AssertFileContent(fmt.Sprintf("public/d%d/f%d.txt", i, j), fmt.Sprintf("Hello%d-%d", i, j)) - } - } - } - -} - -// Issue #8787 -func TestHugoListCommandsWithClockFlag(t *testing.T) { - t.Cleanup(func() { htime.Clock = clock.System() }) - - c := qt.New(t) - - files := ` --- config.toml -- -baseURL = "https://example.org" -title = "Hugo Commands" -timeZone = "UTC" --- content/past.md -- ---- -title: "Past" -date: 2000-11-06 ---- --- content/future.md -- ---- -title: "Future" -date: 2200-11-06 ---- --- layouts/_default/single.html -- -Page: {{ .Title }}| - -` - s := newTestHugoCmdBuilder(c, files, []string{"list", "future"}) - s.captureOut = true - s.Build() - p := filepath.Join("content", "future.md") - s.AssertStdout(p + ",2200-11-06T00:00:00Z") - - s = newTestHugoCmdBuilder(c, files, []string{"list", "future", "--clock", "2300-11-06"}).Build() - s.AssertStdout("") -} - -type testHugoCmdBuilder struct { - *qt.C - - fs afero.Fs - dir string - files string - args []string - - captureOut bool - out string -} - -func newTestHugoCmdBuilder(c *qt.C, files string, args []string) *testHugoCmdBuilder { - s := &testHugoCmdBuilder{C: c, files: files, args: args} - s.dir = s.TempDir() - s.fs = afero.NewBasePathFs(hugofs.Os, s.dir) - - return s -} - -func (s *testHugoCmdBuilder) Build() *testHugoCmdBuilder { - data := txtar.Parse([]byte(s.files)) - - for _, f := range data.Files { - filename := filepath.Clean(f.Name) - data := bytes.TrimSuffix(f.Data, []byte("\n")) - s.Assert(s.fs.MkdirAll(filepath.Dir(filename), 0777), qt.IsNil) - s.Assert(afero.WriteFile(s.fs, filename, data, 0666), qt.IsNil) - } - - hugoCmd := newCommandsBuilder().addAll().build() - cmd := hugoCmd.getCommand() - args := append(s.args, "-s="+s.dir, "--quiet") - cmd.SetArgs(args) - - if s.captureOut { - out, err := captureStdout(func() error { - _, err := cmd.ExecuteC() - return err - }) - s.Assert(err, qt.IsNil) - s.out = out - } else { - _, err := cmd.ExecuteC() - s.Assert(err, qt.IsNil) - } - - return s -} - -func (s *testHugoCmdBuilder) AssertFileContent(filename string, matches ...string) { - s.Helper() - data, err := afero.ReadFile(s.fs, filename) - s.Assert(err, qt.IsNil) - content := strings.TrimSpace(string(data)) - for _, m := range matches { - lines := strings.Split(m, "\n") - for _, match := range lines { - match = strings.TrimSpace(match) - if match == "" || strings.HasPrefix(match, "#") { - continue - } - s.Assert(content, qt.Contains, match, qt.Commentf(m)) - } - } -} - -func (s *testHugoCmdBuilder) AssertStdout(match string) { - s.Helper() - content := strings.TrimSpace(s.out) - s.Assert(content, qt.Contains, strings.TrimSpace(match)) -} |