def test_get_reference(self):
        branch_instance = Branch()
        head_instance = Head("references/branches/main")

        expected_result = branch.serialize_as_dict(branch_instance)

        result = {}
        with tempfile.TemporaryDirectory() as tmpdirname:
            tmppath = Path(tmpdirname)

            # store branch
            branch_path = repository.get_branch_path(tmppath, "main", False)

            makedirs(branch_path.parent, exist_ok=True)

            branch.store_as_file(branch_path, branch_instance)

            # store head
            head_path = repository.get_head_path(tmppath, False)

            makedirs(head_path.parent, exist_ok=True)

            head.store_as_file(head_path, head_instance)

            result = reference.serialize_as_dict(
                repository.get_reference(tmppath))

        self.assertEqual(result, expected_result)
    def test_serialize_as_dict(self):
        expected_result = {"ref": ""}

        head_instance = Head()

        result = head.serialize_as_dict(head_instance)

        self.assertDictEqual(result, expected_result)
    def test_load_from_file(self):
        file_path = get_named_tmpfile_path()

        head_instance = Head()

        head.store_as_file(file_path, head_instance)

        expected_result = head.serialize_as_dict(head_instance)
        result = head.serialize_as_dict(head.load_from_file(file_path))

        self.assertEqual(result, expected_result)
    def test_store_as_file(self):
        file_path = get_named_tmpfile_path()

        data = {"ref": ""}

        result = ""
        expected_result = transform.dict_as_json(data)

        head_instance = Head()

        head.store_as_file(file_path, head_instance)

        with open(file_path, "r") as f:
            result = f.read()

        self.assertEqual(result, expected_result)
    def test_get_head(self):
        head_instance = Head()

        expected_result = head.serialize_as_dict(head_instance)

        result = {}
        with tempfile.TemporaryDirectory() as tmpdirname:
            tmppath = Path(tmpdirname)

            head_path = repository.get_head_path(tmppath, False)

            makedirs(head_path.parent, exist_ok=True)

            head.store_as_file(head_path, head_instance)

            result = head.serialize_as_dict(repository.get_head(tmppath))

        self.assertEqual(result, expected_result)
Beispiel #6
0
def initialize(path: Path) -> None:
    if not is_initialized(path):
        # create necessary directories
        transform.apply(
            lambda x: fs.make_dirs(x(path, False)),
            get_directory_accessors(),
        )

        # create necessary files

        # create new stage
        stage_instance = Stage()

        store_stage(path, stage_instance)

        # create new head
        head_instance = Head()

        store_head(path, head_instance)
    def test_get_latest_commit(self):
        author_instance = Author("beesperester")

        commit_instance = Commit(author_instance, "initial commit")

        expected_result = commit.serialize_as_dict(commit_instance)

        result = {}
        with tempfile.TemporaryDirectory() as tmpdirname:
            tmppath = Path(tmpdirname)

            # create commit blob
            blobs_path = repository.get_blobs_path(tmppath, False)

            makedirs(blobs_path, exist_ok=True)

            hashid = commit.store_as_blob(blobs_path, commit_instance)

            # create branch with commit hashid
            branch_path = repository.get_branch_path(tmppath, "main", False)

            makedirs(branch_path.parent, exist_ok=True)

            branch_instance = Branch(hashid)

            branch.store_as_file(branch_path, branch_instance)

            # create head with branch as ref
            head_path = repository.get_head_path(tmppath, False)

            makedirs(head_path.parent, exist_ok=True)

            head_instance = Head("references/branches/main")

            head.store_as_file(head_path, head_instance)

            result = commit.serialize_as_dict(
                repository.get_latest_commit(tmppath))

        self.assertEqual(result, expected_result)
Beispiel #8
0
def deserialize_from_dict(data: Dict[str, Any]) -> Head:
    return Head(**data)