run-acceptance-tests
hashicorp/agent-skills
Run and diagnose Terraform provider acceptance tests with proper environment setup and debugging.
What is run-acceptance-tests?
This skill guides you through running acceptance tests (Go test functions prefixed with `TestAcc`) for Terraform providers. Use it when executing acceptance tests, handling missing environment variables, or diagnosing test failures. Acceptance tests create real infrastructure against live APIs and may incur costs.
- Run focused acceptance tests with required environment variables (TF_ACC=1) and explicit timeouts
- Discover and configure provider-specific environment variables by inspecting PreCheck functions and repository documentation
- Enable progressive debugging: verbose output (-v flag), debug-level logging (TF_LOG=debug), and workspace persistence (TF_ACC_WORKING_DIR_PERSIST=1)
- Verify test validity by intentionally breaking a passing test to confirm it actually validates behavior
- Clean up orphaned infrastructure using provider sweepers if a test run is interrupted
How to install run-acceptance-tests
npx skills add https://github.com/hashicorp/agent-skills --skill run-acceptance-tests- Go installed and configured
- Access to a test account with appropriate credentials (never use production)
- Understanding of the specific provider's required environment variables
How to use run-acceptance-tests
- 1.Identify the acceptance test name (e.g., TestAccFeatureHappyPath)
- 2.Discover required environment variables by reading the test's PreCheck function or grep-searching test files for os.Getenv
- 3.Set environment variables for the test invocation: TF_ACC=1 EXAMPLE_API_KEY=... go test -run=TestAccFeatureHappyPath -timeout 60m
- 4.If the test fails, progressively enable debugging: add -v flag, then set TF_LOG=debug, then set TF_ACC_WORKING_DIR_PERSIST=1
- 5.If the test passes but seems suspicious, flip it by editing a TestCheckFunc value, re-run to confirm it fails, then undo the edit
Use cases
- Running a specific acceptance test like TestAccFeatureHappyPath with TF_ACC=1 and a 60-minute timeout
- Identifying missing environment variables by reading test PreCheck functions and grep-searching for os.Getenv calls
- Debugging a failing acceptance test by progressively enabling verbose output, debug logging, and workspace persistence
- Confirming a passing test is not a false negative by intentionally modifying a TestCheckFunc and re-running
- Cleaning up real infrastructure left behind after an interrupted test run using provider sweepers
- Terraform provider developers writing or maintaining acceptance tests
- Contributors debugging failing acceptance tests in provider repositories
- DevOps engineers validating provider functionality against live APIs
run-acceptance-tests FAQ
TF_ACC=1 is a guard that explicitly enables acceptance tests, which create real infrastructure against live APIs and may incur costs. This prevents accidental execution.
Always pass an explicit -timeout flag (e.g., -timeout 60m). Go test defaults to 10 minutes, which is too short for most acceptance tests.
Set them for the single test invocation (TF_ACC=1 go test ...) rather than exporting into your shell profile. Never write secret values into repository files.
Flip the test by intentionally modifying a TestCheckFunc value and re-running. If it fails, the test is valid; if it still passes, the test may not be validating behavior correctly.
Real infrastructure may be left behind. Run the provider's sweepers (if registered) to clean up orphaned resources. See the provider-test-patterns skill for sweeper details.
Full instructions (SKILL.md)
Source of truth, from hashicorp/agent-skills.
name: run-acceptance-tests
description: Guide for running acceptance tests for a Terraform provider. Use this when asked to run an acceptance test or to run a test with the prefix TestAcc, when a test fails with missing environment variables, or when diagnosing a failing or suspiciously passing acceptance test.
license: MPL-2.0
metadata:
lifecycle-status: active
copyright: Copyright IBM Corp. 2026
version: "0.0.1"
An acceptance test is a Go test function with the prefix TestAcc.
Before running: acceptance tests create real infrastructure against the provider's live API, which may incur cost. Confirm the configured credentials point at a test account before proceeding.
To run a focused acceptance test named TestAccFeatureHappyPath:
-
Run
go test -run=TestAccFeatureHappyPath -timeout 60mwith the following environment variables:TF_ACC=1
Default to non-verbose test output. Always pass an explicit
-timeout:go testkills any test run after 10 minutes by default, and acceptance tests routinely exceed that. -
The acceptance tests may require additional environment variables for specific providers. To discover which ones:
- Read the test's
PreCheck/testAccPreCheckfunction and search the test files:grep -rn "os.Getenv" --include="*_test.go". - Check the repository's README, CONTRIBUTING, or
.env.examplefor documented test setup. - The provider's
Configuremethod shows how credentials are resolved; use theprovider-configurationskill (if available) to understand a credential provider chain.
Set the variables for the single test invocation (
EXAMPLE_API_KEY=... TF_ACC=1 go test ...) rather than exporting them into the shell profile, and never write secret values into files inside the repository. - Read the test's
To diagnose a failing acceptance test, use these options, in order. These options are cumulative: each option includes all the options above it.
- Run the test again. Use the
-count=1option to ensure thatgo testdoes not use a cached result. - Offer verbose
go testoutput. Use the-voption. - Offer debug-level logging. Enable debug-level logging with the environment
variable
TF_LOG=debug. - Offer to persist the acceptance test's Terraform workspace. Enable
persistence with the environment variable
TF_ACC_WORKING_DIR_PERSIST=1.
A passing acceptance test may be a false negative. To "flip" a passing
acceptance test named TestAccFeatureHappyPath:
- Edit the value of one of the TestCheckFuncs in one of the TestSteps in the TestCase.
- Run the acceptance test. Expect the test to fail.
- If the test fails, then undo the edit and report a successful flip. Else, keep the edit and report an unsuccessful flip.
If a test run is interrupted, real resources may be left behind; run the
provider's sweepers if it registers them (see the provider-test-patterns
skill's sweeper reference, if available). For writing or restructuring
tests, use the provider-test-patterns skill.
Related skills
More from hashicorp/agent-skills and the wider catalog.

terraform-search-import
Discover and bulk import existing cloud resources into Terraform using declarative search queries.

terraform-stacks
Orchestrate multi-component infrastructure across environments with HashiCorp Terraform Stacks.

terraform-style-guide
Generate Terraform HCL code following HashiCorp's official style conventions and best practices.

terraform-test
Write and run Terraform tests to validate infrastructure configurations without breaking changes.

windows-builder
Build Windows images with Packer using WinRM and PowerShell provisioners for AWS, Azure, and VMware.

gen-paylink-govilo
Upload files to Govilo and generate paid unlock links via Bot API.