hashicorp / hashicorp/terraform-plugin-testing

Consider Friendlier Naming When Persisting Working Directories

Open
#114 0 comments 1 reaction 0 assignees View on GitHub
enhancement
Dominant language
Go
Stars
68
Forks
22
Avg merge
2d 12h
Merged PRs (30d)
1

Description

### terraform-plugin-testing version

```
v1.2.0
```

### Use cases

When using the `TF_ACC_PERSIST_WORKING_DIR=1` environment variable, the directory is filled with some handy contents showing file artifacts during the testing:

```console
$ tree /Users/bflad/test/testing55
/Users/bflad/test/testing55

0 directories, 0 files

$ TF_ACC_PERSIST_WORKING_DIR=1 go test -count=1 -v ./internal/provider
=== RUN TestExampleDataSource_basic
testing_new.go:478: Working directory and files have been copied to: /Users/bflad/test/testing55/step_1
--- PASS: TestExampleDataSource_basic (0.54s)
=== RUN TestExampleResource_basic
testing_new.go:478: Working directory and files have been copied to: /Users/bflad/test/testing55/step_1
testing_new.go:478: Working directory and files have been copied to: /Users/bflad/test/testing55/step_2
testing_new.go:478: Working directory and files have been copied to: /Users/bflad/test/testing55/step_3
--- PASS: TestExampleResource_basic (0.89s)
PASS
ok github.com/bflad/terraform-provider-framework/internal/provider 1.717s

$ tree /Users/bflad/test/testing55
/Users/bflad/test/testing55
├── step_1
│ ├── work1058235289
│ │ ├── terraform.tfstate
│ │ ├── terraform.tfstate.backup
│ │ ├── terraform_plugin_test.tf
│ │ └── tfplan
│ └── work763334115
│ ├── terraform.tfstate
│ ├── terraform_plugin_test.tf
│ └── tfplan
├── step_2
│ └── work1058235289
│ ├── terraform.tfstate
│ ├── terraform.tfstate.backup
│ ├── terraform_plugin_test.tf
│ └── tfplan
├── step_3
│ └── work1058235289
│ ├── terraform.tfstate
│ ├── terraform.tfstate.backup
│ ├── terraform_plugin_test.tf
│ └── tfplan
├── work1058235289
│ ├── terraform.tfstate
│ ├── terraform.tfstate.backup
│ ├── terraform_plugin_test.tf
│ └── tfplan
├── work4271933255
│ ├── terraform.tfstate
│ └── terraform_plugin_test.tf
└── work763334115
├── terraform.tfstate
├── terraform.tfstate.backup
├── terraform_plugin_test.tf
└── tfplan

11 directories, 25 files
```

However, from the directory structure, its unclear what each of the step and work* directories relate to in terms of the actual test that used those files.

### Attempted solutions

Manually look through the config/plan/state files of each directory.

### Proposal

Use `(testing.T).Name()` for the persisted working directory, then flip the directories so its TestName/step_#, e.g.

(note the changes in logging output as well)

```console
$ tree /Users/bflad/test/testing55
/Users/bflad/test/testing55

0 directories, 0 files

$ TF_ACC_PERSIST_WORKING_DIR=1 go test -count=1 -v ./internal/provider
=== RUN TestExampleDataSource_basic
testing_new.go:478: Working directory and files have been copied to: /Users/bflad/test/testing55/TestExampleDataSource_basic/step_1
--- PASS: TestExampleDataSource_basic (0.54s)
=== RUN TestExampleResource_basic
testing_new.go:478: Working directory and files have been copied to: /Users/bflad/test/testing55/TestExampleResource_basic/step_1
testing_new.go:478: Working directory and files have been copied to: /Users/bflad/test/testing55/TestExampleResource_basic/step_2
testing_new.go:478: Working directory and files have been copied to: /Users/bflad/test/testing55/TestExampleResource_basic/step_3
--- PASS: TestExampleResource_basic (0.89s)
PASS
ok github.com/bflad/terraform-provider-framework/internal/provider 1.717s

$ tree /Users/bflad/test/testing55
/Users/bflad/test/testing55
├── TestExampleDataSource_basic
│ └── step_1
│ ├── terraform.tfstate
│ ├── terraform_plugin_test.tf
│ └── tfplan
├── TestExampleResource_basic
│ ├── step_1
│ │ ├── terraform.tfstate
│ │ ├── terraform.tfstate.backup
│ │ ├── terraform_plugin_test.tf
│ │ └── tfplan
│ ├── step_2
│ │ ├── terraform.tfstate
│ │ ├── terraform.tfstate.backup
│ │ ├── terraform_plugin_test.tf
│ │ └── tfplan
│ └── step_3
│ ├── terraform.tfstate
│ ├── terraform.tfstate.backup
│ ├── terraform_plugin_test.tf
│ └── tfplan
├── work1058235289
│ ├── terraform.tfstate
│ ├── terraform.tfstate.backup
│ ├── terraform_plugin_test.tf
│ └── tfplan
├── work4271933255
│ ├── terraform.tfstate
│ └── terraform_plugin_test.tf
└── work763334115
├── terraform.tfstate
├── terraform.tfstate.backup
├── terraform_plugin_test.tf
└── tfplan

10 directories, 25 files
```

### References

- #113

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.