@@ -662,3 +662,42 @@ def test_get_projects_by_name(mc):
662662 assert full_name in resp
663663 assert resp [full_name ]["name" ] == name
664664 assert resp [full_name ]["version" ] == 'v0'
665+
666+
667+ def test_download_versions (mc ):
668+ test_project = 'test_download'
669+ project = API_USER + '/' + test_project
670+ project_dir = os .path .join (TMP_DIR , test_project )
671+ # download dirs
672+ project_dir_v1 = os .path .join (TMP_DIR , test_project + '_v1' )
673+ project_dir_v2 = os .path .join (TMP_DIR , test_project + '_v2' )
674+ project_dir_v3 = os .path .join (TMP_DIR , test_project + '_v3' )
675+
676+ cleanup (mc , project , [project_dir , project_dir_v1 , project_dir_v2 , project_dir_v3 ])
677+ # create remote project
678+ shutil .copytree (TEST_DATA_DIR , project_dir )
679+ mc .create_project_and_push (test_project , project_dir )
680+
681+ # create new version - v2
682+ f_added = 'new.txt'
683+ with open (os .path .join (project_dir , f_added ), 'w' ) as f :
684+ f .write ('new file' )
685+
686+ mc .push_project (project_dir )
687+ project_info = mc .project_info (project )
688+ assert project_info ['version' ] == 'v2'
689+
690+ info_v1 = mc .project_info (project , version = 'v1' )
691+ mc .download_project (project , project_dir_v1 , 'v1' )
692+ for f in info_v1 ["files" ]:
693+ assert os .path .exists (os .path .join (project_dir_v1 , f ["path" ]))
694+
695+ mc .download_project (project , project_dir_v2 , 'v2' )
696+ info_v2 = mc .project_info (project , version = 'v2' )
697+ assert os .path .exists (os .path .join (project_dir_v2 , f_added ))
698+ for f in info_v2 ["files" ]:
699+ assert os .path .exists (os .path .join (project_dir_v2 , f ["path" ]))
700+
701+ # try to download not-existing version
702+ with pytest .raises (ClientError ):
703+ mc .download_project (project , project_dir_v3 , 'v3' )
0 commit comments