commands: Add test for --configDir
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 1 Feb 2019 07:40:53 +0000 (08:40 +0100)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 1 Feb 2019 07:40:53 +0000 (08:40 +0100)
See #5662

commands/commands_test.go
commands/hugo_test.go [new file with mode: 0644]
commands/server_test.go

index 57c9d6005616d418685adc37549491278eb350ea..2e8b99dc41356f3ba1ad27e70da4b42d847cb5ae 100644 (file)
@@ -30,7 +30,7 @@ func TestExecute(t *testing.T) {
 
        assert := require.New(t)
 
-       dir, err := createSimpleTestSite(t)
+       dir, err := createSimpleTestSite(t, testSiteConfig{})
        assert.NoError(err)
 
        defer func() {
@@ -140,7 +140,7 @@ func TestCommandsExecute(t *testing.T) {
 
        assert := require.New(t)
 
-       dir, err := createSimpleTestSite(t)
+       dir, err := createSimpleTestSite(t, testSiteConfig{})
        assert.NoError(err)
 
        dirOut, err := ioutil.TempDir("", "hugo-cli-out")
@@ -204,21 +204,37 @@ func TestCommandsExecute(t *testing.T) {
 
 }
 
-func createSimpleTestSite(t *testing.T) (string, error) {
+type testSiteConfig struct {
+       configTOML string
+       contentDir string
+}
+
+func createSimpleTestSite(t *testing.T, cfg testSiteConfig) (string, error) {
        d, e := ioutil.TempDir("", "hugo-cli")
        if e != nil {
                return "", e
        }
 
-       // Just the basic. These are for CLI tests, not site testing.
-       writeFile(t, filepath.Join(d, "config.toml"), `
+       cfgStr := `
 
 baseURL = "https://example.org"
 title = "Hugo Commands"
 
-`)
+`
+
+       contentDir := "content"
+
+       if cfg.configTOML != "" {
+               cfgStr = cfg.configTOML
+       }
+       if cfg.contentDir != "" {
+               contentDir = cfg.contentDir
+       }
+
+       // Just the basic. These are for CLI tests, not site testing.
+       writeFile(t, filepath.Join(d, "config.toml"), cfgStr)
 
-       writeFile(t, filepath.Join(d, "content", "p1.md"), `
+       writeFile(t, filepath.Join(d, contentDir, "p1.md"), `
 ---
 title: "P1"
 weight: 1
diff --git a/commands/hugo_test.go b/commands/hugo_test.go
new file mode 100644 (file)
index 0000000..db6961b
--- /dev/null
@@ -0,0 +1,52 @@
+// 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 (
+       "os"
+       "testing"
+
+       "github.com/stretchr/testify/require"
+)
+
+// Issue #5662
+func TestHugoWithContentDirOverride(t *testing.T) {
+       assert := require.New(t)
+
+       hugoCmd := newCommandsBuilder().addAll().build()
+       cmd := hugoCmd.getCommand()
+
+       contentDir := "contentOverride"
+
+       cfgStr := `
+
+baseURL = "https://example.org"
+title = "Hugo Commands"
+
+contentDir = "thisdoesnotexist"
+
+`
+       dir, err := createSimpleTestSite(t, testSiteConfig{configTOML: cfgStr, contentDir: contentDir})
+       assert.NoError(err)
+
+       defer func() {
+               os.RemoveAll(dir)
+       }()
+
+       cmd.SetArgs([]string{"-s=" + dir, "-c=" + contentDir})
+
+       _, err = cmd.ExecuteC()
+       assert.NoError(err)
+
+}
index 53a240145a66f7c1b7346c199cd29f6e55f30bb3..acee19cb8a751b32d34520f4e06dcfc6e2c84301 100644 (file)
@@ -34,7 +34,7 @@ func TestServer(t *testing.T) {
                t.Skip("Skip server test on appveyor")
        }
        assert := require.New(t)
-       dir, err := createSimpleTestSite(t)
+       dir, err := createSimpleTestSite(t, testSiteConfig{})
        assert.NoError(err)
 
        // Let us hope that this port is available on all systems ...