func TestLayeredPrune_all(t *testing.T) { dir := tempDir(t) defer os.RemoveAll(dir) runner := new(exec.MockRunner) defer exec.TestChrunner(runner.Run)() layer := &Layered{ DataDir: dir, Layers: []*Layer{ testLayer(t, "foo", dir), testLayer(t, "bar", dir), }, } ctx := testContextShared(t) if err := layer.Build(ctx); err != nil { t.Fatalf("err: %s", err) } // Clear the commands because we only want to count those runner.Commands = nil if _, err := layer.Prune(ctx); err != nil { t.Fatalf("err: %s", err) } // 2 vagrant destroy -f if len(runner.Commands) != 2 { t.Fatalf("bad: %#v", runner.Commands) } }
func TestLayeredPrune(t *testing.T) { dir := tempDir(t) defer os.RemoveAll(dir) runner := new(exec.MockRunner) defer exec.TestChrunner(runner.Run)() // Build an environment using foo and bar layer := &Layered{ DataDir: dir, Layers: []*Layer{ testLayer(t, "foo", dir), testLayer(t, "bar", dir), }, } ctx := testContextShared(t) if err := layer.Build(ctx); err != nil { t.Fatalf("err: %s", err) } // Add an environment env := &Vagrant{DataDir: filepath.Join(dir, "v1")} if err := layer.ConfigureEnv(env); err != nil { t.Fatalf("err: %s", err) } if err := layer.SetEnv(env, envStateReady); err != nil { t.Fatalf("err: %s", err) } // Clear the commands because we only want to count those runner.Commands = nil // Prune should not do anything if _, err := layer.Prune(ctx); err != nil { t.Fatalf("err: %s", err) } if len(runner.Commands) > 0 { t.Fatalf("bad: %#v", runner.Commands) } }
func TestLayeredBuild_verify(t *testing.T) { dir := tempDir(t) defer os.RemoveAll(dir) runner := new(exec.MockRunner) defer exec.TestChrunner(runner.Run)() // Build an environment using foo and bar layer := &Layered{ DataDir: dir, Layers: []*Layer{ testLayer(t, "foo", dir), testLayer(t, "bar", dir), }, } ctx := testContextShared(t) if err := layer.Build(ctx); err != nil { t.Fatalf("err: %s", err) } if len(runner.Commands) != 6 { t.Fatalf("bad: %#v", runner.Commands) } // Clear the commands so we only count what is next runner.Commands = nil // Setup the output so we recreate the second okayOutput := "1451607142,default,state,running\n" runner.CommandOutput = []string{okayOutput, "bad"} // Repeat the test since this should be a no-op if err := layer.Build(ctx); err != nil { t.Fatalf("err: %s", err) } if len(runner.Commands) != 5 { t.Fatalf("bad: %#v", runner.Commands) } }