def test_make_tarball(self): """ Can we make tarballs for all versions in the git repository. """ experiment_repository = models.ExperimentRepository.objects.create(**self.setup_fields) for _hash, tstamp in experiment_repository.get_all_commits(): experiment_details, tarball_path = utils.make_tarball(experiment_repository.path, _hash) ######## # Test # ######## # Do the experiment details look right? # Are the experiments mentioned in the settings file in the # experiment_details dir? experiments_settings = configobj.ConfigObj( os.path.join(experiment_repository.path, conf.repository_settings_filename) ) for class_name in experiments_settings["experiments"]: self.assertTrue(experiment_details.has_key(class_name)) ######## # Test # ######## # Are the contents of the tarball as they should be? tmpdir = tempfile.mkdtemp() if conf.tarball_compression_method == "bz2": tar_cmd = "-xjf" elif conf.tarball_compression_method == "gz": tar_cmd = "-xzf" sh.tar(tar_cmd, tarball_path, "-C", tmpdir) checksum_list = self.mock_repository.commit_dictionary[_hash] self.assertTrue(sys.check_directory_checksums(checksum_list, tmpdir)) # Delete the exported directory. shutil.rmtree(tmpdir) ######## # Test # ######## # Check the contents of the tarball; does it import. tarball_model = utils.ExperimentArchiveTarball(tarball_path) self.assertTrue(tarball_model.integrity_check()) self.assertTrue(tarball_model.import_check()) # Delete the tarball os.unlink(tarball_path) models.ExperimentRepository.objects.all().delete()
def test_git_export(self): """ Test if we can succesfully export all versions of a git repository. """ mock_repository_all_commits = self.mock_repository.get_all_commits() export_directories = {} for _hash, tstamp in mock_repository_all_commits: export_directories[_hash] = utils.git_export(self.mock_repository.path, _hash) for _hash, export_directory in export_directories.items(): checksum_list = self.mock_repository.commit_dictionary[_hash] self.assertTrue(sys.check_directory_checksums(checksum_list, export_directory)) # Delete the exported directory. shutil.rmtree(export_directory)