Skip to content

Commit 59af460

Browse files
authored
Merge pull request #3005 from stephenfin/more-skips
tests: Add skips for feature- or configuration-dependent tests
2 parents ef98774 + 79b1324 commit 59af460

File tree

20 files changed

+105
-97
lines changed

20 files changed

+105
-97
lines changed

internal/acceptance/clients/clients.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ func NewBlockStorageV2NoAuthClient() (*gophercloud.ServiceClient, error) {
218218
}
219219

220220
// NewBlockStorageV3NoAuthClient returns a noauth *ServiceClient for
221-
// making calls to the OpenStack Block Storage v2 API. An error will be
221+
// making calls to the OpenStack Block Storage v3 API. An error will be
222222
// returned if client creation was not possible.
223223
func NewBlockStorageV3NoAuthClient() (*gophercloud.ServiceClient, error) {
224224
client, err := blockstorageNoAuth.NewClient(gophercloud.AuthOptions{

internal/acceptance/clients/conditions.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,24 @@ func RequireNovaNetwork(t *testing.T) {
8383
}
8484
}
8585

86-
// RequireIronicHTTPBasic will restric a test to be only run in
87-
// environments that have Ironic using http_basic.
86+
// RequireCinderNoAuth will restrict a test to be only run in environments that
87+
// have Cinder using noauth.
88+
func RequireCinderNoAuth(t *testing.T) {
89+
if os.Getenv("CINDER_ENDPOINT") == "" || os.Getenv("OS_USERNAME") == "" {
90+
t.Skip("this test requires Cinder using noauth, set OS_USERNAME and CINDER_ENDPOINT")
91+
}
92+
}
93+
94+
// RequireIronicNoAuth will restrict a test to be only run in environments that
95+
// have Ironic using noauth.
96+
func RequireIronicNoAuth(t *testing.T) {
97+
if os.Getenv("IRONIC_ENDPOINT") == "" || os.Getenv("OS_USERNAME") == "" {
98+
t.Skip("this test requires IRONIC using noauth, set OS_USERNAME and IRONIC_ENDPOINT")
99+
}
100+
}
101+
102+
// RequireIronicHTTPBasic will restrict a test to be only run in environments
103+
// that have Ironic using http_basic.
88104
func RequireIronicHTTPBasic(t *testing.T) {
89105
if os.Getenv("IRONIC_ENDPOINT") == "" || os.Getenv("OS_USERNAME") == "" || os.Getenv("OS_PASSWORD") == "" {
90106
t.Skip("this test requires Ironic using http_basic, set OS_USERNAME, OS_PASSWORD and IRONIC_ENDPOINT")

internal/acceptance/openstack/baremetal/noauth/allocations_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515

1616
func TestAllocationsCreateDestroy(t *testing.T) {
1717
clients.RequireLong(t)
18+
clients.RequireIronicNoAuth(t)
1819

1920
client, err := clients.NewBareMetalV1NoAuthClient()
2021
th.AssertNoErr(t, err)

internal/acceptance/openstack/baremetal/noauth/nodes_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616

1717
func TestNodesCreateDestroy(t *testing.T) {
1818
clients.RequireLong(t)
19+
clients.RequireIronicNoAuth(t)
1920

2021
client, err := clients.NewBareMetalV1NoAuthClient()
2122
th.AssertNoErr(t, err)
@@ -48,6 +49,7 @@ func TestNodesCreateDestroy(t *testing.T) {
4849

4950
func TestNodesUpdate(t *testing.T) {
5051
clients.RequireLong(t)
52+
clients.RequireIronicNoAuth(t)
5153

5254
client, err := clients.NewBareMetalV1NoAuthClient()
5355
th.AssertNoErr(t, err)
@@ -72,6 +74,7 @@ func TestNodesUpdate(t *testing.T) {
7274
func TestNodesRAIDConfig(t *testing.T) {
7375
clients.SkipReleasesBelow(t, "stable/ussuri")
7476
clients.RequireLong(t)
77+
clients.RequireIronicNoAuth(t)
7578

7679
client, err := clients.NewBareMetalV1NoAuthClient()
7780
th.AssertNoErr(t, err)

internal/acceptance/openstack/baremetal/noauth/ports_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616

1717
func TestPortsCreateDestroy(t *testing.T) {
1818
clients.RequireLong(t)
19+
clients.RequireIronicNoAuth(t)
1920

2021
client, err := clients.NewBareMetalV1NoAuthClient()
2122
th.AssertNoErr(t, err)
@@ -50,6 +51,7 @@ func TestPortsCreateDestroy(t *testing.T) {
5051

5152
func TestPortsUpdate(t *testing.T) {
5253
clients.RequireLong(t)
54+
clients.RequireIronicNoAuth(t)
5355

5456
client, err := clients.NewBareMetalV1NoAuthClient()
5557
th.AssertNoErr(t, err)

internal/acceptance/openstack/blockstorage/noauth/snapshots_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import (
1212
)
1313

1414
func TestSnapshotsList(t *testing.T) {
15+
clients.RequireCinderNoAuth(t)
16+
1517
client, err := clients.NewBlockStorageV3NoAuthClient()
1618
if err != nil {
1719
t.Fatalf("Unable to create a blockstorage client: %v", err)
@@ -33,6 +35,8 @@ func TestSnapshotsList(t *testing.T) {
3335
}
3436

3537
func TestSnapshotsCreateDelete(t *testing.T) {
38+
clients.RequireCinderNoAuth(t)
39+
3640
client, err := clients.NewBlockStorageV3NoAuthClient()
3741
if err != nil {
3842
t.Fatalf("Unable to create a blockstorage client: %v", err)

internal/acceptance/openstack/blockstorage/noauth/volumes_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import (
1212
)
1313

1414
func TestVolumesList(t *testing.T) {
15+
clients.RequireCinderNoAuth(t)
16+
1517
client, err := clients.NewBlockStorageV3NoAuthClient()
1618
if err != nil {
1719
t.Fatalf("Unable to create a blockstorage client: %v", err)
@@ -33,6 +35,8 @@ func TestVolumesList(t *testing.T) {
3335
}
3436

3537
func TestVolumesCreateDestroy(t *testing.T) {
38+
clients.RequireCinderNoAuth(t)
39+
3640
client, err := clients.NewBlockStorageV3NoAuthClient()
3741
if err != nil {
3842
t.Fatalf("Unable to create blockstorage client: %v", err)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package v2
2+
3+
import (
4+
"context"
5+
"testing"
6+
7+
"github.com/gophercloud/gophercloud/v2"
8+
"github.com/gophercloud/gophercloud/v2/openstack/common/extensions"
9+
)
10+
11+
// RequireNeutronExtension will restrict a test to be only run in environments
12+
// with the requested Neutron extension present.
13+
func RequireNeutronExtension(t *testing.T, client *gophercloud.ServiceClient, extension string) {
14+
_, err := extensions.Get(context.TODO(), client, extension).Extract()
15+
if err != nil {
16+
t.Skipf("this test requires %s Neutron extension", extension)
17+
}
18+
}

internal/acceptance/openstack/networking/v2/extensions/dns/dns_test.go

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
1212
"github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2/extensions/layer3"
1313
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
14-
"github.com/gophercloud/gophercloud/v2/openstack/common/extensions"
1514
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/dns"
1615
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/layer3/floatingips"
1716
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/networks"
@@ -26,11 +25,8 @@ func TestDNSPortCRUDL(t *testing.T) {
2625
client, err := clients.NewNetworkV2Client()
2726
th.AssertNoErr(t, err)
2827

29-
extension, err := extensions.Get(context.TODO(), client, "dns-integration").Extract()
30-
if err != nil {
31-
t.Skip("This test requires dns-integration Neutron extension")
32-
}
33-
tools.PrintResource(t, extension)
28+
// Skip these tests if we don't have the required extension
29+
networking.RequireNeutronExtension(t, client, "dns-integration")
3430

3531
// Create Network
3632
networkDNSDomain := "local."
@@ -153,11 +149,8 @@ func TestDNSFloatingIPCRDL(t *testing.T) {
153149
client, err := clients.NewNetworkV2Client()
154150
th.AssertNoErr(t, err)
155151

156-
extension, err := extensions.Get(context.TODO(), client, "dns-integration").Extract()
157-
if err != nil {
158-
t.Skip("This test requires dns-integration Neutron extension")
159-
}
160-
tools.PrintResource(t, extension)
152+
// Skip these tests if we don't have the required extension
153+
networking.RequireNeutronExtension(t, client, "dns-integration")
161154

162155
choices, err := clients.AcceptanceTestChoicesFromEnv()
163156
th.AssertNoErr(t, err)
@@ -215,11 +208,8 @@ func TestDNSNetwork(t *testing.T) {
215208
client, err := clients.NewNetworkV2Client()
216209
th.AssertNoErr(t, err)
217210

218-
extension, err := extensions.Get(context.TODO(), client, "dns-integration").Extract()
219-
if err != nil {
220-
t.Skip("This test requires dns-integration Neutron extension")
221-
}
222-
tools.PrintResource(t, extension)
211+
// Skip these tests if we don't have the required extension
212+
networking.RequireNeutronExtension(t, client, "dns-integration")
223213

224214
// Create Network
225215
networkDNSDomain := "local."

internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/groups_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"testing"
88

99
"github.com/gophercloud/gophercloud/v2/internal/acceptance/clients"
10+
networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
1011
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
1112
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/fwaas_v2/groups"
1213
th "github.com/gophercloud/gophercloud/v2/testhelper"
@@ -20,6 +21,9 @@ func TestGroupCRUD(t *testing.T) {
2021
client, err := clients.NewNetworkV2Client()
2122
th.AssertNoErr(t, err)
2223

24+
// Skip these tests if we don't have the required extension
25+
networking.RequireNeutronExtension(t, client, "fwaas_v2")
26+
2327
createdGroup, err := CreateGroup(t, client)
2428
th.AssertNoErr(t, err)
2529
defer DeleteGroup(t, client, createdGroup.ID)

internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/policy_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"testing"
88

99
"github.com/gophercloud/gophercloud/v2/internal/acceptance/clients"
10+
networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
1011
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
1112
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/fwaas_v2/policies"
1213
th "github.com/gophercloud/gophercloud/v2/testhelper"
@@ -20,6 +21,9 @@ func TestPolicyCRUD(t *testing.T) {
2021
client, err := clients.NewNetworkV2Client()
2122
th.AssertNoErr(t, err)
2223

24+
// Skip these tests if we don't have the required extension
25+
networking.RequireNeutronExtension(t, client, "fwaas_v2")
26+
2327
// Create First Rule. This will be used as part of the Policy creation
2428
rule, err := CreateRule(t, client)
2529
th.AssertNoErr(t, err)

internal/acceptance/openstack/networking/v2/extensions/fwaas_v2/rule_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"testing"
1010

1111
"github.com/gophercloud/gophercloud/v2/internal/acceptance/clients"
12+
networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
1213
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
1314
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/fwaas_v2/rules"
1415
th "github.com/gophercloud/gophercloud/v2/testhelper"
@@ -22,6 +23,9 @@ func TestRuleCRUD(t *testing.T) {
2223
client, err := clients.NewNetworkV2Client()
2324
th.AssertNoErr(t, err)
2425

26+
// Skip these tests if we don't have the required extension
27+
networking.RequireNeutronExtension(t, client, "fwaas_v2")
28+
2529
rule, err := CreateRule(t, client)
2630
th.AssertNoErr(t, err)
2731
defer DeleteRule(t, client, rule.ID)

internal/acceptance/openstack/networking/v2/extensions/layer3/l3_scheduling_test.go

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ import (
77
"testing"
88

99
"github.com/gophercloud/gophercloud/v2/internal/acceptance/clients"
10-
networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
10+
v2 "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
1111
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
12-
"github.com/gophercloud/gophercloud/v2/openstack/common/extensions"
1312
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/agents"
1413
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/layer3/routers"
1514
th "github.com/gophercloud/gophercloud/v2/testhelper"
@@ -19,18 +18,16 @@ func TestLayer3RouterScheduling(t *testing.T) {
1918
client, err := clients.NewNetworkV2Client()
2019
th.AssertNoErr(t, err)
2120

22-
_, err = extensions.Get(context.TODO(), client, "l3_agent_scheduler").Extract()
23-
if err != nil {
24-
t.Skip("Extension l3_agent_scheduler not present")
25-
}
21+
// Skip these tests if we don't have the required extension
22+
v2.RequireNeutronExtension(t, client, "l3_agent_scheduler")
2623

27-
network, err := networking.CreateNetwork(t, client)
24+
network, err := v2.CreateNetwork(t, client)
2825
th.AssertNoErr(t, err)
29-
defer networking.DeleteNetwork(t, client, network.ID)
26+
defer v2.DeleteNetwork(t, client, network.ID)
3027

31-
subnet, err := networking.CreateSubnet(t, client, network.ID)
28+
subnet, err := v2.CreateSubnet(t, client, network.ID)
3229
th.AssertNoErr(t, err)
33-
defer networking.DeleteSubnet(t, client, subnet.ID)
30+
defer v2.DeleteSubnet(t, client, subnet.ID)
3431

3532
router, err := CreateRouter(t, client, network.ID)
3633
th.AssertNoErr(t, err)

internal/acceptance/openstack/networking/v2/extensions/mtu/mtu_test.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,8 @@ func TestMTUNetworkCRUDL(t *testing.T) {
2222
client, err := clients.NewNetworkV2Client()
2323
th.AssertNoErr(t, err)
2424

25-
extension, err := extensions.Get(context.TODO(), client, "net-mtu").Extract()
26-
if err != nil {
27-
t.Skip("This test requires net-mtu Neutron extension")
28-
}
29-
tools.PrintResource(t, extension)
25+
// Skip these tests if we don't have the required extension
26+
networking.RequireNeutronExtension(t, client, "net-mtu")
3027

3128
mtuWritable, _ := extensions.Get(context.TODO(), client, "net-mtu-writable").Extract()
3229
tools.PrintResource(t, mtuWritable)

internal/acceptance/openstack/networking/v2/extensions/qos/policies/policies_test.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import (
77
"testing"
88

99
"github.com/gophercloud/gophercloud/v2/internal/acceptance/clients"
10+
v2 "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
1011
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
11-
"github.com/gophercloud/gophercloud/v2/openstack/common/extensions"
1212
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/qos/policies"
1313
th "github.com/gophercloud/gophercloud/v2/testhelper"
1414
)
@@ -17,11 +17,8 @@ func TestPoliciesCRUD(t *testing.T) {
1717
client, err := clients.NewNetworkV2Client()
1818
th.AssertNoErr(t, err)
1919

20-
extension, err := extensions.Get(context.TODO(), client, "qos").Extract()
21-
if err != nil {
22-
t.Skip("This test requires qos Neutron extension")
23-
}
24-
tools.PrintResource(t, extension)
20+
// Skip these tests if we don't have the required extension
21+
v2.RequireNeutronExtension(t, client, "qos")
2522

2623
// Create a QoS policy.
2724
policy, err := CreateQoSPolicy(t, client)

internal/acceptance/openstack/networking/v2/extensions/qos/rules/rules_test.go

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ import (
77
"testing"
88

99
"github.com/gophercloud/gophercloud/v2/internal/acceptance/clients"
10+
v2 "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
1011
accpolicies "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2/extensions/qos/policies"
1112
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
12-
"github.com/gophercloud/gophercloud/v2/openstack/common/extensions"
1313
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/qos/policies"
1414
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/qos/rules"
1515
th "github.com/gophercloud/gophercloud/v2/testhelper"
@@ -19,11 +19,8 @@ func TestBandwidthLimitRulesCRUD(t *testing.T) {
1919
client, err := clients.NewNetworkV2Client()
2020
th.AssertNoErr(t, err)
2121

22-
extension, err := extensions.Get(context.TODO(), client, "qos").Extract()
23-
if err != nil {
24-
t.Skip("This test requires qos Neutron extension")
25-
}
26-
tools.PrintResource(t, extension)
22+
// Skip these tests if we don't have the required extension
23+
v2.RequireNeutronExtension(t, client, "qos")
2724

2825
// Create a QoS policy
2926
policy, err := accpolicies.CreateQoSPolicy(t, client)
@@ -68,11 +65,8 @@ func TestDSCPMarkingRulesCRUD(t *testing.T) {
6865
client, err := clients.NewNetworkV2Client()
6966
th.AssertNoErr(t, err)
7067

71-
extension, err := extensions.Get(context.TODO(), client, "qos").Extract()
72-
if err != nil {
73-
t.Skip("This test requires qos Neutron extension")
74-
}
75-
tools.PrintResource(t, extension)
68+
// Skip these tests if we don't have the required extension
69+
v2.RequireNeutronExtension(t, client, "qos")
7670

7771
// Create a QoS policy
7872
policy, err := accpolicies.CreateQoSPolicy(t, client)
@@ -117,11 +111,8 @@ func TestMinimumBandwidthRulesCRUD(t *testing.T) {
117111
client, err := clients.NewNetworkV2Client()
118112
th.AssertNoErr(t, err)
119113

120-
extension, err := extensions.Get(context.TODO(), client, "qos").Extract()
121-
if err != nil {
122-
t.Skip("This test requires qos Neutron extension")
123-
}
124-
tools.PrintResource(t, extension)
114+
// Skip these tests if we don't have the required extension
115+
v2.RequireNeutronExtension(t, client, "qos")
125116

126117
// Create a QoS policy
127118
policy, err := accpolicies.CreateQoSPolicy(t, client)

internal/acceptance/openstack/networking/v2/extensions/qos/ruletypes/ruletypes_test.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import (
77
"testing"
88

99
"github.com/gophercloud/gophercloud/v2/internal/acceptance/clients"
10+
networking "github.com/gophercloud/gophercloud/v2/internal/acceptance/openstack/networking/v2"
1011
"github.com/gophercloud/gophercloud/v2/internal/acceptance/tools"
11-
"github.com/gophercloud/gophercloud/v2/openstack/common/extensions"
1212
"github.com/gophercloud/gophercloud/v2/openstack/networking/v2/extensions/qos/ruletypes"
1313
)
1414

@@ -19,11 +19,8 @@ func TestRuleTypes(t *testing.T) {
1919
return
2020
}
2121

22-
extension, err := extensions.Get(context.TODO(), client, "qos").Extract()
23-
if err != nil {
24-
t.Skip("This test requires qos Neutron extension")
25-
}
26-
tools.PrintResource(t, extension)
22+
// Skip these tests if we don't have the required extension
23+
networking.RequireNeutronExtension(t, client, "qos")
2724

2825
page, err := ruletypes.ListRuleTypes(client).AllPages(context.TODO())
2926
if err != nil {

0 commit comments

Comments
 (0)