Skip to content
This repository was archived by the owner on Mar 13, 2026. It is now read-only.

Commit c0cb0e5

Browse files
committed
add tests
1 parent c57a30e commit c0cb0e5

2 files changed

Lines changed: 73 additions & 0 deletions

File tree

pandas_gbq/core/resource_references.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ def parse_table_id(table_id: str) -> BigLakeTableId | BigQueryTableId:
4848
raise ValueError(f"Invalid table ID: {table_id}")
4949

5050
inner_parts = regex_match.group("inner_parts").split(".")
51+
if any(part == "" for part in inner_parts):
52+
raise ValueError(f"Invalid table ID: {table_id}")
53+
5154
if len(inner_parts) == 1:
5255
return BigQueryTableId(
5356
project_id=regex_match.group("project"),

tests/unit/core/test_core_resource_references.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,73 @@
22
# Use of this source code is governed by a BSD-style
33
# license that can be found in the LICENSE file.
44

5+
import pytest
6+
7+
from pandas_gbq.core import resource_references
8+
9+
10+
@pytest.mark.parametrize(
11+
["table_id", "expected"],
12+
[
13+
(
14+
"my-project.my_dataset.my_table",
15+
resource_references.BigQueryTableId(
16+
project_id="my-project",
17+
dataset_id="my_dataset",
18+
table_id="my_table",
19+
),
20+
),
21+
(
22+
"google.com:my-project.my_dataset.my_table",
23+
resource_references.BigQueryTableId(
24+
project_id="my-project",
25+
dataset_id="my_dataset",
26+
table_id="my_table",
27+
),
28+
),
29+
(
30+
"my-project.my_catalog.my_table",
31+
resource_references.BigQueryTableId(
32+
project_id="my-project",
33+
dataset_id="my_catalog",
34+
table_id="my_table",
35+
),
36+
),
37+
(
38+
"my-project.my_catalog.my_namespace.my_table",
39+
resource_references.BigLakeTableId(
40+
project="my-project",
41+
catalog="my_catalog",
42+
namespace=("my_namespace",),
43+
table="my_table",
44+
),
45+
),
46+
(
47+
"my-project.my_catalog.my_namespace1.my_namespace2.my_table",
48+
resource_references.BigLakeTableId(
49+
project="my-project",
50+
catalog="my_catalog",
51+
namespace=("my_namespace1", "my_namespace2"),
52+
table="my_table",
53+
),
54+
),
55+
],
56+
)
57+
def test_parse_table_id_valid(table_id, expected):
58+
result = resource_references.parse_table_id(table_id)
59+
assert result == expected
60+
61+
62+
@pytest.mark.parametrize(
63+
"table_id",
64+
[
65+
"my-project",
66+
"my-project.my_dataset",
67+
".my_dataset.my_table",
68+
"my-project.my_dataset.",
69+
"my-project..my_table",
70+
],
71+
)
72+
def test_parse_table_id_invalid(table_id):
73+
with pytest.raises(ValueError):
74+
resource_references.parse_table_id(table_id)

0 commit comments

Comments
 (0)