Skip to content

Latest commit

 

History

History

AT001

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

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.

Optional parameters:

-ignored-filename-prefixes Comma-separated list of filename prefixes to ignore, defaults to data_source_.
-ignored-filename-suffixes Comma-separated list of filename suffixes to ignore, defaults to none.

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"),
                ),
            },
        },
    })
}