Skip to content

Commit c2b635a

Browse files
committed
fix(test): ensure that file-based url tests don't expect data to exist
1 parent 1b3c54a commit c2b635a

File tree

1 file changed

+36
-29
lines changed

1 file changed

+36
-29
lines changed

ibis/backends/tests/test_client.py

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -429,51 +429,42 @@ def test_connect_url(url):
429429
)
430430

431431

432+
@pytest.fixture(params=["duckdb", "sqlite"])
433+
def tmp_db(request, tmp_path):
434+
api = request.param
435+
mod = pytest.importorskip(api)
436+
db = tmp_path / "test.db"
437+
mod.connect(str(db)).execute(
438+
"CREATE TABLE tmp_t AS SELECT 1 AS a"
439+
).fetchall()
440+
return db
441+
442+
432443
@pytest.mark.backend
433444
@pytest.mark.parametrize(
434445
"url",
435446
[
436447
param(
437-
"duckdb://ci/ibis-testing-data/ibis_testing.ddb",
448+
"duckdb://{}",
438449
marks=[mark.duckdb, not_windows],
439450
id="duckdb_path",
440451
),
441452
param(
442-
"duckdb://ci/ibis-testing-data/ibis_testing.ddb?read_only=0",
453+
"duckdb://{}?read_only=0",
443454
marks=[mark.duckdb, not_windows],
444455
id="duckdb_read_write_int",
445456
),
446457
param(
447-
"duckdb://ci/ibis-testing-data/ibis_testing.ddb?read_only=1",
448-
marks=[mark.duckdb, not_windows],
449-
id="duckdb_read_only_int",
450-
),
451-
param(
452-
"duckdb://ci/ibis-testing-data/ibis_testing.ddb?read_only=False",
458+
"duckdb://{}?read_only=False",
453459
marks=[mark.duckdb, not_windows],
454460
id="duckdb_read_write_upper",
455461
),
456462
param(
457-
"duckdb://ci/ibis-testing-data/ibis_testing.ddb?read_only=True",
458-
marks=[mark.duckdb, not_windows],
459-
id="duckdb_read_only_upper",
460-
),
461-
param(
462-
"duckdb://ci/ibis-testing-data/ibis_testing.ddb?read_only=false",
463+
"duckdb://{}?read_only=false",
463464
marks=[mark.duckdb, not_windows],
464465
id="duckdb_read_write_lower",
465466
),
466-
param(
467-
"duckdb://ci/ibis-testing-data/ibis_testing.ddb?read_only=true",
468-
marks=[mark.duckdb, not_windows],
469-
id="duckdb_read_only_lower",
470-
),
471467
param("duckdb://", marks=mark.duckdb, id="duckdb_memory"),
472-
param(
473-
"duckdb://:memory:",
474-
marks=mark.duckdb,
475-
id="duckdb_memory_explicit",
476-
),
477468
param(
478469
"duckdb://?read_only=1",
479470
marks=[
@@ -486,10 +477,11 @@ def test_connect_url(url):
486477
id="duckdb_memory_read_only",
487478
),
488479
param(
489-
"sqlite://ci/ibis-testing-data/ibis_testing.db",
490-
marks=mark.sqlite,
491-
id="sqlite_path",
480+
"duckdb://:memory:",
481+
marks=mark.duckdb,
482+
id="duckdb_memory_explicit",
492483
),
484+
param("sqlite://{}", marks=mark.sqlite, id="sqlite_path"),
493485
param("sqlite://", marks=mark.sqlite, id="sqlite_memory"),
494486
param(
495487
"sqlite://:memory:",
@@ -498,12 +490,27 @@ def test_connect_url(url):
498490
),
499491
],
500492
)
501-
def test_connect_file_url(url):
502-
con = ibis.connect(url)
493+
def test_connect_file_url(url, tmp_db):
494+
con = ibis.connect(url.format(tmp_db))
503495
one = ibis.literal(1)
504496
assert con.execute(one) == 1
505497

506498

499+
@pytest.mark.duckdb
500+
@pytest.mark.parametrize(
501+
"read_only",
502+
[
503+
param("True", marks=[not_windows], id="duckdb_read_only_upper"),
504+
param("1", marks=[not_windows], id="duckdb_read_only_int"),
505+
param("true", marks=[not_windows], id="duckdb_read_only_lower"),
506+
],
507+
)
508+
def test_connect_file_url_read_only(tmp_db, read_only):
509+
url = f"duckdb://{tmp_db}?read_only={read_only}"
510+
con = ibis.connect(url)
511+
assert "tmp_t" in con.list_tables()
512+
513+
507514
@not_windows
508515
def test_invalid_connect():
509516
pytest.importorskip("duckdb")

0 commit comments

Comments
 (0)