diff options
author | Bjørn Erik Pedersen <[email protected]> | 2021-10-25 12:28:12 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2021-10-25 19:50:18 +0200 |
commit | 75c9b893d98961a504cff9ed3c89055d16e315d6 (patch) | |
tree | 0cc8508ff66ebaccb00cd2fc60313591e0be0a43 /create | |
parent | 64e1613fb390bd893900dc0596e5c3f3c8e1cd8c (diff) | |
download | hugo-75c9b893d98961a504cff9ed3c89055d16e315d6.tar.gz hugo-75c9b893d98961a504cff9ed3c89055d16e315d6.zip |
create: Validate the target path in hugo new
Fixes #9072
Diffstat (limited to 'create')
-rw-r--r-- | create/content.go | 4 | ||||
-rw-r--r-- | create/content_test.go | 17 |
2 files changed, 18 insertions, 3 deletions
diff --git a/create/content.go b/create/content.go index 914c16bec..eb0658604 100644 --- a/create/content.go +++ b/create/content.go @@ -91,6 +91,10 @@ func NewContent(h *hugolib.HugoSites, kind, targetPath string) error { return errors.Errorf("failed to resolve %q to a archetype template", targetPath) } + if !files.IsContentFile(b.targetPath) { + return errors.Errorf("target path %q is not a kown content format", b.targetPath) + } + return b.buildFile() } diff --git a/create/content_test.go b/create/content_test.go index d40634083..802e494c4 100644 --- a/create/content_test.go +++ b/create/content_test.go @@ -40,10 +40,11 @@ func TestNewContent(t *testing.T) { name string kind string path string - expected []string + expected interface{} }{ {"Post", "post", "post/sample-1.md", []string{`title = "Post Arch title"`, `test = "test1"`, "date = \"2015-01-12T19:20:04-07:00\""}}, {"Post org-mode", "post", "post/org-1.org", []string{`#+title: ORG-1`}}, + {"Post, unknown content filetype", "post", "post/sample-1.pdoc", false}, {"Empty date", "emptydate", "post/sample-ed.md", []string{`title = "Empty Date Arch title"`, `test = "test1"`}}, {"Archetype file not found", "stump", "stump/sample-2.md", []string{`title: "Sample 2"`}}, // no archetype file {"No archetype", "", "sample-3.md", []string{`title: "Sample 3"`}}, // no archetype @@ -80,14 +81,24 @@ func TestNewContent(t *testing.T) { h, err := hugolib.NewHugoSites(deps.DepsCfg{Cfg: cfg, Fs: fs}) c.Assert(err, qt.IsNil) - c.Assert(create.NewContent(h, cas.kind, cas.path), qt.IsNil) + err = create.NewContent(h, cas.kind, cas.path) + + if b, ok := cas.expected.(bool); ok && !b { + if !b { + c.Assert(err, qt.Not(qt.IsNil)) + } + return + } + + c.Assert(err, qt.IsNil) fname := filepath.FromSlash(cas.path) if !strings.HasPrefix(fname, "content") { fname = filepath.Join("content", fname) } content := readFileFromFs(c, fs.Source, fname) - for _, v := range cas.expected { + + for _, v := range cas.expected.([]string) { found := strings.Contains(content, v) if !found { c.Fatalf("[%d] %q missing from output:\n%q", i, v, content) |