Skip to content

Commit 20d2501

Browse files
committed
test: build details output
Signed-off-by: CrazyMax <[email protected]>
1 parent d45601f commit 20d2501

1 file changed

Lines changed: 46 additions & 1 deletion

File tree

tests/build.go

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ package tests
33
import (
44
"bytes"
55
"encoding/json"
6-
"errors"
76
"fmt"
87
"os"
8+
"path"
99
"path/filepath"
10+
"regexp"
1011
"strings"
1112
"testing"
1213

@@ -16,6 +17,7 @@ import (
1617
"github.com/moby/buildkit/util/testutil"
1718
"github.com/moby/buildkit/util/testutil/integration"
1819
"github.com/opencontainers/go-digest"
20+
"github.com/pkg/errors"
1921
"github.com/stretchr/testify/require"
2022
)
2123

@@ -33,6 +35,7 @@ var buildTests = []func(t *testing.T, sb integration.Sandbox){
3335
testBuildRegistryExport,
3436
testBuildTarExport,
3537
testBuildMobyFromLocalImage,
38+
testBuildDetailsLink,
3639
}
3740

3841
func testBuild(t *testing.T, sb integration.Sandbox) {
@@ -187,6 +190,48 @@ RUN busybox | head -1 | grep v1.35.0
187190
require.NoError(t, cmd.Run())
188191
}
189192

193+
func testBuildDetailsLink(t *testing.T, sb integration.Sandbox) {
194+
buildDetailsPattern := regexp.MustCompile(`(?m)^View build details: docker-desktop://dashboard/build/[^/]+/[^/]+/[^/]+\n$`)
195+
196+
// build simple dockerfile
197+
dockerfile := []byte(`FROM busybox:latest
198+
RUN echo foo > /bar`)
199+
dir := tmpdir(t, fstest.CreateFile("Dockerfile", dockerfile, 0600))
200+
cmd := buildxCmd(sb, withArgs("build", "--output=type=cacheonly", dir))
201+
out, err := cmd.CombinedOutput()
202+
require.NoError(t, err, string(out))
203+
require.False(t, buildDetailsPattern.MatchString(string(out)), fmt.Sprintf("build details link not expected in output, got %q", out))
204+
205+
// create desktop-build .lastaccess file
206+
home, err := os.UserHomeDir() // TODO: sandbox should create a temp home dir and expose it through its interface
207+
require.NoError(t, err)
208+
dbDir := path.Join(home, ".docker", "desktop-build")
209+
require.NoError(t, os.MkdirAll(dbDir, 0755))
210+
dblaFile, err := os.Create(path.Join(dbDir, ".lastaccess"))
211+
require.NoError(t, err)
212+
defer func() {
213+
dblaFile.Close()
214+
if err := os.Remove(dblaFile.Name()); err != nil {
215+
t.Fatal(err)
216+
}
217+
}()
218+
219+
// build again
220+
cmd = buildxCmd(sb, withArgs("build", "--output=type=cacheonly", dir))
221+
out, err = cmd.CombinedOutput()
222+
require.NoError(t, err, string(out))
223+
require.True(t, buildDetailsPattern.MatchString(string(out)), fmt.Sprintf("expected build details link in output, got %q", out))
224+
225+
// build erroneous dockerfile
226+
dockerfile = []byte(`FROM busybox:latest
227+
RUN exit 1`)
228+
dir = tmpdir(t, fstest.CreateFile("Dockerfile", dockerfile, 0600))
229+
cmd = buildxCmd(sb, withArgs("build", "--output=type=cacheonly", dir))
230+
out, err = cmd.CombinedOutput()
231+
require.Error(t, err, string(out))
232+
require.True(t, buildDetailsPattern.MatchString(string(out)), fmt.Sprintf("expected build details link in output, got %q", out))
233+
}
234+
190235
func createTestProject(t *testing.T) string {
191236
dockerfile := []byte(`
192237
FROM busybox:latest AS base

0 commit comments

Comments
 (0)