Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package terragrunt for openSUSE:Factory checked in at 2022-07-02 15:34:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/terragrunt (Old) and /work/SRC/openSUSE:Factory/.terragrunt.new.1548 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "terragrunt" Sat Jul 2 15:34:02 2022 rev:7 rq:986211 version:0.38.3 Changes: -------- --- /work/SRC/openSUSE:Factory/terragrunt/terragrunt.changes 2022-06-29 16:02:45.352734327 +0200 +++ /work/SRC/openSUSE:Factory/.terragrunt.new.1548/terragrunt.changes 2022-07-02 15:34:11.930986851 +0200 @@ -1,0 +2,8 @@ +Fri Jul 01 10:52:34 UTC 2022 - ka...@b1-systems.de + +- Update to version 0.38.3: + * #2113 Improved parsing of AWS policy response (#2118) + * #2109 Updated reading of AWS response using BoolValue function (#2111) + * Integration tests stability (#2160) + +------------------------------------------------------------------- Old: ---- terragrunt-0.38.2.tar.gz New: ---- terragrunt-0.38.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ terragrunt.spec ++++++ --- /var/tmp/diff_new_pack.9osZ5W/_old 2022-07-02 15:34:12.602987859 +0200 +++ /var/tmp/diff_new_pack.9osZ5W/_new 2022-07-02 15:34:12.606987865 +0200 @@ -19,7 +19,7 @@ %define __arch_install_post export NO_BRP_STRIP_DEBUG=true Name: terragrunt -Version: 0.38.2 +Version: 0.38.3 Release: 0 Summary: Thin wrapper for Terraform for working with multiple Terraform modules License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.9osZ5W/_old 2022-07-02 15:34:12.634987907 +0200 +++ /var/tmp/diff_new_pack.9osZ5W/_new 2022-07-02 15:34:12.638987913 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/gruntwork-io/terragrunt</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v0.38.2</param> + <param name="revision">v0.38.3</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> @@ -16,7 +16,7 @@ <param name="compression">gz</param> </service> <service name="go_modules" mode="disabled"> - <param name="archive">terragrunt-0.38.2.tar.gz</param> + <param name="archive">terragrunt-0.38.3.tar.gz</param> </service> </services> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.9osZ5W/_old 2022-07-02 15:34:12.654987937 +0200 +++ /var/tmp/diff_new_pack.9osZ5W/_new 2022-07-02 15:34:12.658987943 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/gruntwork-io/terragrunt</param> - <param name="changesrevision">1cb5c30f36ac698e2f989aa552dd105ad0285059</param></service></servicedata> + <param name="changesrevision">7d143740c05ef9a5cc87414c5b22107bf3cb1425</param></service></servicedata> (No newline at EOF) ++++++ terragrunt-0.38.2.tar.gz -> terragrunt-0.38.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/aws_helper/policy.go new/terragrunt-0.38.3/aws_helper/policy.go --- old/terragrunt-0.38.2/aws_helper/policy.go 2022-06-28 13:14:28.000000000 +0200 +++ new/terragrunt-0.38.3/aws_helper/policy.go 2022-06-30 14:03:23.000000000 +0200 @@ -2,18 +2,22 @@ import "encoding/json" -// A representation of the polciy for AWS +// Policy - representation of the policy for AWS type Policy struct { Version string `json:"Version"` Statement []Statement `json:"Statement"` } +// Statement - AWS policy statement +// Action and Resource - can be string OR array of strings +// https://docs.aws.amazon.com/IAM//latest/UserGuide/reference_policies_elements_action.html +// https://docs.aws.amazon.com/IAM//latest/UserGuide/reference_policies_elements_resource.html type Statement struct { Sid string `json:"Sid"` Effect string `json:"Effect"` Principal interface{} `json:"Principal"` - Action string `json:"Action"` - Resource []string `json:"Resource"` + Action interface{} `json:"Action"` + Resource interface{} `json:"Resource"` Condition *map[string]interface{} `json:"Condition,omitempty"` } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/aws_helper/policy_test.go new/terragrunt-0.38.3/aws_helper/policy_test.go --- old/terragrunt-0.38.2/aws_helper/policy_test.go 1970-01-01 01:00:00.000000000 +0100 +++ new/terragrunt-0.38.3/aws_helper/policy_test.go 2022-06-30 14:03:23.000000000 +0200 @@ -0,0 +1,104 @@ +package aws_helper + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +const simplePolicy = ` + { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "StringValues", + "Effect": "Allow", + "Action": "s3:*", + "Resource": "*" + } + ] + } + ` +const arraysPolicy = ` + { + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "Lists", + "Effect": "Allow", + "Action": [ + "s3:ListStorageLensConfigurations", + "s3:ListAccessPointsForObjectLambda", + "s3:ListBucketMultipartUploads", + "s3:ListAllMyBuckets", + "s3:DescribeJob", + "s3:ListAccessPoints", + "s3:ListJobs", + "s3:ListBucketVersions", + "s3:ListBucket", + "s3:ListMultiRegionAccessPoints", + "s3:ListMultipartUploadParts" + ], + "Resource": [ + "arn:aws:s3:::*", + "arn:aws:s3:*:666:job/*" + ] + } + ] + } + ` + +func TestUnmarshalStringActionResource(t *testing.T) { + t.Parallel() + + bucketPolicy, err := UnmarshalPolicy(simplePolicy) + assert.NoError(t, err) + assert.NotNil(t, bucketPolicy) + assert.Equal(t, 1, len(bucketPolicy.Statement)) + assert.NotNil(t, bucketPolicy.Statement[0].Action) + assert.NotNil(t, bucketPolicy.Statement[0].Resource) + + switch action := bucketPolicy.Statement[0].Action.(type) { + case string: + assert.Equal(t, "s3:*", action) + break + default: + assert.Fail(t, "Expected string type for Action") + } + + switch resource := bucketPolicy.Statement[0].Resource.(type) { + case string: + assert.Equal(t, "*", resource) + break + default: + assert.Fail(t, "Expected string type for Resource") + } +} + +func TestUnmarshalActionResourceList(t *testing.T) { + t.Parallel() + bucketPolicy, err := UnmarshalPolicy(arraysPolicy) + assert.NoError(t, err) + assert.NotNil(t, bucketPolicy) + assert.Equal(t, 1, len(bucketPolicy.Statement)) + assert.NotNil(t, bucketPolicy.Statement[0].Action) + assert.NotNil(t, bucketPolicy.Statement[0].Resource) + + switch actions := bucketPolicy.Statement[0].Action.(type) { + case []interface{}: + assert.Equal(t, 11, len(actions)) + assert.Contains(t, actions, "s3:ListJobs") + break + default: + assert.Fail(t, "Expected []string type for Action") + } + + switch resource := bucketPolicy.Statement[0].Resource.(type) { + case []interface{}: + assert.Equal(t, 2, len(resource)) + assert.Contains(t, resource, "arn:aws:s3:*:666:job/*") + break + default: + assert.Fail(t, "Expected []string type for Resource") + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/remote/remote_state_s3.go new/terragrunt-0.38.3/remote/remote_state_s3.go --- old/terragrunt-0.38.2/remote/remote_state_s3.go 2022-06-28 13:14:28.000000000 +0200 +++ new/terragrunt-0.38.3/remote/remote_state_s3.go 2022-06-30 14:03:23.000000000 +0200 @@ -1161,20 +1161,24 @@ return false, errors.WithStackTrace(err) } + return validatePublicAccessBlock(output) +} + +func validatePublicAccessBlock(output *s3.GetPublicAccessBlockOutput) (bool, error) { if output.PublicAccessBlockConfiguration == nil { return false, nil } - if !*output.PublicAccessBlockConfiguration.BlockPublicAcls { + if !aws.BoolValue(output.PublicAccessBlockConfiguration.BlockPublicAcls) { return false, nil } - if !*output.PublicAccessBlockConfiguration.BlockPublicPolicy { + if !aws.BoolValue(output.PublicAccessBlockConfiguration.BlockPublicAcls) { return false, nil } - if !*output.PublicAccessBlockConfiguration.IgnorePublicAcls { + if !aws.BoolValue(output.PublicAccessBlockConfiguration.BlockPublicAcls) { return false, nil } - if !*output.PublicAccessBlockConfiguration.RestrictPublicBuckets { + if !aws.BoolValue(output.PublicAccessBlockConfiguration.BlockPublicAcls) { return false, nil } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/remote/remote_state_s3_test.go new/terragrunt-0.38.3/remote/remote_state_s3_test.go --- old/terragrunt-0.38.2/remote/remote_state_s3_test.go 2022-06-28 13:14:28.000000000 +0200 +++ new/terragrunt-0.38.3/remote/remote_state_s3_test.go 2022-06-30 14:03:23.000000000 +0200 @@ -3,6 +3,8 @@ import ( "testing" + "github.com/aws/aws-sdk-go/service/s3" + "github.com/aws/aws-sdk-go/aws" "github.com/gruntwork-io/terragrunt/aws_helper" "github.com/gruntwork-io/terragrunt/options" @@ -339,3 +341,52 @@ }) } } + +// Test to validate cases when is not possible to read all S3 configurations +//https://github.com/gruntwork-io/terragrunt/issues/2109 +func TestNegativePublicAccessResponse(t *testing.T) { + t.Parallel() + testCases := []struct { + name string + response *s3.GetPublicAccessBlockOutput + }{ + { + name: "nil-response", + response: &s3.GetPublicAccessBlockOutput{ + PublicAccessBlockConfiguration: nil, + }, + }, + { + name: "legacy-bucket", + response: &s3.GetPublicAccessBlockOutput{ + PublicAccessBlockConfiguration: &s3.PublicAccessBlockConfiguration{ + BlockPublicAcls: nil, + BlockPublicPolicy: nil, + IgnorePublicAcls: nil, + RestrictPublicBuckets: nil, + }, + }, + }, + { + name: "false-response", + response: &s3.GetPublicAccessBlockOutput{ + PublicAccessBlockConfiguration: &s3.PublicAccessBlockConfiguration{ + BlockPublicAcls: aws.Bool(false), + BlockPublicPolicy: aws.Bool(false), + IgnorePublicAcls: aws.Bool(false), + RestrictPublicBuckets: aws.Bool(false), + }, + }, + }, + } + for _, testCase := range testCases { + testCase := testCase + + t.Run(testCase.name, func(t *testing.T) { + t.Parallel() + response, err := validatePublicAccessBlock(testCase.response) + assert.NoError(t, err) + assert.False(t, response) + }) + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/shell/run_shell_cmd.go new/terragrunt-0.38.3/shell/run_shell_cmd.go --- old/terragrunt-0.38.2/shell/run_shell_cmd.go 2022-06-28 13:14:28.000000000 +0200 +++ new/terragrunt-0.38.3/shell/run_shell_cmd.go 2022-06-30 14:03:23.000000000 +0200 @@ -213,7 +213,10 @@ func GitTopLevelDir(terragruntOptions *options.TerragruntOptions, path string) (string, error) { stdout := bytes.Buffer{} stderr := bytes.Buffer{} - opts, _ := options.NewTerragruntOptions(path) + opts, err := options.NewTerragruntOptions(path) + if err != nil { + return "", err + } opts.Env = terragruntOptions.Env opts.Writer = &stdout opts.ErrWriter = &stderr diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/test/fixture-get-path/fixture-get-path-from-repo-root/main.tf new/terragrunt-0.38.3/test/fixture-get-path/fixture-get-path-from-repo-root/main.tf --- old/terragrunt-0.38.2/test/fixture-get-path/fixture-get-path-from-repo-root/main.tf 1970-01-01 01:00:00.000000000 +0100 +++ new/terragrunt-0.38.3/test/fixture-get-path/fixture-get-path-from-repo-root/main.tf 2022-06-30 14:03:23.000000000 +0200 @@ -0,0 +1,7 @@ +variable "path_from_root" { + type = string +} + +output "path_from_root" { + value = var.path_from_root +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/test/fixture-get-path/fixture-get-path-from-repo-root/terragrunt.hcl new/terragrunt-0.38.3/test/fixture-get-path/fixture-get-path-from-repo-root/terragrunt.hcl --- old/terragrunt-0.38.2/test/fixture-get-path/fixture-get-path-from-repo-root/terragrunt.hcl 1970-01-01 01:00:00.000000000 +0100 +++ new/terragrunt-0.38.3/test/fixture-get-path/fixture-get-path-from-repo-root/terragrunt.hcl 2022-06-30 14:03:23.000000000 +0200 @@ -0,0 +1,3 @@ +inputs = { + path_from_root = get_path_from_repo_root() +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/test/fixture-get-path/fixture-get-path-to-repo-root/main.tf new/terragrunt-0.38.3/test/fixture-get-path/fixture-get-path-to-repo-root/main.tf --- old/terragrunt-0.38.2/test/fixture-get-path/fixture-get-path-to-repo-root/main.tf 1970-01-01 01:00:00.000000000 +0100 +++ new/terragrunt-0.38.3/test/fixture-get-path/fixture-get-path-to-repo-root/main.tf 2022-06-30 14:03:23.000000000 +0200 @@ -0,0 +1,7 @@ +variable "path_to_root" { + type = string +} + +output "path_to_root" { + value = var.path_to_root +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/test/fixture-get-path/fixture-get-path-to-repo-root/terragrunt.hcl new/terragrunt-0.38.3/test/fixture-get-path/fixture-get-path-to-repo-root/terragrunt.hcl --- old/terragrunt-0.38.2/test/fixture-get-path/fixture-get-path-to-repo-root/terragrunt.hcl 1970-01-01 01:00:00.000000000 +0100 +++ new/terragrunt-0.38.3/test/fixture-get-path/fixture-get-path-to-repo-root/terragrunt.hcl 2022-06-30 14:03:23.000000000 +0200 @@ -0,0 +1,3 @@ +inputs = { + path_to_root = get_path_to_repo_root() +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/test/fixture-get-path-from-repo-root/main.tf new/terragrunt-0.38.3/test/fixture-get-path-from-repo-root/main.tf --- old/terragrunt-0.38.2/test/fixture-get-path-from-repo-root/main.tf 2022-06-28 13:14:28.000000000 +0200 +++ new/terragrunt-0.38.3/test/fixture-get-path-from-repo-root/main.tf 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +0,0 @@ -variable "path_from_root" { - type = string -} - -output "path_from_root" { - value = var.path_from_root -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/test/fixture-get-path-from-repo-root/terragrunt.hcl new/terragrunt-0.38.3/test/fixture-get-path-from-repo-root/terragrunt.hcl --- old/terragrunt-0.38.2/test/fixture-get-path-from-repo-root/terragrunt.hcl 2022-06-28 13:14:28.000000000 +0200 +++ new/terragrunt-0.38.3/test/fixture-get-path-from-repo-root/terragrunt.hcl 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +0,0 @@ -inputs = { - path_from_root = get_path_from_repo_root() -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/test/fixture-get-path-to-repo-root/main.tf new/terragrunt-0.38.3/test/fixture-get-path-to-repo-root/main.tf --- old/terragrunt-0.38.2/test/fixture-get-path-to-repo-root/main.tf 2022-06-28 13:14:28.000000000 +0200 +++ new/terragrunt-0.38.3/test/fixture-get-path-to-repo-root/main.tf 1970-01-01 01:00:00.000000000 +0100 @@ -1,7 +0,0 @@ -variable "path_to_root" { - type = string -} - -output "path_to_root" { - value = var.path_to_root -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/test/fixture-get-path-to-repo-root/terragrunt.hcl new/terragrunt-0.38.3/test/fixture-get-path-to-repo-root/terragrunt.hcl --- old/terragrunt-0.38.2/test/fixture-get-path-to-repo-root/terragrunt.hcl 2022-06-28 13:14:28.000000000 +0200 +++ new/terragrunt-0.38.3/test/fixture-get-path-to-repo-root/terragrunt.hcl 1970-01-01 01:00:00.000000000 +0100 @@ -1,3 +0,0 @@ -inputs = { - path_to_root = get_path_to_repo_root() -} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/test/integration_serial_test.go new/terragrunt-0.38.3/test/integration_serial_test.go --- old/terragrunt-0.38.2/test/integration_serial_test.go 2022-06-28 13:14:28.000000000 +0200 +++ new/terragrunt-0.38.3/test/integration_serial_test.go 2022-06-30 14:03:23.000000000 +0200 @@ -300,7 +300,7 @@ require.NoError(t, err) matches := r.FindAllStringSubmatch(output, -1) - require.True(t, len(matches) == numberOfModules) + assert.Equal(t, numberOfModules, len(matches)) var times []int for _, v := range matches { // timestamp() is parsed diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/terragrunt-0.38.2/test/integration_test.go new/terragrunt-0.38.3/test/integration_test.go --- old/terragrunt-0.38.2/test/integration_test.go 2022-06-28 13:14:28.000000000 +0200 +++ new/terragrunt-0.38.3/test/integration_test.go 2022-06-30 14:03:23.000000000 +0200 @@ -112,8 +112,8 @@ TEST_FIXTURE_RELATIVE_INCLUDE_CMD = "fixture-relative-include-cmd" TEST_FIXTURE_AWS_GET_CALLER_IDENTITY = "fixture-get-aws-caller-identity" TEST_FIXTURE_GET_REPO_ROOT = "fixture-get-repo-root" - TEST_FIXTURE_GET_PATH_FROM_REPO_ROOT = "fixture-get-path-from-repo-root" - TEST_FIXTURE_GET_PATH_TO_REPO_ROOT = "fixture-get-path-to-repo-root" + TEST_FIXTURE_GET_PATH_FROM_REPO_ROOT = "fixture-get-path/fixture-get-path-from-repo-root" + TEST_FIXTURE_GET_PATH_TO_REPO_ROOT = "fixture-get-path/fixture-get-path-to-repo-root" TEST_FIXTURE_GET_PLATFORM = "fixture-get-platform" TEST_FIXTURE_GET_TERRAGRUNT_SOURCE_HCL = "fixture-get-terragrunt-source-hcl" TEST_FIXTURE_GET_TERRAGRUNT_SOURCE_CLI = "fixture-get-terragrunt-source-cli" @@ -125,6 +125,7 @@ TEST_FIXTURE_DESTROY_WARNING = "fixture-destroy-warning" TEST_FIXTURE_INCLUDE_PARENT = "fixture-include-parent" TEST_FIXTURE_AUTO_INIT = "fixture-download/init-on-source-change" + TEST_FIXTURE_DISJOINT = "fixture-stack/disjoint" TERRAFORM_BINARY = "terraform" TERRAFORM_FOLDER = ".terraform" TERRAFORM_STATE = "terraform.tfstate" @@ -962,7 +963,10 @@ func TestTerragruntStackCommandsWithPlanFile(t *testing.T) { t.Parallel() - disjointEnvironmentPath := "fixture-stack/disjoint" + tmpEnvPath, err := filepath.EvalSymlinks(copyEnvironment(t, TEST_FIXTURE_DISJOINT)) + assert.NoError(t, err) + disjointEnvironmentPath := util.JoinPath(tmpEnvPath, TEST_FIXTURE_DISJOINT) + cleanupTerraformFolder(t, disjointEnvironmentPath) runTerragrunt(t, fmt.Sprintf("terragrunt plan-all -out=plan.tfplan --terragrunt-log-level info --terragrunt-non-interactive --terragrunt-working-dir %s", disjointEnvironmentPath)) runTerragrunt(t, fmt.Sprintf("terragrunt apply-all plan.tfplan --terragrunt-log-level info --terragrunt-non-interactive --terragrunt-working-dir %s", disjointEnvironmentPath)) @@ -2832,9 +2836,9 @@ tmpEnvPath, _ := filepath.EvalSymlinks(copyEnvironment(t, TEST_FIXTURE_GET_REPO_ROOT)) rootPath := util.JoinPath(tmpEnvPath, TEST_FIXTURE_GET_REPO_ROOT) - _, err := exec.Command("git", "init", rootPath).Output() + output, err := exec.Command("git", "init", rootPath).CombinedOutput() if err != nil { - t.Fatalf("Error initializing git repo: %v", err) + t.Fatalf("Error initializing git repo: %v\n%s", err, string(output)) } runTerragrunt(t, fmt.Sprintf("terragrunt apply-all --terragrunt-non-interactive --terragrunt-working-dir %s", rootPath)) @@ -2864,9 +2868,9 @@ tmpEnvPath, _ := filepath.EvalSymlinks(copyEnvironment(t, TEST_FIXTURE_GET_PATH_FROM_REPO_ROOT)) rootPath := util.JoinPath(tmpEnvPath, TEST_FIXTURE_GET_PATH_FROM_REPO_ROOT) - _, err := exec.Command("git", "init", tmpEnvPath+"/../").Output() + output, err := exec.Command("git", "init", tmpEnvPath).CombinedOutput() if err != nil { - t.Fatalf("Error initializing git repo: %v", err) + t.Fatalf("Error initializing git repo: %v\n%s", err, string(output)) } runTerragrunt(t, fmt.Sprintf("terragrunt apply-all --terragrunt-non-interactive --terragrunt-working-dir %s", rootPath)) @@ -2887,7 +2891,7 @@ pathFromRoot, hasPathFromRoot := outputs["path_from_root"] require.True(t, hasPathFromRoot) - require.Regexp(t, "terragrunt-.*/fixture-get-path-from-repo-root", pathFromRoot.Value) + require.Equal(t, TEST_FIXTURE_GET_PATH_FROM_REPO_ROOT, pathFromRoot.Value) } func TestGetPathToRepoRoot(t *testing.T) { @@ -2897,7 +2901,7 @@ rootPath := util.JoinPath(tmpEnvPath, TEST_FIXTURE_GET_PATH_TO_REPO_ROOT) cleanupTerraformFolder(t, rootPath) - output, err := exec.Command("git", "init", tmpEnvPath+"/../").Output() + output, err := exec.Command("git", "init", tmpEnvPath).CombinedOutput() if err != nil { t.Fatalf("Error initializing git repo: %v\n%s", err, string(output)) } ++++++ vendor.tar.gz ++++++ /work/SRC/openSUSE:Factory/terragrunt/vendor.tar.gz /work/SRC/openSUSE:Factory/.terragrunt.new.1548/vendor.tar.gz differ: char 5, line 1