class TestGitSvnDefWrite(unittest.TestCase):

    """Test writing with the "GitSvnDefParser" class."""

    def setUp(self):
        self.git_svn_def = GitSvnDefParser()
        self.rd = {
            "name": "test_repo",
            "path": "foo",
            "svn_url": "file://path/to/foo",
            "svn_trunk_head": "trunk",
            "svn_trunk_tags": "trunk_tags/*",
            "ignore_revs": (4,6,),
        }
        svn_repo = SvnRepo(
            name="svn_"+self.rd["name"],
            path=self.rd["svn_url"],
            trunk_head=self.rd["svn_trunk_head"],
            trunk_tags=self.rd["svn_trunk_tags"],
        )
        self.git_svn_repo = GitSvnRepo(
            name=self.rd["name"],
            path=self.rd["path"],
            ignore_revs=self.rd["ignore_revs"],
            svn_repo=svn_repo,
        )
        fd,self.temp_name = tempfile.mkstemp(text=True)

    def tearDown(self):
        try:
            os.remove(self.temp_name)
        except FileNotFoundError:
            pass

    def test_write(self):
        self.git_svn_def.set_repos([self.git_svn_repo])
        self.git_svn_def.write(self.temp_name)
        new_parser = GitSvnDefParser()
        new_parser.read(self.temp_name)
        repos = new_parser.get_repos()
        repo = repos[0]
        self.assertEqual(repo.name, self.rd["name"])
        self.assertEqual(repo.path, self.rd["path"])
        self.assertEqual(repo.svn_repo.name, "svn_"+self.rd["name"])
        self.assertEqual(repo.svn_repo.path, self.rd["svn_url"])
        self.assertEqual(repo.svn_repo.trunk_branch.head,
                         self.rd["svn_url"]+"/"+self.rd["svn_trunk_head"])
        self.assertEqual(repo.svn_repo.trunk_branch.tags,
                         self.rd["svn_url"]+"/"+self.rd["svn_trunk_tags"])
        self.assertCountEqual(repo.ignore_revs, self.rd["ignore_revs"])