diff --git a/files/files.go b/files/files.go index 9fcf422..1d85755 100644 --- a/files/files.go +++ b/files/files.go @@ -177,11 +177,18 @@ func ExpandContentGlobs(contents Contents, disableGlobbing bool) (files Contents func appendGlobbedFiles(all Contents, globbed map[string]string, origFile *Content) (Contents, error) { for src, dst := range globbed { + // if the file has a FileInfo, we need to copy it but recalculate its size + newFileInfo := origFile.FileInfo + if newFileInfo != nil { + newFileInfoVal := *newFileInfo + newFileInfoVal.Size = 0 + newFileInfo = &newFileInfoVal + } newFile := (&Content{ Destination: ToNixPath(dst), Source: ToNixPath(src), Type: origFile.Type, - FileInfo: origFile.FileInfo, + FileInfo: newFileInfo, Packager: origFile.Packager, }).WithFileInfoDefaults() if dst, err := os.Readlink(src); err == nil { diff --git a/files/files_test.go b/files/files_test.go index 9cae87d..2166267 100644 --- a/files/files_test.go +++ b/files/files_test.go @@ -347,3 +347,26 @@ func TestGlobbingWhenFilesHaveBrackets(t *testing.T) { } } } + +func TestGlobbingFilesWithDifferentSizesWithFileInfo(t *testing.T) { + result, err := files.ExpandContentGlobs(files.Contents{ + { + Source: "./testdata/globtest/different-sizes/**/*", + Destination: ".", + FileInfo: &files.ContentFileInfo{ + Mode: 0o777, + }, + }, + }, false) + if err != nil { + t.Fatalf("expand content globs: %v", err) + } + + if len(result) != 2 { + t.Fatalf("unexpected result length: %d, expected 2", len(result)) + } + + if result[0].FileInfo.Size == result[1].FileInfo.Size { + t.Fatal("test FileInfos have the same size, expected different") + } +} diff --git a/files/testdata/globtest/different-sizes/a/a.txt b/files/testdata/globtest/different-sizes/a/a.txt new file mode 100644 index 0000000..257cc56 --- /dev/null +++ b/files/testdata/globtest/different-sizes/a/a.txt @@ -0,0 +1 @@ +foo diff --git a/files/testdata/globtest/different-sizes/b/b.txt b/files/testdata/globtest/different-sizes/b/b.txt new file mode 100644 index 0000000..15564c6 --- /dev/null +++ b/files/testdata/globtest/different-sizes/b/b.txt @@ -0,0 +1 @@ +barbaz