hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit 43298f028ccdf38e949b573d03d328bf96b998a3
parent 1b5c7e327c7f98cf8e9fff920f3328198f67a598
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Tue,  3 Sep 2019 12:58:02 +0200

Make the "is this a Hugo Module" logic more lenient

Now we only try to load modules via Go if there is one or more modules imported in project config.

Fixes #6299

Diffstat:
Ahugolib/config.toml | 1+
Mhugolib/hugo_modules_test.go | 25+++++++++++++++++++++++++
Mmodules/client.go | 4++--
Mmodules/collect.go | 7+------
Mmodules/config.go | 11+++++++++++
Mmodules/module.go | 22----------------------
6 files changed, 40 insertions(+), 30 deletions(-)
diff --git a/hugolib/config.toml b/hugolib/config.toml
@@ -0,0 +1 @@
+workingdir = "/private/var/folders/n6/s_85mm8d31j6yctssnmn_g1r0000gn/T/hugo-no-mod217094359"
diff --git a/hugolib/hugo_modules_test.go b/hugolib/hugo_modules_test.go
@@ -541,3 +541,28 @@ title: "My Page"
 
 	b.AssertFileContent("public/mypage/index.html", "Permalink: https://example.org/mypage/")
 }
+
+// https://github.com/gohugoio/hugo/issues/6299
+func TestSiteWithGoModButNoModules(t *testing.T) {
+	t.Parallel()
+
+	c := qt.New(t)
+	// We need to use the OS fs for this.
+	workDir, clean, err := htesting.CreateTempDir(hugofs.Os, "hugo-no-mod")
+	c.Assert(err, qt.IsNil)
+
+	cfg := viper.New()
+	cfg.Set("workingDir", workDir)
+	fs := hugofs.NewFrom(hugofs.Os, cfg)
+
+	defer clean()
+
+	b := newTestSitesBuilder(t)
+	b.Fs = fs
+
+	b.WithWorkingDir(workDir).WithViper(cfg)
+
+	b.WithSourceFile("go.mod", "")
+	b.Build(BuildCfg{})
+
+}
diff --git a/modules/client.go b/modules/client.go
@@ -279,12 +279,12 @@ func (c *Client) Init(path string) error {
 	return nil
 }
 
-func (c *Client) isProbablyModule(path string) bool {
+func isProbablyModule(path string) bool {
 	return module.CheckPath(path) == nil
 }
 
 func (c *Client) listGoMods() (goModules, error) {
-	if c.GoModulesFilename == "" {
+	if c.GoModulesFilename == "" || !c.moduleConfig.hasModuleImport() {
 		return nil, nil
 	}
 
diff --git a/modules/collect.go b/modules/collect.go
@@ -250,8 +250,7 @@ func (c *collector) add(owner *moduleAdapter, moduleImport Import, disabled bool
 		}
 
 		if moduleDir == "" {
-
-			if c.GoModulesFilename != "" && c.isProbablyModule(modulePath) {
+			if c.GoModulesFilename != "" && isProbablyModule(modulePath) {
 				// Try to "go get" it and reload the module configuration.
 				if err := c.Get(modulePath); err != nil {
 					return nil, err
@@ -301,10 +300,6 @@ func (c *collector) add(owner *moduleAdapter, moduleImport Import, disabled bool
 		ma.path = modulePath
 	}
 
-	if err := ma.validateAndApplyDefaults(c.fs); err != nil {
-		return nil, err
-	}
-
 	if !moduleImport.IgnoreConfig {
 		if err := c.applyThemeConfig(ma); err != nil {
 			return nil, err
diff --git a/modules/config.go b/modules/config.go
@@ -235,6 +235,17 @@ type Config struct {
 	Private string
 }
 
+// hasModuleImport reports whether the project config have one or more
+// modules imports, e.g. github.com/bep/myshortcodes.
+func (c Config) hasModuleImport() bool {
+	for _, imp := range c.Imports {
+		if isProbablyModule(imp.Path) {
+			return true
+		}
+	}
+	return false
+}
+
 // HugoVersion holds Hugo binary version requirements for a module.
 type HugoVersion struct {
 	// The minimum Hugo version that this module works with.
diff --git a/modules/module.go b/modules/module.go
@@ -18,7 +18,6 @@ package modules
 
 import (
 	"github.com/gohugoio/hugo/config"
-	"github.com/spf13/afero"
 )
 
 var _ Module = (*moduleAdapter)(nil)
@@ -173,24 +172,3 @@ func (m *moduleAdapter) Watch() bool {
 
 	return false
 }
-
-func (m *moduleAdapter) validateAndApplyDefaults(fs afero.Fs) error {
-
-	/*if len(m.modImport.Mounts) == 0 {
-		// Create default mount points for every component folder that
-		// exists in the module.
-		for _, componentFolder := range files.ComponentFolders {
-			sourceDir := filepath.Join(dir, componentFolder)
-			_, err := fs.Stat(sourceDir)
-			if err == nil {
-				m.modImport.Mounts = append(m.modImport.Mounts, Mount{
-					Source: componentFolder,
-					Target: componentFolder,
-				})
-			}
-		}
-	}*/
-
-	return nil
-
-}