Docker-DCO-1.1-Signed-off-by: Erik Hollensbe <github@hollensbe.org> (github: erikh)
| ... | ... |
@@ -234,7 +234,7 @@ func cmd(b *Builder, args []string, attributes map[string]bool) error {
|
| 234 | 234 |
b.Config.Cmd = handleJsonArgs(args, attributes) |
| 235 | 235 |
|
| 236 | 236 |
if !attributes["json"] && len(b.Config.Entrypoint) == 0 {
|
| 237 |
- b.Config.Entrypoint = []string{"/bin/sh", "-c"}
|
|
| 237 |
+ b.Config.Cmd = append([]string{"/bin/sh", "-c"}, b.Config.Cmd...)
|
|
| 238 | 238 |
} |
| 239 | 239 |
|
| 240 | 240 |
if err := b.commit("", b.Config.Cmd, fmt.Sprintf("CMD %v", b.Config.Cmd)); err != nil {
|
| ... | ... |
@@ -2250,3 +2250,45 @@ func TestBuildInvalidTag(t *testing.T) {
|
| 2250 | 2250 |
} |
| 2251 | 2251 |
logDone("build - invalid tag")
|
| 2252 | 2252 |
} |
| 2253 |
+ |
|
| 2254 |
+func TestBuildCmdShDashC(t *testing.T) {
|
|
| 2255 |
+ name := "testbuildcmdshc" |
|
| 2256 |
+ defer deleteImages(name) |
|
| 2257 |
+ if _, err := buildImage(name, "FROM busybox\nCMD echo cmd\n", true); err != nil {
|
|
| 2258 |
+ t.Fatal(err) |
|
| 2259 |
+ } |
|
| 2260 |
+ |
|
| 2261 |
+ res, err := inspectFieldJSON(name, "Config.Cmd") |
|
| 2262 |
+ if err != nil {
|
|
| 2263 |
+ t.Fatal(err, res) |
|
| 2264 |
+ } |
|
| 2265 |
+ |
|
| 2266 |
+ expected := `["/bin/sh","-c","echo cmd"]` |
|
| 2267 |
+ |
|
| 2268 |
+ if res != expected {
|
|
| 2269 |
+ t.Fatalf("Expected value %s not in Config.Cmd: %s", expected, res)
|
|
| 2270 |
+ } |
|
| 2271 |
+ |
|
| 2272 |
+ logDone("build - cmd should have sh -c for non-json")
|
|
| 2273 |
+} |
|
| 2274 |
+ |
|
| 2275 |
+func TestBuildCmdJSONNoShDashC(t *testing.T) {
|
|
| 2276 |
+ name := "testbuildcmdjson" |
|
| 2277 |
+ defer deleteImages(name) |
|
| 2278 |
+ if _, err := buildImage(name, "FROM busybox\nCMD [\"echo\", \"cmd\"]", true); err != nil {
|
|
| 2279 |
+ t.Fatal(err) |
|
| 2280 |
+ } |
|
| 2281 |
+ |
|
| 2282 |
+ res, err := inspectFieldJSON(name, "Config.Cmd") |
|
| 2283 |
+ if err != nil {
|
|
| 2284 |
+ t.Fatal(err, res) |
|
| 2285 |
+ } |
|
| 2286 |
+ |
|
| 2287 |
+ expected := `["echo","cmd"]` |
|
| 2288 |
+ |
|
| 2289 |
+ if res != expected {
|
|
| 2290 |
+ t.Fatalf("Expected value %s not in Config.Cmd: %s", expected, res)
|
|
| 2291 |
+ } |
|
| 2292 |
+ |
|
| 2293 |
+ logDone("build - cmd should not have /bin/sh -c for json")
|
|
| 2294 |
+} |