modules: Add ignoreImports to module imports config

Fixes #7646
This commit is contained in:
Bjørn Erik Pedersen 2020-09-09 19:08:03 +02:00
parent 9a1e6d15a3
commit 20af9a0781
4 changed files with 70 additions and 25 deletions

View file

@ -39,11 +39,11 @@ import (
)
// https://github.com/gohugoio/hugo/issues/6730
func TestHugoModulesTargetInSubFolder(t *testing.T) {
func TestHugoModulesVariants(t *testing.T) {
if !isCI() {
// TODO(bep) investigate why this fails when running in LiteIDE (it works from the shell).
t.Skip("skip (relative) long running modules test when running locally")
}
config := `
baseURL="https://example.org"
workingDir = %q
@ -51,19 +51,26 @@ workingDir = %q
[module]
[[module.imports]]
path="github.com/gohugoio/hugoTestModule2"
[[module.imports.mounts]]
source = "templates/hooks"
target = "layouts/_default/_markup"
%s
`
createConfig := func(workingDir, moduleOpts string) string {
return fmt.Sprintf(config, workingDir, moduleOpts)
}
newTestBuilder := func(t testing.TB, moduleOpts string) (*sitesBuilder, func()) {
b := newTestSitesBuilder(t)
workingDir, clean, err := htesting.CreateTempDir(hugofs.Os, "hugo-modules-target-in-subfolder-test")
workingDir, clean, err := htesting.CreateTempDir(hugofs.Os, "hugo-modules-variants")
b.Assert(err, qt.IsNil)
defer clean()
b.Fs = hugofs.NewDefault(viper.New())
b.WithWorkingDir(workingDir).WithConfigFile("toml", fmt.Sprintf(config, workingDir))
b.WithTemplates("_default/single.html", `{{ .Content }}`)
b.WithWorkingDir(workingDir).WithConfigFile("toml", createConfig(workingDir, moduleOpts))
b.WithTemplates(
"index.html", `
Param from module: {{ site.Params.Hugo }}|
{{ $js := resources.Get "jslibs/alpinejs/alpine.js" }}
JS imported in module: {{ with $js }}{{ .RelPermalink }}{{ end }}|
`,
"_default/single.html", `{{ .Content }}`)
b.WithContent("p1.md", `---
title: "Page"
---
@ -82,14 +89,50 @@ github.com/gohugoio/hugoTestModule2 v0.0.0-20200131160637-9657d7697877 h1:WLM2bQ
github.com/gohugoio/hugoTestModule2 v0.0.0-20200131160637-9657d7697877/go.mod h1:CBFZS3khIAXKxReMwq0le8sEl/D8hcXmixlOHVv+Gd0=
`)
return b, clean
}
t.Run("Target in subfolder", func(t *testing.T) {
b, clean := newTestBuilder(t, "ignoreImports=true")
defer clean()
b.Build(BuildCfg{})
b.AssertFileContent("public/p1/index.html", `<p>Page|https://bep.is|Title: |Text: A link|END</p>`)
})
t.Run("Ignore config", func(t *testing.T) {
b, clean := newTestBuilder(t, "ignoreConfig=true")
defer clean()
b.Build(BuildCfg{})
b.AssertFileContent("public/index.html", `
Param from module: |
JS imported in module: |
`)
})
t.Run("Ignore imports", func(t *testing.T) {
b, clean := newTestBuilder(t, "ignoreImports=true")
defer clean()
b.Build(BuildCfg{})
b.AssertFileContent("public/index.html", `
Param from module: Rocks|
JS imported in module: |
`)
})
}
// TODO(bep) this fails when testmodBuilder is also building ...
func TestHugoModules(t *testing.T) {
func TestHugoModulesMatrix(t *testing.T) {
if !isCI() {
t.Skip("skip (relative) long running modules test when running locally")
}

View file

@ -219,7 +219,7 @@ func (c *Client) Vendor() error {
// This is the project.
continue
}
// We respect the --ignoreVendor flag even for the vendor command.
if !t.IsGoMod() && !t.Vendor() {
// We currently do not vendor components living in the
// theme directory, see https://github.com/gohugoio/hugo/issues/5993

View file

@ -339,7 +339,7 @@ func (c *collector) addAndRecurse(owner *moduleAdapter, disabled bool) error {
if err != nil {
return err
}
if tc == nil {
if tc == nil || moduleImport.IgnoreImports {
continue
}
if err := c.addAndRecurse(tc, disabled); err != nil {

View file

@ -302,7 +302,9 @@ func (v HugoVersion) IsValid() bool {
type Import struct {
Path string // Module path
IgnoreConfig bool // Ignore any config.toml found.
IgnoreConfig bool // Ignore any config in config.toml (will still folow imports).
IgnoreImports bool // Do not follow any configured imports.
NoVendor bool // Never vendor this import (only allowed in main project).
Disable bool // Turn off this module.
Mounts []Mount
}