Skip to content

Commit

Permalink
integration/build: Add TestBuildWorkdirNoCacheMiss
Browse files Browse the repository at this point in the history
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
  • Loading branch information
vvoland committed Apr 16, 2024
1 parent 7b81ca9 commit b106d63
Showing 1 changed file with 65 additions and 0 deletions.
65 changes: 65 additions & 0 deletions integration/build/build_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -689,6 +689,71 @@ func TestBuildPlatformInvalid(t *testing.T) {
assert.Check(t, is.ErrorType(err, errdefs.IsInvalidParameter))
}

// Test for #47627
func TestBuildWorkdirNoCacheMiss(t *testing.T) {
ctx := setupTest(t)

for _, tc := range []struct {
name string
dockerfile string
}{
{name: "trailing slash", dockerfile: "FROM busybox\nWORKDIR /foo/"},
{name: "no trailing slash", dockerfile: "FROM busybox\nWORKDIR /foo"},
} {
dockerfile := tc.dockerfile
t.Run(tc.name, func(t *testing.T) {
source := fakecontext.New(t, "", fakecontext.WithDockerfile(dockerfile))
defer source.Close()

apiClient := testEnv.APIClient()

buildAndGetID := func() string {
resp, err := apiClient.ImageBuild(ctx, source.AsTarReader(t), types.ImageBuildOptions{
Version: types.BuilderV1,
})
assert.NilError(t, err)
defer resp.Body.Close()

id := readBuildImageIDs(t, resp.Body)
assert.Check(t, id != "")
return id
}

firstId := buildAndGetID()
secondId := buildAndGetID()

assert.Check(t, is.Equal(firstId, secondId), "expected cache to be used")
})
}
}

func readBuildImageIDs(t *testing.T, rd io.Reader) string {
decoder := json.NewDecoder(rd)
for {
var jm jsonmessage.JSONMessage
if err := decoder.Decode(&jm); err != nil {
if err == io.EOF {
break
}
assert.NilError(t, err)
}

if jm.Aux == nil {
continue
}

var auxId struct {
ID string `json:"ID"`
}

if json.Unmarshal(*jm.Aux, &auxId); auxId.ID != "" {
return auxId.ID
}
}

return ""
}

func writeTarRecord(t *testing.T, w *tar.Writer, fn, contents string) {
err := w.WriteHeader(&tar.Header{
Name: fn,
Expand Down

0 comments on commit b106d63

Please sign in to comment.