|
7 | 7 | "net/url" |
8 | 8 | "os" |
9 | 9 | "os/exec" |
| 10 | + "strings" |
10 | 11 | "syscall" |
11 | 12 | "testing" |
12 | 13 | "time" |
@@ -42,7 +43,7 @@ var customURLSchemes = map[application]string{ |
42 | 43 | } |
43 | 44 |
|
44 | 45 | // initTestDatabase launches a test database as a subprocess. |
45 | | -func initTestDatabase(t *testing.T, app application) (*sql.DB, *url.URL, func()) { |
| 46 | +func initTestDatabase(t *testing.T, app application) (*sql.DB, *url.URL, string, func()) { |
46 | 47 | ts, err := testserver.NewTestServer() |
47 | 48 | if err != nil { |
48 | 49 | t.Fatal(err) |
@@ -70,10 +71,16 @@ func initTestDatabase(t *testing.T, app application) (*sql.DB, *url.URL, func()) |
70 | 71 | t.Fatal(err) |
71 | 72 | } |
72 | 73 |
|
| 74 | + var version string |
| 75 | + if err := db.QueryRow(`SELECT value FROM crdb_internal.node_build_info where field = 'Version'`, |
| 76 | + ).Scan(&version); err != nil { |
| 77 | + t.Fatal(err) |
| 78 | + } |
| 79 | + |
73 | 80 | if scheme, ok := customURLSchemes[app]; ok { |
74 | 81 | url.Scheme = scheme |
75 | 82 | } |
76 | | - return db, url, func() { |
| 83 | + return db, url, version, func() { |
77 | 84 | _ = db.Close() |
78 | 85 | ts.Stop() |
79 | 86 | } |
@@ -147,9 +154,13 @@ func testORM( |
147 | 154 | orm: orm, |
148 | 155 | } |
149 | 156 |
|
150 | | - db, dbURL, stopDB := initTestDatabase(t, app) |
| 157 | + db, dbURL, version, stopDB := initTestDatabase(t, app) |
151 | 158 | defer stopDB() |
152 | 159 |
|
| 160 | + if orm == "django" && (strings.HasPrefix(version, "v2.0") || strings.HasPrefix(version, "v2.1")) { |
| 161 | + t.Skip("TestDjango fails on CRDB <=v2.1 due to missing foreign key support.") |
| 162 | + } |
| 163 | + |
153 | 164 | td := testDriver{ |
154 | 165 | db: db, |
155 | 166 | dbName: app.dbName(), |
@@ -250,7 +261,6 @@ func TestSQLAlchemy(t *testing.T) { |
250 | 261 | } |
251 | 262 |
|
252 | 263 | func TestDjango(t *testing.T) { |
253 | | - t.Skip("TestDjango fails on CRDB v2.1; github.com/cockroachdb/cockroach/issues/42083") |
254 | 264 | testORM(t, "python", "django", djangoTestTableNames, djangoTestColumnNames) |
255 | 265 | } |
256 | 266 |
|
|
0 commit comments