AT001
The AT001 analyzer reports likely incorrect uses of TestCase
which do not define a CheckDestroy
function. CheckDestroy
is used to verify
that test infrastructure has been removed at the end of an acceptance test.
Ignores file names that begin with data_source_
.
More information can be found at:
https://www.terraform.io/docs/extend/testing/acceptance-tests/testcase.html#checkdestroy
Flagged Code
NOTE: This analyzer does not differentiate between resource acceptance tests and data source acceptance tests. This is by design to ensure authors add the equivalent resource CheckDestroy
function to data source testing, if available.
func TestAccExampleThing_Attr1(t *testing.T) {
resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccExampleThingConfig(),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttrSet("example_thing.test", "attr1"),
),
},
},
})
}
Passing Code
func testAccCheckExampleThingDestroy(s *terraform.State) error {
for _, rs := range s.RootModule().Resources {
if rs.Type != "example_thing" {
continue
}
/* Code to check API for existence of Example Thing */
}
return nil
}
func TestAccExampleThing_Attr1(t *testing.T) {
resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckExampleThingDestroy,
Steps: []resource.TestStep{
{
Config: testAccExampleThingConfig(),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttrSet("example_thing.test", "attr1"),
),
},
},
})
}
Ignoring Reports
Singular reports can be ignored by adding the a //lintignore:AT001
Go code comment at the end of the offending line or on the line immediately proceding, e.g.
func TestAccExampleThing_Attr1(t *testing.T) {
//lintignore:AT001
resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccExampleThingConfig(),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttrSet("example_thing.test", "attr1"),
),
},
},
})
}