@@ -93,6 +93,74 @@ func TestInitScriptInitCommand(t *testing.T) {
93
93
require .NoError (t , ctx .Err (), "init script did not execute for legacy env vars" )
94
94
}
95
95
96
+ func TestUidGid (t * testing.T ) {
97
+ t .Parallel ()
98
+ t .Run ("MultiStage" , func (t * testing.T ) {
99
+ t .Parallel ()
100
+
101
+ dockerFile := fmt .Sprintf (`FROM %s AS builder
102
+ RUN mkdir -p /myapp/somedir \
103
+ && touch /myapp/somedir/somefile \
104
+ && chown 123:123 /myapp/somedir \
105
+ && chown 321:321 /myapp/somedir/somefile
106
+
107
+ FROM %s
108
+ COPY --from=builder /myapp /myapp
109
+ RUN printf "%%s\n" \
110
+ "0 0 /myapp/" \
111
+ "123 123 /myapp/somedir" \
112
+ "321 321 /myapp/somedir/somefile" \
113
+ > /tmp/expected \
114
+ && stat -c "%%u %%g %%n" \
115
+ /myapp/ \
116
+ /myapp/somedir \
117
+ /myapp/somedir/somefile \
118
+ > /tmp/got \
119
+ && diff -u /tmp/got /tmp/expected` , testImageAlpine , testImageAlpine )
120
+ srv := createGitServer (t , gitServerOptions {
121
+ files : map [string ]string {
122
+ "Dockerfile" : dockerFile ,
123
+ },
124
+ })
125
+ _ , err := runEnvbuilder (t , options {env : []string {
126
+ envbuilderEnv ("GIT_URL" , srv .URL ),
127
+ envbuilderEnv ("DOCKERFILE_PATH" , "Dockerfile" ),
128
+ }})
129
+ require .NoError (t , err )
130
+ })
131
+
132
+ t .Run ("SingleStage" , func (t * testing.T ) {
133
+ t .Parallel ()
134
+
135
+ dockerFile := fmt .Sprintf (`FROM %s
136
+ RUN mkdir -p /myapp/somedir \
137
+ && touch /myapp/somedir/somefile \
138
+ && chown 123:123 /myapp/somedir \
139
+ && chown 321:321 /myapp/somedir/somefile \
140
+ && printf "%%s\n" \
141
+ "0 0 /myapp/" \
142
+ "123 123 /myapp/somedir" \
143
+ "321 321 /myapp/somedir/somefile" \
144
+ > /tmp/expected \
145
+ && stat -c "%%u %%g %%n" \
146
+ /myapp/ \
147
+ /myapp/somedir \
148
+ /myapp/somedir/somefile \
149
+ > /tmp/got \
150
+ && diff -u /tmp/got /tmp/expected` , testImageAlpine )
151
+ srv := createGitServer (t , gitServerOptions {
152
+ files : map [string ]string {
153
+ "Dockerfile" : dockerFile ,
154
+ },
155
+ })
156
+ _ , err := runEnvbuilder (t , options {env : []string {
157
+ envbuilderEnv ("GIT_URL" , srv .URL ),
158
+ envbuilderEnv ("DOCKERFILE_PATH" , "Dockerfile" ),
159
+ }})
160
+ require .NoError (t , err )
161
+ })
162
+ }
163
+
96
164
func TestForceSafe (t * testing.T ) {
97
165
t .Parallel ()
98
166
0 commit comments