Skip to content

Commit 6b2fe36

Browse files
authored
Merge pull request #36 from ShravanSunder/enable-extensions
2 parents f1e671d + 3756051 commit 6b2fe36

File tree

2 files changed

+75
-3
lines changed

2 files changed

+75
-3
lines changed

src/py_pglite/extensions.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,17 @@
66

77
SUPPORTED_EXTENSIONS: dict[str, dict[str, str]] = {
88
"pgvector": {"module": "@electric-sql/pglite/vector", "name": "vector"},
9-
# Additional extensions can be registered here in the future.
10-
# Example:
11-
# "pg_trgm": {"module": "@electric-sql/pglite/contrib/pg_trgm", "name": "pg_trgm"},
9+
"pg_trgm": {"module": "@electric-sql/pglite/contrib/pg_trgm", "name": "pg_trgm"},
10+
"btree_gin": {
11+
"module": "@electric-sql/pglite/contrib/btree_gin",
12+
"name": "btree_gin",
13+
},
14+
"btree_gist": {
15+
"module": "@electric-sql/pglite/contrib/btree_gist",
16+
"name": "btree_gist",
17+
},
18+
"fuzzystrmatch": {
19+
"module": "@electric-sql/pglite/contrib/fuzzystrmatch",
20+
"name": "fuzzystrmatch",
21+
},
1222
}

tests/test_extensions_registry.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,40 @@ def test_pgvector_extension_registration():
3333
assert pgvector_config["name"] == "vector"
3434

3535

36+
def test_pg_trgm_extension_registration():
37+
"""Test pg_trgm extension is properly registered."""
38+
pg_trgm_config = SUPPORTED_EXTENSIONS["pg_trgm"]
39+
40+
assert pg_trgm_config["module"] == "@electric-sql/pglite/contrib/pg_trgm"
41+
assert pg_trgm_config["name"] == "pg_trgm"
42+
43+
44+
def test_btree_gin_extension_registration():
45+
"""Test btree_gin extension is properly registered."""
46+
btree_gin_config = SUPPORTED_EXTENSIONS["btree_gin"]
47+
48+
assert btree_gin_config["module"] == "@electric-sql/pglite/contrib/btree_gin"
49+
assert btree_gin_config["name"] == "btree_gin"
50+
51+
52+
def test_btree_gist_extension_registration():
53+
"""Test btree_gist extension is properly registered."""
54+
btree_gist_config = SUPPORTED_EXTENSIONS["btree_gist"]
55+
56+
assert btree_gist_config["module"] == "@electric-sql/pglite/contrib/btree_gist"
57+
assert btree_gist_config["name"] == "btree_gist"
58+
59+
60+
def test_fuzzystrmatch_extension_registration():
61+
"""Test fuzzystrmatch extension is properly registered."""
62+
fuzzystrmatch_config = SUPPORTED_EXTENSIONS["fuzzystrmatch"]
63+
64+
assert (
65+
fuzzystrmatch_config["module"] == "@electric-sql/pglite/contrib/fuzzystrmatch"
66+
)
67+
assert fuzzystrmatch_config["name"] == "fuzzystrmatch"
68+
69+
3670
def test_config_extension_validation():
3771
"""Test that PGliteConfig properly validates extensions."""
3872
# Valid extension should work
@@ -159,6 +193,30 @@ def test_extension_registry_is_immutable():
159193
assert SUPPORTED_EXTENSIONS["pgvector"] == original_pgvector
160194

161195

196+
def test_new_extensions_configuration():
197+
"""Test that all new extensions can be configured."""
198+
# Test individual extensions
199+
for ext in ["pg_trgm", "btree_gin", "btree_gist", "fuzzystrmatch"]:
200+
config = PGliteConfig(extensions=[ext])
201+
assert config.extensions == [ext]
202+
203+
manager = PGliteManager(config)
204+
assert manager.config.extensions == [ext]
205+
206+
# Test all new extensions together
207+
new_extensions = ["pg_trgm", "btree_gin", "btree_gist", "fuzzystrmatch"]
208+
config = PGliteConfig(extensions=new_extensions)
209+
assert config.extensions == new_extensions
210+
211+
manager = PGliteManager(config)
212+
assert manager.config.extensions == new_extensions
213+
214+
# Test all extensions including pgvector
215+
all_exts = ["pgvector", "pg_trgm", "btree_gin", "btree_gist", "fuzzystrmatch"]
216+
config = PGliteConfig(extensions=all_exts)
217+
assert config.extensions == all_exts
218+
219+
162220
def test_extension_validation_error_messages():
163221
"""Test that extension validation provides helpful error messages."""
164222
try:
@@ -169,6 +227,10 @@ def test_extension_validation_error_messages():
169227
assert "Unsupported extension: 'nonexistent'" in error_msg
170228
assert "Available extensions:" in error_msg
171229
assert "pgvector" in error_msg
230+
assert "pg_trgm" in error_msg
231+
assert "btree_gin" in error_msg
232+
assert "btree_gist" in error_msg
233+
assert "fuzzystrmatch" in error_msg
172234

173235

174236
def test_extensions_with_empty_string():

0 commit comments

Comments
 (0)