test checking bake internal load build definition

Signed-off-by: Guillaume Lours <705411+glours@users.noreply.github.com>
(cherry picked from commit 6719f47bd4)
Signed-off-by: Guillaume Lours <705411+glours@users.noreply.github.com>
This commit is contained in:
Guillaume Lours
2025-10-30 18:20:25 +01:00
parent 49b1c1e932
commit 0d21922234

View File

@@ -32,7 +32,7 @@ import (
// This addresses a bug where dependencies were built twice: once in startDependencies
// and once in ensureImagesExists.
func TestRunBuildOnce(t *testing.T) {
c := NewParallelCLI(t)
c := NewCLI(t)
t.Run("dependency with pull_policy build is built only once", func(t *testing.T) {
projectName := randomProjectName("build-once")
@@ -54,25 +54,27 @@ func TestRunBuildOnce(t *testing.T) {
t.Run("nested dependencies build only once each", func(t *testing.T) {
projectName := randomProjectName("build-nested")
res := c.RunDockerComposeCmd(t, "-p", projectName, "-f", "./fixtures/run-test/build-once-nested.yaml", "down", "--rmi", "local", "--remove-orphans")
res.Assert(t, icmd.Success)
_ = c.RunDockerComposeCmd(t, "-p", projectName, "-f", "./fixtures/run-test/build-once-nested.yaml", "down", "--rmi", "local", "--remove-orphans", "-v")
res = c.RunDockerComposeCmd(t, "-p", projectName, "-f", "./fixtures/run-test/build-once-nested.yaml", "run", "--build", "--rm", "app")
res := c.RunDockerComposeCmd(t, "-p", projectName, "-f", "./fixtures/run-test/build-once-nested.yaml", "--verbose", "run", "--build", "--rm", "app")
res.Assert(t, icmd.Success)
output := res.Combined()
// Each service should build exactly once
dbBuilds := strings.Count(output, "DB built at")
apiBuilds := strings.Count(output, "API built at")
appBuilds := strings.Count(output, "App built at")
dbBuildMarker := fmt.Sprintf("naming to docker.io/library/%s-db", projectName)
apiBuildMarker := fmt.Sprintf("naming to docker.io/library/%s-api", projectName)
appBuildMarker := fmt.Sprintf("naming to docker.io/library/%s-app", projectName)
assert.Equal(t, dbBuilds, 1, "db should build once, built %d times", dbBuilds)
assert.Equal(t, apiBuilds, 1, "api should build once, built %d times", apiBuilds)
assert.Equal(t, appBuilds, 1, "app should build once, built %d times", appBuilds)
dbBuilds := strings.Count(output, dbBuildMarker)
apiBuilds := strings.Count(output, apiBuildMarker)
appBuilds := strings.Count(output, appBuildMarker)
assert.Equal(t, dbBuilds, 1, "db should build once, built %d times\nOutput:\n%s", dbBuilds, output)
assert.Equal(t, apiBuilds, 1, "api should build once, built %d times\nOutput:\n%s", apiBuilds, output)
assert.Equal(t, appBuilds, 1, "app should build once, built %d times\nOutput:\n%s", appBuilds, output)
assert.Assert(t, strings.Contains(output, "App running"))
c.RunDockerComposeCmd(t, "-p", projectName, "-f", "./fixtures/run-test/build-once-nested.yaml", "down", "--remove-orphans")
c.RunDockerComposeCmd(t, "-p", projectName, "-f", "./fixtures/run-test/build-once-nested.yaml", "down", "--rmi", "local", "--remove-orphans", "-v")
})
t.Run("service with no dependencies builds once", func(t *testing.T) {