requiresLinux(t) |
|
c, err := New(sb.Context(), sb.Address()) |
|
require.NoError(t, err) |
|
defer c.Close() |
|
|
|
busybox := llb.Image("busybox:latest") |
|
st := llb.Scratch() |
|
|
|
run := func(cmd string) { |
|
st = busybox.Run(llb.Shlex(cmd), llb.Dir("/wd")).AddMount("/wd", st) |
|
} |
|
|
|
run(`sh -c "echo -n foobar > const"`) |
|
run(`sh -c "cat /dev/urandom | head -c 100 |
sha256sum > unique"`) |
|
|
def, err := st.Marshal(sb.Context()) |
|
require.NoError(t, err) |
|
|
|
destDir := t.TempDir() |
|
|
|
_, err = c.Solve(sb.Context(), def, SolveOpt{ |
|
Exports: []ExportEntry{ |
|
{ |
|
Type: ExporterLocal, |
|
OutputDir: destDir, |
|
}, |
|
}, |
|
CacheExports: cacheOptionsEntryExport, |
|
}, nil) |
|
require.NoError(t, err) |
|
|
|
dt, err := os.ReadFile(filepath.Join(destDir, "const")) |
|
require.NoError(t, err) |
|
require.Equal(t, string(dt), "foobar") |
|
|
|
dt, err = os.ReadFile(filepath.Join(destDir, "unique")) |
|
require.NoError(t, err) |
|
|
|
ensurePruneAll(t, c, sb) |
|
|
|
destDir = t.TempDir() |
|
|
|
_, err = c.Solve(sb.Context(), def, SolveOpt{ |
|
Exports: []ExportEntry{ |
|
{ |
|
Type: ExporterLocal, |
|
OutputDir: destDir, |
|
}}, |
|
CacheImports: cacheOptionsEntryImport, |
|
}, nil) |
|
require.NoError(t, err) |
|
|
|
dt2, err := os.ReadFile(filepath.Join(destDir, "const")) |
|
require.NoError(t, err) |
|
require.Equal(t, string(dt2), "foobar") |
|
|
|
dt2, err = os.ReadFile(filepath.Join(destDir, "unique")) |
|
require.NoError(t, err) |
|
require.Equal(t, string(dt), string(dt2)) |
|
} |
|