Skip to content

Commit 2483392

Browse files
GODRIVER-3445 Use Git submodules for spec tests (#1996)
1 parent 927052b commit 2483392

File tree

1,964 files changed

+122
-402164
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,964 files changed

+122
-402164
lines changed

.gitmodules

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
[submodule "specifications"]
2-
path = specifications
3-
url = git@github.com:mongodb/specifications.git
2+
path = testdata/specifications
3+
url = https://github.com/mongodb/specifications

internal/serverselector/server_selector_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func compareServers(t *testing.T, expected []*serverDesc, actual []description.S
157157
}
158158
}
159159

160-
const maxStalenessTestsDir = "../../testdata/max-staleness"
160+
var maxStalenessTestsDir = spectest.TestPath(2, "max-staleness")
161161

162162
// Test case for all max staleness spec tests.
163163
func TestMaxStalenessSpec(t *testing.T) {
@@ -176,7 +176,7 @@ func TestMaxStalenessSpec(t *testing.T) {
176176
}
177177
}
178178

179-
const selectorTestsDir = "../../testdata/server-selection/server_selection"
179+
var selectorTestsDir = spectest.TestPath(2, "server-selection")
180180

181181
func selectServers(t *testing.T, test *testCase) error {
182182
servers := make([]description.Server, 0, len(test.TopologyDescription.Servers))
@@ -321,7 +321,7 @@ func TestServerSelectionSpec(t *testing.T) {
321321
"LoadBalanced",
322322
} {
323323
for _, subdir := range [...]string{"read", "write"} {
324-
subdirPath := path.Join(topology, subdir)
324+
subdirPath := path.Join("server_selection", topology, subdir)
325325

326326
for _, file := range spectest.FindJSONFilesInDir(t,
327327
path.Join(selectorTestsDir, subdirPath)) {

internal/spectest/skip.go

Lines changed: 75 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ import "testing"
1212
// the test".
1313
var skipTests = map[string]string{
1414
"TestURIOptionsSpec/single-threaded-options.json/Valid_options_specific_to_single-threaded_drivers_are_parsed_correctly": "The Go Driver is not single-threaded.",
15-
// GODRIVER-2348: The wtimeoutMS write concern option is not supported.
16-
"TestURIOptionsSpec/concern-options.json/Valid_read_and_write_concern_are_parsed_correctly": "The wtimeoutMS write concern option is not supported",
1715

1816
// SPEC-1403: This test checks to see if the correct error is thrown when
1917
// auto encrypting with a server < 4.2. Currently, the test will fail
@@ -152,6 +150,81 @@ var skipTests = map[string]string{
152150
"TestUnifiedSpec/server-discovery-and-monitoring/unified/sharded-emit-topology-changed-before-close.json/Topology_lifecycle": "Implement GODRIVER-2967",
153151
"TestUnifiedSpec/server-discovery-and-monitoring/unified/replicaset-emit-topology-changed-before-close.json/Topology_lifecycle": "Implement GODRIVER-2967",
154152
"TestUnifiedSpec/server-discovery-and-monitoring/unified/standalone-emit-topology-changed-before-close.json/Topology_lifecycle": "Implement GODRIVER-2967",
153+
154+
// TODO(GODRIVER-2183): Socks5 Proxy Support.
155+
"TestURIOptionsSpec/proxy-options.json/proxyPort_without_proxyHost": "Implement GODRIVER-2183 for Socks5 Proxy Support",
156+
"TestURIOptionsSpec/proxy-options.json/proxyUsername_without_proxyHost": "Implement GODRIVER-2183 for Socks5 Proxy Support",
157+
"TestURIOptionsSpec/proxy-options.json/proxyPassword_without_proxyHost": "Implement GODRIVER-2183 for Socks5 Proxy Support",
158+
"TestURIOptionsSpec/proxy-options.json/all_other_proxy_options_without_proxyHost": "Implement GODRIVER-2183 for Socks5 Proxy Support",
159+
"TestURIOptionsSpec/proxy-options.json/proxyUsername_without_proxyPassword": "Implement GODRIVER-2183 for Socks5 Proxy Support",
160+
"TestURIOptionsSpec/proxy-options.json/proxyPassword_without_proxyUsername": "Implement GODRIVER-2183 for Socks5 Proxy Support",
161+
"TestURIOptionsSpec/proxy-options.json/multiple_proxyHost_parameters": "Implement GODRIVER-2183 for Socks5 Proxy Support",
162+
"TestURIOptionsSpec/proxy-options.json/multiple_proxyPort_parameters": "Implement GODRIVER-2183 for Socks5 Proxy Support",
163+
"TestURIOptionsSpec/proxy-options.json/multiple_proxyUsername_parameters": "Implement GODRIVER-2183 for Socks5 Proxy Support",
164+
"TestURIOptionsSpec/proxy-options.json/multiple_proxyPassword_parameters": "Implement GODRIVER-2183 for Socks5 Proxy Support",
165+
166+
// wtimeoutMS write concern option is not supported.
167+
"TestURIOptionsSpec/concern-options.json/Valid_read_and_write_concern_are_parsed_correctly": "wtimeoutMS is deprecated",
168+
"TestURIOptionsSpec/concern-options.json/Non-numeric_wTimeoutMS_causes_a_warning": "wtimeoutMS is deprecated",
169+
"TestURIOptionsSpec/concern-options.json/Too_low_wTimeoutMS_causes_a_warning": "wtimeoutMS is deprecated",
170+
"TestReadWriteConcernSpec/connstring/write-concern.json/wtimeoutMS_as_an_invalid_number": "wtimeoutMS is deprecated",
171+
172+
// Unsupported TLS behavior in connection strings.
173+
"TestURIOptionsSpec/tls-options.json/tlsAllowInvalidCertificates_and_tlsDisableCertificateRevocationCheck_both_present_(and_true)_raises_an_error": "unsupported connstring behavior",
174+
"TestURIOptionsSpec/tls-options.json/tlsAllowInvalidCertificates=true_and_tlsDisableCertificateRevocationCheck=false_raises_an_error": "unsupported connstring behavior",
175+
"TestURIOptionsSpec/tls-options.json/tlsAllowInvalidCertificates=false_and_tlsDisableCertificateRevocationCheck=true_raises_an_error": "unsupported connstring behavior",
176+
"TestURIOptionsSpec/tls-options.json/tlsAllowInvalidCertificates_and_tlsDisableCertificateRevocationCheck_both_present_(and_false)_raises_an_error": "unsupported connstring behavior",
177+
"TestURIOptionsSpec/tls-options.json/tlsDisableCertificateRevocationCheck_and_tlsAllowInvalidCertificates_both_present_(and_true)_raises_an_error": "unsupported connstring behavior",
178+
"TestURIOptionsSpec/tls-options.json/tlsDisableCertificateRevocationCheck=true_and_tlsAllowInvalidCertificates=false_raises_an_error": "unsupported connstring behavior",
179+
"TestURIOptionsSpec/tls-options.json/tlsDisableCertificateRevocationCheck=false_and_tlsAllowInvalidCertificates=true_raises_an_error": "unsupported connstring behavior",
180+
"TestURIOptionsSpec/tls-options.json/tlsDisableCertificateRevocationCheck_and_tlsAllowInvalidCertificates_both_present_(and_false)_raises_an_error": "unsupported connstring behavior",
181+
"TestURIOptionsSpec/tls-options.json/tlsInsecure_and_tlsDisableCertificateRevocationCheck_both_present_(and_true)_raises_an_error": "unsupported connstring behavior",
182+
"TestURIOptionsSpec/tls-options.json/tlsInsecure=true_and_tlsDisableCertificateRevocationCheck=false_raises_an_error": "unsupported connstring behavior",
183+
"TestURIOptionsSpec/tls-options.json/tlsInsecure=false_and_tlsDisableCertificateRevocationCheck=true_raises_an_error": "unsupported connstring behavior",
184+
"TestURIOptionsSpec/tls-options.json/tlsInsecure_and_tlsDisableCertificateRevocationCheck_both_present_(and_false)_raises_an_error": "unsupported connstring behavior",
185+
"TestURIOptionsSpec/tls-options.json/tlsDisableCertificateRevocationCheck_and_tlsInsecure_both_present_(and_true)_raises_an_error": "unsupported connstring behavior",
186+
"TestURIOptionsSpec/tls-options.json/tlsDisableCertificateRevocationCheck=true_and_tlsInsecure=false_raises_an_error": "unsupported connstring behavior",
187+
"TestURIOptionsSpec/tls-options.json/tlsDisableCertificateRevocationCheck=false_and_tlsInsecure=true_raises_an_error": "unsupported connstring behavior",
188+
"TestURIOptionsSpec/tls-options.json/tlsDisableCertificateRevocationCheck_and_tlsInsecure_both_present_(and_false)_raises_an_error": "unsupported connstring behavior",
189+
"TestURIOptionsSpec/tls-options.json/tlsDisableCertificateRevocationCheck_and_tlsDisableOCSPEndpointCheck_both_present_(and_true)_raises_an_error": "unsupported connstring behavior",
190+
"TestURIOptionsSpec/tls-options.json/tlsDisableCertificateRevocationCheck=true_and_tlsDisableOCSPEndpointCheck=false_raises_an_error": "unsupported connstring behavior",
191+
"TestURIOptionsSpec/tls-options.json/tlsDisableCertificateRevocationCheck=false_and_tlsDisableOCSPEndpointCheck=true_raises_an_error": "unsupported connstring behavior",
192+
"TestURIOptionsSpec/tls-options.json/tlsDisableCertificateRevocationCheck_and_tlsDisableOCSPEndpointCheck_both_present_(and_false)_raises_an_error": "unsupported connstring behavior",
193+
"TestURIOptionsSpec/tls-options.json/tlsDisableOCSPEndpointCheck_and_tlsDisableCertificateRevocationCheck_both_present_(and_true)_raises_an_error": "unsupported connstring behavior",
194+
"TestURIOptionsSpec/tls-options.json/tlsDisableOCSPEndpointCheck=true_and_tlsDisableCertificateRevocationCheck=false_raises_an_error": "unsupported connstring behavior",
195+
"TestURIOptionsSpec/tls-options.json/tlsDisableOCSPEndpointCheck=false_and_tlsDisableCertificateRevocationCheck=true_raises_an_error": "unsupported connstring behavior",
196+
"TestURIOptionsSpec/tls-options.json/tlsDisableOCSPEndpointCheck_and_tlsDisableCertificateRevocationCheck_both_present_(and_false)_raises_an_error": "unsupported connstring behavior",
197+
"TestURIOptionsSpec/tls-options.json/tlsAllowInvalidCertificates_and_tlsDisableOCSPEndpointCheck_both_present_(and_true)_raises_an_error": "unsupported connstring behavior",
198+
"TestURIOptionsSpec/tls-options.json/tlsAllowInvalidCertificates=true_and_tlsDisableOCSPEndpointCheck=false_raises_an_error": "unsupported connstring behavior",
199+
"TestURIOptionsSpec/tls-options.json/tlsAllowInvalidCertificates=false_and_tlsDisableOCSPEndpointCheck=true_raises_an_error": "unsupported connstring behavior",
200+
"TestURIOptionsSpec/tls-options.json/tlsAllowInvalidCertificates_and_tlsDisableOCSPEndpointCheck_both_present_(and_false)_raises_an_error": "unsupported connstring behavior",
201+
"TestURIOptionsSpec/tls-options.json/tlsDisableOCSPEndpointCheck_and_tlsAllowInvalidCertificates_both_present_(and_true)_raises_an_error": "unsupported connstring behavior",
202+
"TestURIOptionsSpec/tls-options.json/tlsDisableOCSPEndpointCheck=true_and_tlsAllowInvalidCertificates=false_raises_an_error": "unsupported connstring behavior",
203+
"TestURIOptionsSpec/tls-options.json/tlsDisableOCSPEndpointCheck=false_and_tlsAllowInvalidCertificates=true_raises_an_error": "unsupported connstring behavior",
204+
"TestURIOptionsSpec/tls-options.json/tlsDisableOCSPEndpointCheck_and_tlsAllowInvalidCertificates_both_present_(and_false)_raises_an_error": "unsupported connstring behavior",
205+
"TestURIOptionsSpec/tls-options.json/Invalid_tlsAllowInvalidCertificates_causes_a_warning": "unsupported connstring behavior",
206+
"TestURIOptionsSpec/tls-options.json/tlsAllowInvalidCertificates_is_parsed_correctly": "unsupported connstring behavior",
207+
"TestURIOptionsSpec/tls-options.json/tlsAllowInvalidHostnames_is_parsed_correctly": "unsupported connstring behavior",
208+
"TestURIOptionsSpec/tls-options.json/Invalid_tlsAllowInvalidHostnames_causes_a_warning": "unsupported connstring behavior",
209+
"TestURIOptionsSpec/tls-options.json/tlsInsecure_and_tlsAllowInvalidCertificates_both_present_(and_true)_raises_an_error": "unsupported connstring behavior",
210+
"TestURIOptionsSpec/tls-options.json/tlsInsecure_and_tlsAllowInvalidCertificates_both_present_(and_false)_raises_an_error": "unsupported connstring behavior",
211+
"TestURIOptionsSpec/tls-options.json/tlsAllowInvalidCertificates_and_tlsInsecure_both_present_(and_true)_raises_an_error": "unsupported connstring behavior",
212+
"TestURIOptionsSpec/tls-options.json/tlsAllowInvalidCertificates_and_tlsInsecure_both_present_(and_false)_raises_an_error": "unsupported connstring behavior",
213+
"TestURIOptionsSpec/tls-options.json/tlsInsecure_and_tlsAllowInvalidHostnames_both_present_(and_true)_raises_an_error": "unsupported connstring behavior",
214+
"TestURIOptionsSpec/tls-options.json/tlsInsecure_and_tlsAllowInvalidHostnames_both_present_(and_false)_raises_an_error": "unsupported connstring behavior",
215+
"TestURIOptionsSpec/tls-options.json/tlsAllowInvalidHostnames_and_tlsInsecure_both_present_(and_true)_raises_an_error": "unsupported connstring behavior",
216+
"TestURIOptionsSpec/tls-options.json/tlsAllowInvalidHostnames_and_tlsInsecure_both_present_(and_false)_raises_an_error": "unsupported connstring behavior",
217+
218+
// TODO(GODRIVER-2991): make delimiting slash between hosts and options
219+
// optional.
220+
"TestConnStringSpec/valid-options.json/Missing_delimiting_slash_between_hosts_and_options": "Implement GODRIVER-2991 making delimiting slash between hosts and options optional",
221+
222+
// Connstring tests violate current Go Driver behavior
223+
"TestURIOptionsSpec/connection-pool-options.json/maxConnecting=0_causes_a_warning": "unsupported behavior",
224+
"TestURIOptionsSpec/single-threaded-options.json/Invalid_serverSelectionTryOnce_causes_a_warning": "unsupported behavior",
225+
"TestConnStringSpec/valid-warnings.json/Empty_integer_option_values_are_ignored": "SPEC-1545: unsupported behavior",
226+
"TestConnStringSpec/valid-warnings.json/Empty_boolean_option_value_are_ignored": "SPEC-1545: unsupported behavior",
227+
"TestConnStringSpec/valid-warnings.json/Comma_in_a_key_value_pair_causes_a_warning": "DRIVERS-2915: unsupported behavior",
155228
}
156229

157230
// CheckSkip checks if the fully-qualified test name matches a skipped test

internal/spectest/spectest.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
package spectest
88

99
import (
10-
"io/ioutil"
10+
"os"
1111
"path"
12+
"path/filepath"
13+
"strings"
1214
"testing"
1315

1416
"go.mongodb.org/mongo-driver/v2/internal/require"
@@ -20,7 +22,7 @@ func FindJSONFilesInDir(t *testing.T, dir string) []string {
2022

2123
files := make([]string, 0)
2224

23-
entries, err := ioutil.ReadDir(dir)
25+
entries, err := os.ReadDir(dir)
2426
require.NoError(t, err)
2527

2628
for _, entry := range entries {
@@ -33,3 +35,17 @@ func FindJSONFilesInDir(t *testing.T, dir string) []string {
3335

3436
return files
3537
}
38+
39+
// TestPath will construct a path to a test file in the specifications git
40+
// submodule. The path will be relative to the current package so a depth should
41+
// be provided to indicate how many directories to go up.
42+
func TestPath(depth int, testDir string, subDirs ...string) string {
43+
const basePath = "testdata/specifications/source/"
44+
45+
// Create a string of "../" repeated 'depth' times
46+
relativePath := strings.Repeat("../", depth)
47+
// Construct the full path
48+
fullPath := relativePath + basePath + testDir + "/tests/" + filepath.Join(subDirs...)
49+
50+
return fullPath
51+
}

mongo/read_write_concern_spec_test.go

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

1717
"go.mongodb.org/mongo-driver/v2/bson"
1818
"go.mongodb.org/mongo-driver/v2/internal/assert"
19+
"go.mongodb.org/mongo-driver/v2/internal/spectest"
1920
"go.mongodb.org/mongo-driver/v2/mongo/readconcern"
2021
"go.mongodb.org/mongo-driver/v2/mongo/writeconcern"
2122
"go.mongodb.org/mongo-driver/v2/x/bsonx/bsoncore"
@@ -24,9 +25,8 @@ import (
2425
)
2526

2627
const (
27-
readWriteConcernTestsDir = "../testdata/read-write-concern"
28-
connstringTestsDir = "connection-string"
29-
documentTestsDir = "document"
28+
connstringTestsDir = "connection-string"
29+
documentTestsDir = "document"
3030
)
3131

3232
var (
@@ -36,6 +36,7 @@ var (
3636
reg.RegisterTypeMapEntry(bson.TypeEmbeddedDocument, reflect.TypeOf(bson.Raw{}))
3737
return reg
3838
}()
39+
readWriteConcernTestsDir = spectest.TestPath(1, "read-write-concern")
3940
)
4041

4142
type connectionStringTestFile struct {
@@ -103,9 +104,7 @@ func runConnectionStringTestFile(t *testing.T, filePath string) {
103104
}
104105

105106
func runConnectionStringTest(t *testing.T, test connectionStringTest) {
106-
if test.SkipReason != "" {
107-
t.Skip(test.SkipReason)
108-
}
107+
spectest.CheckSkip(t)
109108

110109
cs, err := connstring.ParseAndValidate(test.URI)
111110
if !test.Valid {

testdata/atlas-data-lake-testing/aggregate.json

Lines changed: 0 additions & 53 deletions
This file was deleted.

testdata/atlas-data-lake-testing/aggregate.yml

Lines changed: 0 additions & 23 deletions
This file was deleted.

testdata/atlas-data-lake-testing/estimatedDocumentCount.json

Lines changed: 0 additions & 27 deletions
This file was deleted.

testdata/atlas-data-lake-testing/estimatedDocumentCount.yml

Lines changed: 0 additions & 18 deletions
This file was deleted.

testdata/atlas-data-lake-testing/find.json

Lines changed: 0 additions & 65 deletions
This file was deleted.

0 commit comments

Comments
 (0)