@@ -35,9 +35,9 @@ import (
3535const (
3636 dgstFileData0 = digest .Digest ("sha256:cd8e75bca50f2d695f220d0cb0997d8ead387e4f926e8669a92d7f104cc9885b" )
3737 dgstDirD0 = digest .Digest ("sha256:d47454417d2c554067fbefe5f5719edc49f3cfe969c36b62e34a187a4da0cc9a" )
38- dgstDirD0FileByFile = digest .Digest ("sha256:231c3293e329de47fec9e79056686477891fd1f244ed7b1c1fa668489a1f0d50 " )
38+ dgstDirD0FileByFile = digest .Digest ("sha256:6b612ad5c13159112ae26357ef7bd34df29916941ba40ec2ce38dfb70c6c60c3 " )
3939 dgstDirD0Modified = digest .Digest ("sha256:555ffa3028630d97ba37832b749eda85ab676fd64ffb629fbf0f4ec8c1e3bff1" )
40- dgstDoubleStar = digest .Digest ("sha256:853b46abef38d02c9e29fdd1557c6002903b262541e60064bc84518d4d3a6f11 " )
40+ dgstDoubleStar = digest .Digest ("sha256:aa7448215bbf5b837b35ce64467857d8b9747965573d14d4b31b370586370971 " )
4141)
4242
4343func TestChecksumSymlinkNoParentScan (t * testing.T ) {
@@ -426,9 +426,9 @@ func TestChecksumWildcardOrFilter(t *testing.T) {
426426
427427 dgst , err := cc .Checksum (context .TODO (), ref , "f*o" , ChecksumOpts {Wildcard : true }, nil )
428428 require .NoError (t , err )
429- require .Equal (t , digest .FromBytes (append ([]byte ( "foo" ), []byte (dgstFileData0 )... )), dgst )
429+ require .Equal (t , digest .FromBytes (append ([]byte { 0 }, append ([] byte ( "foo" ), []byte (dgstFileData0 ) ... )... )), dgst )
430430
431- expFoos := digest .Digest ("sha256:7f51c821895cfc116d3f64231dfb438e87a237ecbbe027cd96b7ee5e763cc569 " )
431+ expFoos := digest .Digest ("sha256:0b6731924f0a32a812bf8a729202e55e54ded331f9e4ff2397f681e43694e086 " )
432432
433433 dgst , err = cc .Checksum (context .TODO (), ref , "f*" , ChecksumOpts {Wildcard : true }, nil )
434434 require .NoError (t , err )
@@ -442,7 +442,7 @@ func TestChecksumWildcardOrFilter(t *testing.T) {
442442 require .NoError (t , err )
443443 require .Equal (t , dgstFileData0 , dgst )
444444
445- expFoos2 := digest .Digest ("sha256:8afc09c7018d65d5eb318a9ef55cb704dec1f06d288181d913fc27a571aa042d " )
445+ expFoos2 := digest .Digest ("sha256:982153600b9653a1decb0f961e09e2bc1be335cfcaac9b39dbd1120b65fdf92c " )
446446
447447 dgst , err = cc .Checksum (context .TODO (), ref , "y*" , ChecksumOpts {FollowLinks : true , Wildcard : true }, nil )
448448 require .NoError (t , err )
@@ -534,13 +534,15 @@ func TestSymlinksNoFollow(t *testing.T) {
534534 require .NoError (t , err )
535535 require .Equal (t , expectedSym , dgst )
536536
537- expectedSym = digest .Digest ("sha256:e14a98332f46b81993ff4a3b7898bb00fc3d245d84e4c42e57c9ee6b129c7c41 " )
537+ expectedSym = digest .Digest ("sha256:2797e710c6d1a89ff2d91c834b828b1dc500f2982430a58241df8e146f4c4bb4 " )
538538
539539 // Same with wildcard used.
540540 dgst , err = cc .Checksum (context .TODO (), ref , "fo?" , ChecksumOpts {FollowLinks : true , Wildcard : true }, nil )
541541 require .NoError (t , err )
542542 require .Equal (t , expectedSym , dgst )
543543
544+ expectedSym = digest .Digest ("sha256:9b761577efcb1239cf4be971914c5d7404914dd32ff436401af1764dc5446b83" )
545+
544546 // Still works with exclude pattern.
545547 dgst , err = cc .Checksum (context .TODO (), ref , "foo" , ChecksumOpts {FollowLinks : true , ExcludePatterns : []string {"*.git" }}, nil )
546548 require .NoError (t , err )
@@ -935,6 +937,11 @@ func TestChecksumIncludeSymlink(t *testing.T) {
935937 // File should be included
936938 require .NotEqual (t , digest .FromBytes ([]byte {}), dgstD0 )
937939
940+ dgstD0Wildcard , err := cc .Checksum (context .TODO (), ref , "data/d*" , ChecksumOpts {IncludePatterns : []string {"**/foo" }, Wildcard : true }, nil )
941+ require .NoError (t , err )
942+ // File should be included
943+ require .NotEqual (t , dgstD0Wildcard , digest .FromBytes ([]byte {}), dgstD0Wildcard )
944+
938945 dgstMntD0 , err := cc .Checksum (context .TODO (), ref , "mnt/data/d0" , ChecksumOpts {IncludePatterns : []string {"**/foo" }}, nil )
939946 require .NoError (t , err )
940947 // File should be included despite symlink
@@ -945,6 +952,16 @@ func TestChecksumIncludeSymlink(t *testing.T) {
945952 // File should be included
946953 require .NotEqual (t , digest .FromBytes ([]byte {}), dgstD2 )
947954
955+ dgstD2Wildcard , err := cc .Checksum (context .TODO (), ref , "data/d0/d1/d*" , ChecksumOpts {IncludePatterns : []string {"**/foo" }, Wildcard : true }, nil )
956+ require .NoError (t , err )
957+ // File should be included
958+ require .NotEqual (t , digest .FromBytes ([]byte {}), dgstD2 )
959+
960+ dgstD2InnerWildcard , err := cc .Checksum (context .TODO (), ref , "mnt/data/d0/d*/d2" , ChecksumOpts {IncludePatterns : []string {"**/foo" }, Wildcard : true }, nil )
961+ require .NoError (t , err )
962+ // File should be included
963+ require .NotEqual (t , digest .FromBytes ([]byte {}), dgstD2 )
964+
948965 dgstMntD2 , err := cc .Checksum (context .TODO (), ref , "mnt/data/d0/d1/d2" , ChecksumOpts {IncludePatterns : []string {"**/foo" }}, nil )
949966 require .NoError (t , err )
950967 // File should be included despite symlink
@@ -957,23 +974,23 @@ func TestChecksumIncludeSymlink(t *testing.T) {
957974
958975 dgstMntD0Wildcard2 , err := cc .Checksum (context .TODO (), ref , "mnt/data/d*" , ChecksumOpts {IncludePatterns : []string {"**/foo" }, Wildcard : true }, nil )
959976 require .NoError (t , err )
960- require .Equal (t , dgstD0 , dgstMntD0Wildcard2 )
977+ require .Equal (t , dgstD0Wildcard , dgstMntD0Wildcard2 )
961978
962979 dgstMntD2Wildcard , err := cc .Checksum (context .TODO (), ref , "mnt/data/d0/d1/d2" , ChecksumOpts {IncludePatterns : []string {"**/foo" }, Wildcard : true }, nil )
963980 require .NoError (t , err )
964981 require .Equal (t , dgstD2 , dgstMntD2Wildcard )
965982
966983 dgstMntD2Wildcard2 , err := cc .Checksum (context .TODO (), ref , "mnt/data/d0/d1/d*" , ChecksumOpts {IncludePatterns : []string {"**/foo" }, Wildcard : true }, nil )
967984 require .NoError (t , err )
968- require .Equal (t , dgstD2 , dgstMntD2Wildcard2 )
985+ require .Equal (t , dgstD2Wildcard , dgstMntD2Wildcard2 )
969986
970987 dgstMntInnerWildcard , err := cc .Checksum (context .TODO (), ref , "mnt/data/d0/d*/d2" , ChecksumOpts {IncludePatterns : []string {"**/foo" }, Wildcard : true }, nil )
971988 require .NoError (t , err )
972- require .Equal (t , dgstD2 , dgstMntInnerWildcard )
989+ require .Equal (t , dgstD2InnerWildcard , dgstMntInnerWildcard )
973990
974991 dgstMntInnerWildcard2 , err := cc .Checksum (context .TODO (), ref , "mnt/data/symlink-to-d0/d*/d2" , ChecksumOpts {IncludePatterns : []string {"**/foo" }, Wildcard : true }, nil )
975992 require .NoError (t , err )
976- require .Equal (t , dgstD2 , dgstMntInnerWildcard2 )
993+ require .Equal (t , dgstD2InnerWildcard , dgstMntInnerWildcard2 )
977994}
978995
979996func TestHandleChange (t * testing.T ) {
@@ -1497,6 +1514,38 @@ func TestChecksumUpdateDirectory(t *testing.T) {
14971514 require .ErrorContains (t , err , "not found" )
14981515}
14991516
1517+ func TestChecksumIdenticalWithNoopExclude (t * testing.T ) {
1518+ t .Parallel ()
1519+ tmpdir := t .TempDir ()
1520+
1521+ snapshotter , err := native .NewSnapshotter (filepath .Join (tmpdir , "snapshots" ))
1522+ require .NoError (t , err )
1523+ cm , cleanup := setupCacheManager (t , tmpdir , "native" , snapshotter )
1524+ t .Cleanup (cleanup )
1525+
1526+ ch := []string {
1527+ "ADD test dir" ,
1528+ "ADD test/foo file data0" ,
1529+ }
1530+
1531+ ref := createRef (t , cm , ch )
1532+
1533+ cc , err := newCacheContext (ref )
1534+ require .NoError (t , err )
1535+
1536+ expectedDgst := "sha256:8f36dfd60011a21345427f4d3177b1223e11fbb732c18dd07cd8b2a27a0b53ca"
1537+
1538+ dgst , err := cc .Checksum (context .TODO (), ref , "test" , ChecksumOpts {}, nil )
1539+ require .NoError (t , err )
1540+ require .Equal (t , expectedDgst , string (dgst ))
1541+
1542+ dgst , err = cc .Checksum (context .TODO (), ref , "test" , ChecksumOpts {
1543+ ExcludePatterns : []string {"*.git" },
1544+ }, nil )
1545+ require .NoError (t , err )
1546+ require .Equal (t , expectedDgst , string (dgst ))
1547+ }
1548+
15001549func createRef (t * testing.T , cm cache.Manager , files []string ) cache.ImmutableRef {
15011550 if runtime .GOOS == "windows" && len (files ) > 0 {
15021551 // lm.Mount() will fail
0 commit comments