Merge pull request #792 from pulumi/fail-test
Keep test temp directories around on failure
This commit is contained in:
commit
3620cdb243
|
@ -304,17 +304,18 @@ func testLifeCycleInitAndDestroy(
|
|||
return errors.Wrap(err, "Couldn't copy test to temporary directory")
|
||||
}
|
||||
|
||||
// Keep the temporary test directory around for debugging unless
|
||||
// the test completes successfully.
|
||||
keepTestDir := true
|
||||
defer func() {
|
||||
if t.Failed() {
|
||||
// Test failed -- keep temporary files around for debugging.
|
||||
// Maybe also copy to "failed tests" directory.
|
||||
if keepTestDir {
|
||||
// Maybe copy to "failed tests" directory.
|
||||
failedTestsDir := os.Getenv("PULUMI_FAILED_TESTS_DIR")
|
||||
if failedTestsDir != "" {
|
||||
dest := filepath.Join(failedTestsDir, t.Name()+uniqueSuffix())
|
||||
contract.IgnoreError(fsutil.CopyFile(dest, dir, nil))
|
||||
}
|
||||
} else {
|
||||
// Test passed -- delete temporary files.
|
||||
contract.IgnoreError(os.RemoveAll(dir))
|
||||
}
|
||||
}()
|
||||
|
@ -332,7 +333,13 @@ func testLifeCycleInitAndDestroy(
|
|||
}
|
||||
}()
|
||||
|
||||
return between(t, opts, dir)
|
||||
err = between(t, opts, dir)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
keepTestDir = false
|
||||
return nil
|
||||
}
|
||||
|
||||
func testLifeCycleInitialize(t *testing.T, opts *ProgramTestOptions, dir string) error {
|
||||
|
@ -644,11 +651,11 @@ func performExtraRuntimeValidation(
|
|||
}
|
||||
|
||||
// CopyTestToTemporaryDirectory creates a temporary directory to run the test in and copies the test to it.
|
||||
func CopyTestToTemporaryDirectory(t *testing.T, opts *ProgramTestOptions) (dir string, err error) {
|
||||
func CopyTestToTemporaryDirectory(t *testing.T, opts *ProgramTestOptions) (string, error) {
|
||||
// Ensure the required programs are present.
|
||||
if opts.Bin == "" {
|
||||
var pulumi string
|
||||
pulumi, err = exec.LookPath("pulumi")
|
||||
pulumi, err := exec.LookPath("pulumi")
|
||||
if err != nil {
|
||||
return "", errors.Wrapf(err, "Expected to find `pulumi` binary on $PATH")
|
||||
}
|
||||
|
@ -656,7 +663,7 @@ func CopyTestToTemporaryDirectory(t *testing.T, opts *ProgramTestOptions) (dir s
|
|||
}
|
||||
if opts.YarnBin == "" {
|
||||
var yarn string
|
||||
yarn, err = exec.LookPath("yarn")
|
||||
yarn, err := exec.LookPath("yarn")
|
||||
if err != nil {
|
||||
return "", errors.Wrapf(err, "Expected to find `yarn` binary on $PATH")
|
||||
}
|
||||
|
@ -683,7 +690,7 @@ func CopyTestToTemporaryDirectory(t *testing.T, opts *ProgramTestOptions) (dir s
|
|||
opts.Stderr = stderr
|
||||
}
|
||||
|
||||
pioutil.MustFprintf(opts.Stdout, "sample: %v\n", dir)
|
||||
pioutil.MustFprintf(opts.Stdout, "sample: %v\n", sourceDir)
|
||||
pioutil.MustFprintf(opts.Stdout, "pulumi: %v\n", opts.Bin)
|
||||
pioutil.MustFprintf(opts.Stdout, "yarn: %v\n", opts.YarnBin)
|
||||
|
||||
|
@ -694,23 +701,25 @@ func CopyTestToTemporaryDirectory(t *testing.T, opts *ProgramTestOptions) (dir s
|
|||
}
|
||||
|
||||
// Clean up the temporary directory on failure
|
||||
deleteTargetDir := true
|
||||
defer func() {
|
||||
if err != nil {
|
||||
if deleteTargetDir {
|
||||
contract.IgnoreError(os.RemoveAll(targetDir))
|
||||
}
|
||||
}()
|
||||
|
||||
// Copy the source project
|
||||
if copyerr := fsutil.CopyFile(targetDir, sourceDir, nil); copyerr != nil {
|
||||
return "", copyerr
|
||||
if err = fsutil.CopyFile(targetDir, sourceDir, nil); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
err = prepareProject(t, opts, targetDir)
|
||||
if err != nil {
|
||||
return "", errors.Wrapf(err, "Failed to prepare %v", dir)
|
||||
return "", errors.Wrapf(err, "Failed to prepare %v", targetDir)
|
||||
}
|
||||
|
||||
pioutil.MustFprintf(stdout, "projdir: %v\n", targetDir)
|
||||
deleteTargetDir = false
|
||||
return targetDir, nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue