Example #1
0
    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()
Example #2
0
    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)