@@ -290,6 +290,31 @@ def test_table_scan_ref(table_v2: Table) -> None:
290290 assert scan .use_ref ("test" ).snapshot_id == 3051729675574597004
291291
292292
293+ @pytest .mark .parametrize (
294+ "snapshot_id, expected_snapshot_id" ,
295+ [(None , 3055729675574597004 ), (0 , 0 ), (3051729675574597004 , 3051729675574597004 )],
296+ )
297+ def test_table_scan_snapshot (table_v2 : Table , snapshot_id : int | None , expected_snapshot_id : int ) -> None :
298+ table_v2 .metadata .snapshots .append (
299+ Snapshot (snapshot_id = 0 , timestamp_ms = 1515100955769 , manifest_list = "s3://a/b/zero.avro" , schema_id = 0 )
300+ )
301+
302+ snapshot = table_v2 .scan (snapshot_id = snapshot_id ).snapshot ()
303+
304+ assert snapshot is not None
305+ assert snapshot .snapshot_id == expected_snapshot_id
306+
307+
308+ def test_table_scan_missing_snapshot_zero (table_v2 : Table ) -> None :
309+ assert table_v2 .scan (snapshot_id = 0 ).snapshot () is None
310+
311+
312+ @pytest .mark .parametrize ("snapshot_id" , [0 , 3051729675574597004 ])
313+ def test_table_scan_ref_cannot_override_snapshot (table_v2 : Table , snapshot_id : int ) -> None :
314+ with pytest .raises (ValueError , match = f"Cannot override ref, already set snapshot id={ snapshot_id } " ):
315+ table_v2 .scan (snapshot_id = snapshot_id ).use_ref ("test" )
316+
317+
293318def test_table_scan_ref_does_not_exists (table_v2 : Table ) -> None :
294319 scan = table_v2 .scan ()
295320
0 commit comments