Skip to content

Commit c1eaf47

Browse files
authored
test: move e2e tests next to tested code (#850)
- Move the e2e tests are next to the code it is testing. - Exclude test utils from code coverage.
1 parent 834e485 commit c1eaf47

38 files changed

+374
-370
lines changed

.github/workflows/test.yml

+4-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
with:
1616
go-version-file: go.mod
1717

18-
- run: make test TESTARGS=-coverprofile=coverage.txt
18+
- run: go test -v -timeout=30s -parallel=8 -coverprofile=coverage.txt -coverpkg=./... ./...
1919

2020
- uses: codecov/codecov-action@v3
2121
with:
@@ -69,12 +69,13 @@ jobs:
6969
echo TF_ACC_PROVIDER_NAMESPACE="hashicorp" >> $GITHUB_ENV
7070
echo TF_ACC_PROVIDER_HOST="registry.opentofu.org" >> $GITHUB_ENV
7171
72-
- run: make testacc TESTARGS="-coverprofile=coverage.txt -coverpkg=./..."
72+
- run: go test -v -timeout=30m -parallel=8 -coverprofile=coverage.txt -coverpkg=./... ./...
7373
env:
7474
# Domain must be available in the account running the tests. This domain is
7575
# available in the account running the public integration tests.
7676
CERT_DOMAIN: hc-integrations-test.de
7777

78+
TF_ACC: 1
7879
TF_LOG: DEBUG
7980
TF_LOG_PATH_MASK: test-%s.log
8081

@@ -86,4 +87,4 @@ jobs:
8687
if: always()
8788
with:
8889
name: debug-logs-${{ matrix.tool }}-${{ matrix.version }}
89-
path: internal/e2etests/**/*.log
90+
path: internal/**/test-*.log

codecov.yml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
ignore:
2+
- "**/test*/" # Ignore test packages that start with 'test'
3+
- "**/testing.go" # Ignore resource shared test functions

internal/e2etests/certificate/data_source_test.go internal/certificate/data_source_test.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"testing"
66

77
"github.com/hetznercloud/terraform-provider-hcloud/internal/certificate"
8-
"github.com/hetznercloud/terraform-provider-hcloud/internal/e2etests"
8+
"github.com/hetznercloud/terraform-provider-hcloud/internal/teste2e"
99

1010
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
1111
"github.com/hetznercloud/terraform-provider-hcloud/internal/testsupport"
@@ -30,8 +30,8 @@ func TestAccHcloudDataSourceCertificateTest(t *testing.T) {
3030
certificateBySel.SetRName("certificate_by_sel")
3131

3232
resource.ParallelTest(t, resource.TestCase{
33-
PreCheck: e2etests.PreCheck(t),
34-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
33+
PreCheck: teste2e.PreCheck(t),
34+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
3535
CheckDestroy: testsupport.CheckResourcesDestroyed(certificate.ResourceType, certificate.ByID(t, nil)),
3636
Steps: []resource.TestStep{
3737
{
@@ -78,8 +78,8 @@ func TestAccHcloudDataSourceCertificateListTest(t *testing.T) {
7878

7979
tmplMan := testtemplate.Manager{}
8080
resource.ParallelTest(t, resource.TestCase{
81-
PreCheck: e2etests.PreCheck(t),
82-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
81+
PreCheck: teste2e.PreCheck(t),
82+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
8383
CheckDestroy: testsupport.CheckResourcesDestroyed(certificate.ResourceType, certificate.ByID(t, nil)),
8484
Steps: []resource.TestStep{
8585
{

internal/e2etests/certificate/resource_test.go internal/certificate/resource_test.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
"testing"
77

88
"github.com/hetznercloud/terraform-provider-hcloud/internal/certificate"
9-
"github.com/hetznercloud/terraform-provider-hcloud/internal/e2etests"
9+
"github.com/hetznercloud/terraform-provider-hcloud/internal/teste2e"
1010

1111
"github.com/hashicorp/terraform-plugin-testing/helper/acctest"
1212
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
@@ -30,8 +30,8 @@ func TestCertificateResource_Uploaded_Basic(t *testing.T) {
3030
tmplMan := testtemplate.Manager{}
3131
// Not parallel because number of certificates per domain is limited
3232
resource.Test(t, resource.TestCase{
33-
PreCheck: e2etests.PreCheck(t),
34-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
33+
PreCheck: teste2e.PreCheck(t),
34+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
3535
CheckDestroy: testsupport.CheckResourcesDestroyed(certificate.UploadedResourceType, certificate.ByID(t, &cert)),
3636
Steps: []resource.TestStep{
3737
{
@@ -77,8 +77,8 @@ func TestCertificateResource_Uploaded_ChangeCertRequiresNewResource(t *testing.T
7777
tmplMan := testtemplate.Manager{}
7878
// Not parallel because number of certificates per domain is limited
7979
resource.Test(t, resource.TestCase{
80-
PreCheck: e2etests.PreCheck(t),
81-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
80+
PreCheck: teste2e.PreCheck(t),
81+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
8282
CheckDestroy: testsupport.CheckResourcesDestroyed(certificate.UploadedResourceType, certificate.ByID(t, &cert)),
8383
Steps: []resource.TestStep{
8484
{
@@ -132,8 +132,8 @@ func TestCertificateResource_Managed_Basic(t *testing.T) {
132132
tmplMan := testtemplate.Manager{}
133133
// Not parallel because number of certificates per domain is limited
134134
resource.Test(t, resource.TestCase{
135-
PreCheck: e2etests.PreCheck(t),
136-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
135+
PreCheck: teste2e.PreCheck(t),
136+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
137137
CheckDestroy: testsupport.CheckResourcesDestroyed(certificate.ManagedResourceType, certificate.ByID(t, &cert)),
138138
Steps: []resource.TestStep{
139139
{

internal/e2etests/datacenter/data_source_test.go internal/datacenter/data_source_test.go

+9-9
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import (
66
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
77

88
"github.com/hetznercloud/terraform-provider-hcloud/internal/datacenter"
9-
"github.com/hetznercloud/terraform-provider-hcloud/internal/e2etests"
9+
"github.com/hetznercloud/terraform-provider-hcloud/internal/teste2e"
1010
"github.com/hetznercloud/terraform-provider-hcloud/internal/testtemplate"
1111
)
1212

@@ -22,8 +22,8 @@ func TestAccHcloudDataSourceDatacenterTest(t *testing.T) {
2222
}
2323
dcByID.SetRName("dc_by_id")
2424
resource.ParallelTest(t, resource.TestCase{
25-
PreCheck: e2etests.PreCheck(t),
26-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
25+
PreCheck: teste2e.PreCheck(t),
26+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
2727
Steps: []resource.TestStep{
2828
{
2929
Config: tmplMan.Render(t,
@@ -55,7 +55,7 @@ func TestAccHcloudDataSourceDatacenter_UpgradePluginFramework(t *testing.T) {
5555
}
5656
dcByID.SetRName("dc_by_id")
5757
resource.ParallelTest(t, resource.TestCase{
58-
PreCheck: e2etests.PreCheck(t),
58+
PreCheck: teste2e.PreCheck(t),
5959
Steps: []resource.TestStep{
6060
{
6161
ExternalProviders: map[string]resource.ExternalProvider{
@@ -73,7 +73,7 @@ func TestAccHcloudDataSourceDatacenter_UpgradePluginFramework(t *testing.T) {
7373
),
7474
},
7575
{
76-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
76+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
7777

7878
Config: tmplMan.Render(t,
7979
"testdata/d/hcloud_datacenter", dcByName,
@@ -94,8 +94,8 @@ func TestAccHcloudDataSourceDatacentersTest(t *testing.T) {
9494
datacentersD := &datacenter.DDataList{}
9595
datacentersD.SetRName("ds")
9696
resource.ParallelTest(t, resource.TestCase{
97-
PreCheck: e2etests.PreCheck(t),
98-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
97+
PreCheck: teste2e.PreCheck(t),
98+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
9999
Steps: []resource.TestStep{
100100
{
101101
Config: tmplMan.Render(t,
@@ -131,7 +131,7 @@ func TestAccHcloudDataSourceDatacenters_UpgradePluginFramework(t *testing.T) {
131131
datacentersD := &datacenter.DDataList{}
132132
datacentersD.SetRName("ds")
133133
resource.ParallelTest(t, resource.TestCase{
134-
PreCheck: e2etests.PreCheck(t),
134+
PreCheck: teste2e.PreCheck(t),
135135
Steps: []resource.TestStep{
136136
{
137137
ExternalProviders: map[string]resource.ExternalProvider{
@@ -147,7 +147,7 @@ func TestAccHcloudDataSourceDatacenters_UpgradePluginFramework(t *testing.T) {
147147
),
148148
},
149149
{
150-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
150+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
151151

152152
Config: tmplMan.Render(t,
153153
"testdata/d/hcloud_datacenters", datacentersD,

internal/e2etests/firewall/attachment_resource_test.go internal/firewall/attachment_resource_test.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
package firewall
1+
package firewall_test
22

33
import (
44
"testing"
55

66
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
77

88
"github.com/hetznercloud/hcloud-go/hcloud"
9-
"github.com/hetznercloud/terraform-provider-hcloud/internal/e2etests"
109
"github.com/hetznercloud/terraform-provider-hcloud/internal/firewall"
1110
"github.com/hetznercloud/terraform-provider-hcloud/internal/server"
11+
"github.com/hetznercloud/terraform-provider-hcloud/internal/teste2e"
1212
"github.com/hetznercloud/terraform-provider-hcloud/internal/testsupport"
1313
"github.com/hetznercloud/terraform-provider-hcloud/internal/testtemplate"
1414
)
@@ -22,8 +22,8 @@ func TestAttachmentResource_Servers(t *testing.T) {
2222
fwRes := firewall.NewRData(t, "basic_firewall", nil, nil)
2323
srvRes := &server.RData{
2424
Name: "test-server",
25-
Type: e2etests.TestServerType,
26-
Image: e2etests.TestImage,
25+
Type: teste2e.TestServerType,
26+
Image: teste2e.TestImage,
2727
}
2828
srvRes.SetRName("test_server")
2929

@@ -33,8 +33,8 @@ func TestAttachmentResource_Servers(t *testing.T) {
3333
tmplMan := testtemplate.Manager{}
3434
// TODO: Move to parallel test once API endpoint supports higher parallelism
3535
resource.Test(t, resource.TestCase{
36-
PreCheck: e2etests.PreCheck(t),
37-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
36+
PreCheck: teste2e.PreCheck(t),
37+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
3838
CheckDestroy: resource.ComposeAggregateTestCheckFunc(
3939
testsupport.CheckResourcesDestroyed(server.ResourceType, server.ByID(t, &srv)),
4040
testsupport.CheckResourcesDestroyed(firewall.ResourceType, firewall.ByID(t, &fw)),
@@ -65,8 +65,8 @@ func TestAttachmentResource_LabelSelectors(t *testing.T) {
6565
fwRes := firewall.NewRData(t, "basic_firewall", nil, nil)
6666
srvRes := &server.RData{
6767
Name: "test-server",
68-
Type: e2etests.TestServerType,
69-
Image: e2etests.TestImage,
68+
Type: teste2e.TestServerType,
69+
Image: teste2e.TestImage,
7070
Labels: map[string]string{
7171
"firewall-attachment": "test-server",
7272
},
@@ -79,8 +79,8 @@ func TestAttachmentResource_LabelSelectors(t *testing.T) {
7979
tmplMan := testtemplate.Manager{}
8080
// TODO: Move to parallel test once API endpoint supports higher parallelism
8181
resource.Test(t, resource.TestCase{
82-
PreCheck: e2etests.PreCheck(t),
83-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
82+
PreCheck: teste2e.PreCheck(t),
83+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
8484
CheckDestroy: resource.ComposeAggregateTestCheckFunc(
8585
testsupport.CheckResourcesDestroyed(server.ResourceType, server.ByID(t, &srv)),
8686
testsupport.CheckResourcesDestroyed(firewall.ResourceType, firewall.ByID(t, &fw)),

internal/e2etests/firewall/data_source_test.go internal/firewall/data_source_test.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
package firewall
1+
package firewall_test
22

33
import (
44
"fmt"
55
"testing"
66

77
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
88

9-
"github.com/hetznercloud/terraform-provider-hcloud/internal/e2etests"
109
"github.com/hetznercloud/terraform-provider-hcloud/internal/firewall"
10+
"github.com/hetznercloud/terraform-provider-hcloud/internal/teste2e"
1111
"github.com/hetznercloud/terraform-provider-hcloud/internal/testsupport"
1212
"github.com/hetznercloud/terraform-provider-hcloud/internal/testtemplate"
1313
)
@@ -32,8 +32,8 @@ func TestAccHcloudDataSourceFirewallTest(t *testing.T) {
3232

3333
// TODO: Move to parallel test once API endpoint supports higher parallelism
3434
resource.Test(t, resource.TestCase{
35-
PreCheck: e2etests.PreCheck(t),
36-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
35+
PreCheck: teste2e.PreCheck(t),
36+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
3737
CheckDestroy: testsupport.CheckResourcesDestroyed(firewall.ResourceType, firewall.ByID(t, nil)),
3838
Steps: []resource.TestStep{
3939
{
@@ -78,8 +78,8 @@ func TestAccHcloudDataSourceFirewallListTest(t *testing.T) {
7878
tmplMan := testtemplate.Manager{}
7979
// TODO: Move to parallel test once API endpoint supports higher parallelism
8080
resource.Test(t, resource.TestCase{
81-
PreCheck: e2etests.PreCheck(t),
82-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
81+
PreCheck: teste2e.PreCheck(t),
82+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
8383
CheckDestroy: testsupport.CheckResourcesDestroyed(firewall.ResourceType, firewall.ByID(t, nil)),
8484
Steps: []resource.TestStep{
8585
{

internal/e2etests/firewall/resource_test.go internal/firewall/resource_test.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package firewall
1+
package firewall_test
22

33
import (
44
"fmt"
@@ -8,8 +8,8 @@ import (
88
"github.com/stretchr/testify/assert"
99

1010
"github.com/hetznercloud/hcloud-go/hcloud"
11-
"github.com/hetznercloud/terraform-provider-hcloud/internal/e2etests"
1211
"github.com/hetznercloud/terraform-provider-hcloud/internal/firewall"
12+
"github.com/hetznercloud/terraform-provider-hcloud/internal/teste2e"
1313
"github.com/hetznercloud/terraform-provider-hcloud/internal/testsupport"
1414
"github.com/hetznercloud/terraform-provider-hcloud/internal/testtemplate"
1515
)
@@ -68,8 +68,8 @@ func TestFirewallResource_Basic(t *testing.T) {
6868
tmplMan := testtemplate.Manager{}
6969
// TODO: Move to parallel test once API endpoint supports higher parallelism
7070
resource.Test(t, resource.TestCase{
71-
PreCheck: e2etests.PreCheck(t),
72-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
71+
PreCheck: teste2e.PreCheck(t),
72+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
7373
CheckDestroy: testsupport.CheckResourcesDestroyed(firewall.ResourceType, firewall.ByID(t, &f)),
7474
Steps: []resource.TestStep{
7575
{
@@ -146,8 +146,8 @@ func TestFirewallResource_ApplyTo(t *testing.T) {
146146
tmplMan := testtemplate.Manager{}
147147
// TODO: Move to parallel test once API endpoint is fixed
148148
resource.Test(t, resource.TestCase{
149-
PreCheck: e2etests.PreCheck(t),
150-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
149+
PreCheck: teste2e.PreCheck(t),
150+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
151151
CheckDestroy: testsupport.CheckResourcesDestroyed(firewall.ResourceType, firewall.ByID(t, &f)),
152152
Steps: []resource.TestStep{
153153
{
@@ -194,8 +194,8 @@ func TestFirewallResource_SourceIPs_IPv6Comparison(t *testing.T) {
194194

195195
// TODO: Move to parallel test once API endpoint supports higher parallelism
196196
resource.Test(t, resource.TestCase{
197-
PreCheck: e2etests.PreCheck(t),
198-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
197+
PreCheck: teste2e.PreCheck(t),
198+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
199199
CheckDestroy: testsupport.CheckResourcesDestroyed(firewall.ResourceType, firewall.ByID(t, &f)),
200200
Steps: []resource.TestStep{
201201
{
@@ -227,8 +227,8 @@ func TestFirewallResource_DestinationIPs_IPv6Comparison(t *testing.T) {
227227

228228
// TODO: Move to parallel test once API endpoint supports higher parallelism
229229
resource.Test(t, resource.TestCase{
230-
PreCheck: e2etests.PreCheck(t),
231-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
230+
PreCheck: teste2e.PreCheck(t),
231+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
232232
CheckDestroy: testsupport.CheckResourcesDestroyed(firewall.ResourceType, firewall.ByID(t, &f)),
233233
Steps: []resource.TestStep{
234234
{

internal/e2etests/floatingip/data_source_test.go internal/floatingip/data_source_test.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import (
66
"testing"
77

88
"github.com/hashicorp/terraform-plugin-testing/helper/acctest"
9-
"github.com/hetznercloud/terraform-provider-hcloud/internal/e2etests"
109
"github.com/hetznercloud/terraform-provider-hcloud/internal/floatingip"
10+
"github.com/hetznercloud/terraform-provider-hcloud/internal/teste2e"
1111

1212
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
1313
"github.com/hetznercloud/terraform-provider-hcloud/internal/testsupport"
@@ -23,7 +23,7 @@ func TestAccHcloudDataSourceFloatingIPTest(t *testing.T) {
2323
Labels: map[string]string{
2424
"key": strconv.Itoa(acctest.RandInt()),
2525
},
26-
HomeLocationName: e2etests.TestLocationName,
26+
HomeLocationName: teste2e.TestLocationName,
2727
}
2828
res.SetRName("floatingip-ds-test")
2929
floatingipByName := &floatingip.DData{
@@ -40,8 +40,8 @@ func TestAccHcloudDataSourceFloatingIPTest(t *testing.T) {
4040
floatingipBySel.SetRName("floatingip_by_sel")
4141

4242
resource.ParallelTest(t, resource.TestCase{
43-
PreCheck: e2etests.PreCheck(t),
44-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
43+
PreCheck: teste2e.PreCheck(t),
44+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
4545
CheckDestroy: testsupport.CheckResourcesDestroyed(floatingip.ResourceType, floatingip.ByID(t, nil)),
4646
Steps: []resource.TestStep{
4747
{
@@ -82,7 +82,7 @@ func TestAccHcloudDataSourceFloatingIPListTest(t *testing.T) {
8282
Labels: map[string]string{
8383
"key": strconv.Itoa(acctest.RandInt()),
8484
},
85-
HomeLocationName: e2etests.TestLocationName,
85+
HomeLocationName: teste2e.TestLocationName,
8686
}
8787
res.SetRName("floatingip-ds-test")
8888

@@ -96,8 +96,8 @@ func TestAccHcloudDataSourceFloatingIPListTest(t *testing.T) {
9696

9797
tmplMan := testtemplate.Manager{}
9898
resource.ParallelTest(t, resource.TestCase{
99-
PreCheck: e2etests.PreCheck(t),
100-
ProtoV6ProviderFactories: e2etests.ProtoV6ProviderFactories(),
99+
PreCheck: teste2e.PreCheck(t),
100+
ProtoV6ProviderFactories: teste2e.ProtoV6ProviderFactories(),
101101
CheckDestroy: testsupport.CheckResourcesDestroyed(floatingip.ResourceType, floatingip.ByID(t, nil)),
102102
Steps: []resource.TestStep{
103103
{

0 commit comments

Comments
 (0)