From c464a037b7e4303afd6fe7a5c892e14e3ba0bb14 Mon Sep 17 00:00:00 2001 From: Edgar Lee Date: Wed, 30 Oct 2019 13:03:32 -0700 Subject: [PATCH] Add tests for file action remove using wildcards --- client/client_test.go | 57 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/client/client_test.go b/client/client_test.go index a186ee0d75ac..4e4f739d96c2 100644 --- a/client/client_test.go +++ b/client/client_test.go @@ -64,6 +64,7 @@ func TestIntegration(t *testing.T) { testRelativeWorkDir, testFileOpMkdirMkfile, testFileOpCopyRm, + testFileOpRmWildcard, testCallDiskUsage, testBuildMultiMount, testBuildHTTPSource, @@ -1046,6 +1047,62 @@ func testFileOpCopyRm(t *testing.T, sb integration.Sandbox) { } +func testFileOpRmWildcard(t *testing.T, sb integration.Sandbox) { + requiresLinux(t) + c, err := New(context.TODO(), sb.Address()) + require.NoError(t, err) + defer c.Close() + + dir, err := tmpdir( + fstest.CreateDir("foo", 0700), + fstest.CreateDir("bar", 0700), + fstest.CreateFile("foo/target", []byte("foo0"), 0600), + fstest.CreateFile("bar/target", []byte("bar0"), 0600), + fstest.CreateFile("bar/remaining", []byte("bar1"), 0600), + ) + require.NoError(t, err) + defer os.RemoveAll(dir) + + st := llb.Scratch().File( + llb.Copy(llb.Local("mylocal"), "foo", "foo"). + Copy(llb.Local("mylocal"), "bar", "bar"), + ).File( + llb.Rm("*/target", llb.WithAllowWildcard(true)), + ) + def, err := st.Marshal() + require.NoError(t, err) + + destDir, err := ioutil.TempDir("", "buildkit") + require.NoError(t, err) + defer os.RemoveAll(destDir) + + _, err = c.Solve(context.TODO(), def, SolveOpt{ + Exports: []ExportEntry{ + { + Type: ExporterLocal, + OutputDir: destDir, + }, + }, + LocalDirs: map[string]string{ + "mylocal": dir, + }, + }, nil) + require.NoError(t, err) + + dt, err := ioutil.ReadFile(filepath.Join(destDir, "bar/remaining")) + require.NoError(t, err) + require.Equal(t, []byte("bar1"), dt) + + _, err = os.Stat(filepath.Join(destDir, "foo")) + require.Equal(t, true, os.IsNotExist(err)) + + _, err = os.Stat(filepath.Join(destDir, "foo/target")) + require.Equal(t, true, os.IsNotExist(err)) + + _, err = os.Stat(filepath.Join(destDir, "bar/target")) + require.Equal(t, true, os.IsNotExist(err)) +} + func testCallDiskUsage(t *testing.T, sb integration.Sandbox) { c, err := New(context.TODO(), sb.Address()) require.NoError(t, err)