Skip to content

Commit f4a9fc6

Browse files
committed
more updates
1 parent d481be4 commit f4a9fc6

File tree

2 files changed

+30
-21
lines changed

2 files changed

+30
-21
lines changed

db_dtypes/version.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
__version__ = "1.4.2"
15+
__version__ = "1.4.2" # pragma: NO COVER

tests/unit/test_json.py

+29-20
Original file line numberDiff line numberDiff line change
@@ -245,12 +245,12 @@ def cleanup_json_module_for_reload():
245245
# Explicitly register just in case it wasn't, or was cleaned up elsewhere.
246246
# This might raise ArrowKeyError itself if already registered, which is fine here.
247247
pa.register_extension_type(db_dtypes.json.JSONArrowType())
248+
248249
except pa.ArrowKeyError:
249250
pass # Already registered is the state we want before the test runs
250-
except ImportError:
251-
pytest.skip("Could not import db_dtypes.json to set up test.")
252251

253-
# Remove the module from sys.modules so importlib.reload re-executes it
252+
# Remove the module from sys.modules so importlib.reload which will happen
253+
# after the yield statement will re-execute it
254254
if json_module_name in sys.modules:
255255
del sys.modules[json_module_name]
256256

@@ -264,28 +264,37 @@ def cleanup_json_module_for_reload():
264264
# If the test re-imported it but it wasn't there originally, remove it
265265
del sys.modules[json_module_name]
266266

267-
# Note: PyArrow doesn't have a public API to unregister types easily.
268-
# Relying on module isolation/reloading is a common testing pattern.
267+
# Note: PyArrow doesn't have a public API to unregister types easily,
268+
# thus we are using the testing pattern of module isolation/reloading.
269+
270+
271+
# Test specifically for the fixture's pre-yield removal logic
272+
def test_fixture_removes_module_if_present(cleanup_json_module_for_reload):
273+
"""
274+
Tests that the cleanup_json_module_for_reload fixture removes
275+
db_dtypes.json from sys.modules before yielding to the test.
276+
This specifically targets the 'if json_module_name in sys.modules:' block.
277+
"""
278+
# This test runs *after* the fixture's `yield`.
279+
# The fixture should have removed the module if it was present.
280+
281+
json_module_name = "db_dtypes.json"
282+
283+
assert (
284+
json_module_name not in sys.modules
285+
), f"The fixture cleanup_json_module_for_reload should have removed {json_module_name}"
269286

270287

271288
def test_json_arrow_type_reregistration_is_handled(cleanup_json_module_for_reload):
272289
"""
273290
Verify that attempting to re-register JSONArrowType via module reload
274291
is caught by the except block and does not raise an error.
275292
"""
276-
try:
277-
# Re-importing the module after the fixture removed it from sys.modules
278-
# forces Python to execute the module's top-level code again.
279-
# This includes the pa.register_extension_type call.
280-
assert (
281-
True
282-
), "Module re-import completed without error, except block likely worked."
283293

284-
except pa.ArrowKeyError:
285-
# If this exception escapes, the except block in db_dtypes/json.py failed.
286-
pytest.fail(
287-
"pa.ArrowKeyError was raised during module reload, "
288-
"indicating the except block failed."
289-
)
290-
except Exception as e:
291-
pytest.fail(f"An unexpected exception occurred during module reload: {e}")
294+
# Re-importing the module after the fixture removed it from sys.modules
295+
# forces Python to execute the module's top-level code again.
296+
# This includes the pa.register_extension_type call.
297+
298+
import db_dtypes.json # noqa: F401
299+
300+
assert True, "Module re-import completed without error, except block likely worked."

0 commit comments

Comments
 (0)