shithub: hugo

Download patch

ref: 59d87044a4146f578b92b3d67b46660212940912
parent: 3244cb3b31f8f8c39d9dfa82bc01fb2d6db59257
author: Bjørn Erik Pedersen <[email protected]>
date: Fri Feb 1 03:40:53 EST 2019

commands: Add test for --configDir

See #5662

--- a/commands/commands_test.go
+++ b/commands/commands_test.go
@@ -30,7 +30,7 @@
 
 	assert := require.New(t)
 
-	dir, err := createSimpleTestSite(t)
+	dir, err := createSimpleTestSite(t, testSiteConfig{})
 	assert.NoError(err)
 
 	defer func() {
@@ -140,7 +140,7 @@
 
 	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 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"
 
-`)
+`
 
-	writeFile(t, filepath.Join(d, "content", "p1.md"), `
+	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, contentDir, "p1.md"), `
 ---
 title: "P1"
 weight: 1
--- /dev/null
+++ b/commands/hugo_test.go
@@ -1,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)
+
+}
--- a/commands/server_test.go
+++ b/commands/server_test.go
@@ -34,7 +34,7 @@
 		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 ...