From 1c8bdd682c888b5f379f94c332ffae4efeb854b0 Mon Sep 17 00:00:00 2001 From: Denis O Date: Thu, 14 Sep 2023 13:14:58 -0700 Subject: [PATCH 1/3] Add setting of relative path for modules / absolute path for app --- configstack/module.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/configstack/module.go b/configstack/module.go index 9aeaccb30..76437c8cd 100644 --- a/configstack/module.go +++ b/configstack/module.go @@ -331,7 +331,13 @@ func resolveTerraformModule(terragruntConfigPath string, moduleMap map[string]*T } if opts.IncludeModulePrefix { - opts.OutputPrefix = fmt.Sprintf("[%v] ", modulePath) + prefix := modulePath + if terragruntOptions.WorkingDir != modulePath { + if relativePrefix, err := filepath.Rel(terragruntOptions.WorkingDir, modulePath); err == nil { + prefix = relativePrefix + } + } + opts.OutputPrefix = fmt.Sprintf("[%v] ", prefix) } return &TerraformModule{Path: modulePath, Config: *terragruntConfig, TerragruntOptions: opts}, nil From 2630fcd9e80bde8b70744eeb616e73e62db02645 Mon Sep 17 00:00:00 2001 From: Denis O Date: Fri, 15 Sep 2023 13:24:37 -0700 Subject: [PATCH 2/3] Tests update --- configstack/module.go | 10 +++++++- test/integration_include_test.go | 43 +++++++++++++++++++++++++++++--- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/configstack/module.go b/configstack/module.go index 76437c8cd..31b094bbe 100644 --- a/configstack/module.go +++ b/configstack/module.go @@ -332,8 +332,16 @@ func resolveTerraformModule(terragruntConfigPath string, moduleMap map[string]*T if opts.IncludeModulePrefix { prefix := modulePath + workingDirPath := terragruntOptions.WorkingDir + + // try to convert working dir to absolute path + if path, err := filepath.Abs(workingDirPath); err == nil { + workingDirPath = path + } + if terragruntOptions.WorkingDir != modulePath { - if relativePrefix, err := filepath.Rel(terragruntOptions.WorkingDir, modulePath); err == nil { + // try to generate relative path to module to be used as prefix + if relativePrefix, err := filepath.Rel(workingDirPath, modulePath); err == nil { prefix = relativePrefix } } diff --git a/test/integration_include_test.go b/test/integration_include_test.go index 60a016c96..6787c8168 100644 --- a/test/integration_include_test.go +++ b/test/integration_include_test.go @@ -141,17 +141,54 @@ func TestTerragruntRunAllModulesWithPrefix(t *testing.T) { stdoutLines := strings.Split(planOutput, "\n") for _, line := range stdoutLines { if strings.Contains(line, "alpha") { - assert.Contains(t, line, includeRunAllFixturePath+"a") + assert.Contains(t, line, "[a]") } if strings.Contains(line, "beta") { - assert.Contains(t, line, includeRunAllFixturePath+"b") + assert.Contains(t, line, "[b]") } if strings.Contains(line, "charlie") { - assert.Contains(t, line, includeRunAllFixturePath+"c") + assert.Contains(t, line, "[c]") } } } +func TestTerragruntRunAllModulesWithPrefixAndRelativePath(t *testing.T) { + t.Parallel() + + stdout := bytes.Buffer{} + stderr := bytes.Buffer{} + err := runTerragruntCommand( + t, + fmt.Sprintf( + "terragrunt run-all plan --terragrunt-non-interactive --terragrunt-include-module-prefix --terragrunt-working-dir %s", + fmt.Sprintf("%s/%s", TEST_FIXTURE_INCLUDE_PARENT, "app"), + ), + &stdout, + &stderr, + ) + require.NoError(t, err) + logBufferContentsLineByLine(t, stdout, "stdout") + logBufferContentsLineByLine(t, stderr, "stderr") + // + //planOutput := stdout.String() + //assert.Contains(t, planOutput, "alpha") + //assert.Contains(t, planOutput, "beta") + //assert.Contains(t, planOutput, "charlie") + // + //stdoutLines := strings.Split(planOutput, "\n") + //for _, line := range stdoutLines { + // if strings.Contains(line, "alpha") { + // assert.Contains(t, line, "[a]") + // } + // if strings.Contains(line, "beta") { + // assert.Contains(t, line, "[b]") + // } + // if strings.Contains(line, "charlie") { + // assert.Contains(t, line, "[c]") + // } + //} +} + func TestTerragruntWorksWithIncludeDeepMerge(t *testing.T) { t.Parallel() From 675977529bc9e5653b967b2ac0b5829a43dc8fbd Mon Sep 17 00:00:00 2001 From: Denis O Date: Sat, 16 Sep 2023 01:31:06 -0700 Subject: [PATCH 3/3] Add relative path to module output --- configstack/module.go | 2 +- test/integration_include_test.go | 26 ++++++-------------------- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/configstack/module.go b/configstack/module.go index 31b094bbe..d1eba9b84 100644 --- a/configstack/module.go +++ b/configstack/module.go @@ -339,7 +339,7 @@ func resolveTerraformModule(terragruntConfigPath string, moduleMap map[string]*T workingDirPath = path } - if terragruntOptions.WorkingDir != modulePath { + if workingDirPath != modulePath { // try to generate relative path to module to be used as prefix if relativePrefix, err := filepath.Rel(workingDirPath, modulePath); err == nil { prefix = relativePrefix diff --git a/test/integration_include_test.go b/test/integration_include_test.go index 6787c8168..17029df04 100644 --- a/test/integration_include_test.go +++ b/test/integration_include_test.go @@ -160,8 +160,8 @@ func TestTerragruntRunAllModulesWithPrefixAndRelativePath(t *testing.T) { err := runTerragruntCommand( t, fmt.Sprintf( - "terragrunt run-all plan --terragrunt-non-interactive --terragrunt-include-module-prefix --terragrunt-working-dir %s", - fmt.Sprintf("%s/%s", TEST_FIXTURE_INCLUDE_PARENT, "app"), + "terragrunt run-all plan --terragrunt-non-interactive --terragrunt-include-module-prefix --terragrunt-working-dir %s --terragrunt-include-external-dependencies", + filepath.Join(TEST_FIXTURE_INCLUDE_PARENT, "app"), ), &stdout, &stderr, @@ -169,24 +169,10 @@ func TestTerragruntRunAllModulesWithPrefixAndRelativePath(t *testing.T) { require.NoError(t, err) logBufferContentsLineByLine(t, stdout, "stdout") logBufferContentsLineByLine(t, stderr, "stderr") - // - //planOutput := stdout.String() - //assert.Contains(t, planOutput, "alpha") - //assert.Contains(t, planOutput, "beta") - //assert.Contains(t, planOutput, "charlie") - // - //stdoutLines := strings.Split(planOutput, "\n") - //for _, line := range stdoutLines { - // if strings.Contains(line, "alpha") { - // assert.Contains(t, line, "[a]") - // } - // if strings.Contains(line, "beta") { - // assert.Contains(t, line, "[b]") - // } - // if strings.Contains(line, "charlie") { - // assert.Contains(t, line, "[c]") - // } - //} + + planOutput := stdout.String() + assert.Contains(t, planOutput, "[../dependency]") + } func TestTerragruntWorksWithIncludeDeepMerge(t *testing.T) {