@@ -41,6 +41,7 @@ func testExcludedFilesOnCopy(t *testing.T, sb integration.Sandbox) {
41
41
fstest .CreateDir ("dir1" , fs .ModePerm ),
42
42
fstest .CreateDir ("dir2" , fs .ModePerm ),
43
43
fstest .CreateDir ("dir3" , fs .ModePerm ),
44
+ fstest .CreateDir ("dir4" , fs .ModePerm ),
44
45
fstest .CreateFile ("dir1/file-101.png" , []byte (`2` ), 0600 ),
45
46
fstest .CreateFile ("dir1/file-102.txt" , []byte (`3` ), 0600 ),
46
47
fstest .CreateFile ("dir1/file-103.jpeg" , []byte (`4` ), 0600 ),
@@ -49,6 +50,9 @@ func testExcludedFilesOnCopy(t *testing.T, sb integration.Sandbox) {
49
50
fstest .CreateFile ("dir2/file-203.png" , []byte (`8` ), 0600 ),
50
51
fstest .CreateFile ("dir3/file-301.mp3" , []byte (`9` ), 0600 ),
51
52
fstest .CreateFile ("dir3/file-302.mpeg" , []byte (`10` ), 0600 ),
53
+ fstest .CreateFile ("dir4/file-401.txt" , []byte (`11` ), 0600 ),
54
+ fstest .Symlink ("dir4/file-402.txt" , "dir4/file-401.txt" ),
55
+ fstest .Symlink ("dir4/file-403.txt" , "dir4/file-404.txt" ),
52
56
)
53
57
54
58
runTest := func (dockerfile []byte , localMounts map [string ]fsutil.FS ) {
@@ -93,6 +97,9 @@ func testExcludedFilesOnCopy(t *testing.T, sb integration.Sandbox) {
93
97
{filename : "builder1/1/dir2/file-203.png" , excluded : true },
94
98
{filename : "builder1/1/dir3/file-301.mp3" , excluded : false , expectedContent : `9` },
95
99
{filename : "builder1/1/dir3/file-302.mpeg" , excluded : false , expectedContent : `10` },
100
+ {filename : "builder1/1/dir4/file-401.txt" , excluded : false , expectedContent : `11` },
101
+ {filename : "builder1/1/dir4/file-402.txt" , excluded : false , expectedContent : `file-401.txt` },
102
+ {filename : "builder1/1/dir4/file-403.txt" , excluded : false , expectedContent : `file-404.txt` },
96
103
97
104
// files copied with COPY command
98
105
{filename : "builder2/2/dir1/file-101.png" , excluded : false , expectedContent : `2` },
@@ -103,6 +110,9 @@ func testExcludedFilesOnCopy(t *testing.T, sb integration.Sandbox) {
103
110
{filename : "builder2/2/dir2/file-203.png" , excluded : false , expectedContent : `8` },
104
111
{filename : "builder2/2/dir3/file-301.mp3" , excluded : false , expectedContent : `9` },
105
112
{filename : "builder2/2/dir3/file-302.mpeg" , excluded : false , expectedContent : `10` },
113
+ {filename : "builder2/2/dir4/file-401.txt" , excluded : true },
114
+ {filename : "builder2/2/dir4/file-402.txt" , excluded : true },
115
+ {filename : "builder2/2/dir4/file-403.txt" , excluded : true },
106
116
107
117
// Files copied with ADD command
108
118
{filename : "builder3/3/file-301.mp3" , excluded : true },
@@ -118,6 +128,9 @@ func testExcludedFilesOnCopy(t *testing.T, sb integration.Sandbox) {
118
128
{filename : "builder4/4/file-301.mp3" , excluded : true },
119
129
{filename : "builder4/4/file-301.mp3" , excluded : true },
120
130
{filename : "builder4/4/file-302.mpeg" , excluded : false , expectedContent : `10` },
131
+ {filename : "builder4/4/dir4/file-401.txt" , excluded : true },
132
+ {filename : "builder4/4/dir4/file-402.txt" , excluded : true },
133
+ {filename : "builder4/4/dir4/file-403.txt" , excluded : true },
121
134
122
135
// Files copied with ADD wildcard
123
136
{filename : "builder5/5/file-101.png" , excluded : true },
@@ -129,16 +142,30 @@ func testExcludedFilesOnCopy(t *testing.T, sb integration.Sandbox) {
129
142
{filename : "builder5/5/file-301.mp3" , excluded : true },
130
143
{filename : "builder5/5/file-301.mp3" , excluded : true },
131
144
{filename : "builder5/5/file-302.mpeg" , excluded : true },
145
+ {filename : "builder5/5/dir4/file-401.txt" , excluded : false , expectedContent : `11` },
146
+ {filename : "builder5/5/dir4/file-402.txt" , excluded : false , expectedContent : `file-401.txt` },
147
+ {filename : "builder5/5/dir4/file-403.txt" , excluded : false , expectedContent : `file-404.txt` },
132
148
}
133
149
134
150
for _ , tc := range testCases {
135
- dt , err := os .ReadFile (path .Join (destDir .Name , tc .filename ))
151
+ fpath := path .Join (destDir .Name , tc .filename )
152
+
153
+ var dt []byte
154
+ st , err := os .Stat (fpath )
136
155
if tc .excluded {
137
156
require .Errorf (t , err , "File %s should not exist: %v" , tc .filename , err )
138
157
continue
139
158
}
140
-
141
159
require .NoErrorf (t , err ,
7F09
"File %s should exist" , tc .filename )
160
+
161
+ if st .Mode ()& os .ModeSymlink != 0 {
162
+ target , err := os .Readlink (fpath )
163
+ require .NoErrorf (t , err , "Readlink %s should not error" , tc .filename )
164
+ dt = []byte (target )
165
+ } else {
166
+ dt , err = os .ReadFile (fpath )
167
+ require .NoErrorf (t , err , "File %s should exist" , tc .filename )
168
+ }
142
169
require .Equalf (t , tc .expectedContent , string (dt ), "File %s does not have matched content" , tc .filename )
143
170
}
144
171
0 commit comments