MCPcopy Create free account
hub / github.com/docker/compose / TestBuildPlatformsWithCorrectBuildxConfig

Function TestBuildPlatformsWithCorrectBuildxConfig

pkg/e2e/build_test.go:298–363  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

296}
297
298func TestBuildPlatformsWithCorrectBuildxConfig(t *testing.T) {
299 if runtime.GOOS == "windows" {
300 t.Skip("Running on Windows. Skipping...")
301 }
302 c := NewParallelCLI(t)
303
304 // declare builder
305 result := c.RunDockerCmd(t, "buildx", "create", "--name", "build-platform", "--use", "--bootstrap")
306 assert.NilError(t, result.Error)
307
308 t.Cleanup(func() {
309 c.RunDockerComposeCmd(t, "--project-directory", "fixtures/build-test/platforms", "down")
310 _ = c.RunDockerCmd(t, "buildx", "rm", "-f", "build-platform")
311 })
312
313 t.Run("platform not supported by builder", func(t *testing.T) {
314 res := c.RunDockerComposeCmdNoCheck(t, "--project-directory", "fixtures/build-test/platforms",
315 "-f", "fixtures/build-test/platforms/compose-unsupported-platform.yml", "build")
316 res.Assert(t, icmd.Expected{
317 ExitCode: 1,
318 Err: "no match for platform",
319 })
320 })
321
322 t.Run("multi-arch build ok", func(t *testing.T) {
323 res := c.RunDockerComposeCmdNoCheck(t, "--project-directory", "fixtures/build-test/platforms", "build")
324 assert.NilError(t, res.Error, res.Stderr())
325 res.Assert(t, icmd.Expected{Out: "I am building for linux/arm64"})
326 res.Assert(t, icmd.Expected{Out: "I am building for linux/amd64"})
327 })
328
329 t.Run("multi-arch multi service builds ok", func(t *testing.T) {
330 res := c.RunDockerComposeCmdNoCheck(t, "--project-directory", "fixtures/build-test/platforms",
331 "-f", "fixtures/build-test/platforms/compose-multiple-platform-builds.yaml", "build")
332 assert.NilError(t, res.Error, res.Stderr())
333 res.Assert(t, icmd.Expected{Out: "I'm Service A and I am building for linux/arm64"})
334 res.Assert(t, icmd.Expected{Out: "I'm Service A and I am building for linux/amd64"})
335 res.Assert(t, icmd.Expected{Out: "I'm Service B and I am building for linux/arm64"})
336 res.Assert(t, icmd.Expected{Out: "I'm Service B and I am building for linux/amd64"})
337 res.Assert(t, icmd.Expected{Out: "I'm Service C and I am building for linux/arm64"})
338 res.Assert(t, icmd.Expected{Out: "I'm Service C and I am building for linux/amd64"})
339 })
340
341 t.Run("multi-arch up --build", func(t *testing.T) {
342 res := c.RunDockerComposeCmdNoCheck(t, "--project-directory", "fixtures/build-test/platforms", "up", "--build", "--menu=false")
343 assert.NilError(t, res.Error, res.Stderr())
344 res.Assert(t, icmd.Expected{Out: "platforms-1 exited with code 0"})
345 })
346
347 t.Run("use DOCKER_DEFAULT_PLATFORM value when up --build", func(t *testing.T) {
348 cmd := c.NewDockerComposeCmd(t, "--project-directory", "fixtures/build-test/platforms", "up", "--build", "--menu=false")
349 res := icmd.RunCmd(cmd, func(cmd *icmd.Cmd) {
350 cmd.Env = append(cmd.Env, "DOCKER_DEFAULT_PLATFORM=linux/amd64")
351 })
352 assert.NilError(t, res.Error, res.Stderr())
353 res.Assert(t, icmd.Expected{Out: "I am building for linux/amd64"})
354 assert.Assert(t, !strings.Contains(res.Stdout(), "I am building for linux/arm64"))
355 })

Callers

nothing calls this directly

Calls 6

NewParallelCLIFunction · 0.85
RunDockerCmdMethod · 0.80
RunDockerComposeCmdMethod · 0.80
NewDockerComposeCmdMethod · 0.80
RunCmdMethod · 0.80

Tested by

no test coverage detected