1616# under the License.
1717# pylint: disable=redefined-outer-name,arguments-renamed,fixme
1818from tempfile import TemporaryDirectory
19- from typing import Dict
19+ from typing import Dict , Optional
2020from unittest .mock import patch
2121
2222import fastavro
@@ -526,14 +526,18 @@ def test_write_manifest(
526526
527527
528528@pytest .mark .parametrize ("format_version" , [1 , 2 ])
529+ @pytest .mark .parametrize ("parent_snapshot_id" , [19 , None ])
529530def test_write_manifest_list (
530- generated_manifest_file_file_v1 : str , generated_manifest_file_file_v2 : str , format_version : TableVersion
531+ generated_manifest_file_file_v1 : str ,
532+ generated_manifest_file_file_v2 : str ,
533+ format_version : TableVersion ,
534+ parent_snapshot_id : Optional [int ],
531535) -> None :
532536 io = load_file_io ()
533537
534538 snapshot = Snapshot (
535539 snapshot_id = 25 ,
536- parent_snapshot_id = 19 ,
540+ parent_snapshot_id = parent_snapshot_id ,
537541 timestamp_ms = 1602638573590 ,
538542 manifest_list = generated_manifest_file_file_v1 if format_version == 1 else generated_manifest_file_file_v2 ,
539543 summary = Summary (Operation .APPEND ),
@@ -545,12 +549,20 @@ def test_write_manifest_list(
545549 path = tmp_dir + "/manifest-list.avro"
546550 output = io .new_output (path )
547551 with write_manifest_list (
548- format_version = format_version , output_file = output , snapshot_id = 25 , parent_snapshot_id = 19 , sequence_number = 0
552+ format_version = format_version ,
553+ output_file = output ,
554+ snapshot_id = 25 ,
555+ parent_snapshot_id = parent_snapshot_id ,
556+ sequence_number = 0 ,
549557 ) as writer :
550558 writer .add_manifests (demo_manifest_list )
551559 new_manifest_list = list (read_manifest_list (io .new_input (path )))
552560
553- expected_metadata = {"snapshot-id" : "25" , "parent-snapshot-id" : "19" , "format-version" : str (format_version )}
561+ if parent_snapshot_id :
562+ expected_metadata = {"snapshot-id" : "25" , "parent-snapshot-id" : "19" , "format-version" : str (format_version )}
563+ else :
564+ expected_metadata = {"snapshot-id" : "25" , "parent-snapshot-id" : "null" , "format-version" : str (format_version )}
565+
554566 if format_version == 2 :
555567 expected_metadata ["sequence-number" ] = "0"
556568 _verify_metadata_with_fastavro (path , expected_metadata )
0 commit comments