Esempio n. 1
0
class SVNToolTestsPristineWithExternalsNotFixed(SVNLocalRepoTestCase):
    def _propset_cmd(self, relpath, url):
        return 'propset svn:externals "{} {}" .'.format(relpath, url)

    def setUp(self):
        project_url, _ = self.create_project(files={'myfile': "contents"})
        project2_url, _ = self.create_project(files={'nestedfile': "contents"})

        self.svn = SVN(folder=self.gimme_tmp())
        self.svn.checkout(url=project_url)
        self.svn.run(self._propset_cmd("subrepo", project2_url))
        self.svn.run('commit -m "add external"')
        self.svn.update()
        self.assertTrue(self.svn.is_pristine())

        self.svn2 = SVN(folder=self.gimme_tmp())
        self.svn2.checkout(url=project2_url)
        self.assertTrue(self.svn.is_pristine())

    def test_modified_external(self):
        with open(os.path.join(self.svn2.folder, "nestedfile"), "a") as f:
            f.write("cosass")
        self.svn2.run('commit -m "another"')
        self.svn2.update()
        self.assertTrue(self.svn2.is_pristine())

        # Known: without fixed external, it won't be pristine if there is something new in remote.
        self.assertFalse(self.svn.is_pristine())
Esempio n. 2
0
 def test_untracked_file(self):
     self.create_project(files={'myfile': "contents"})
     tmp_folder = self.gimme_tmp()
     svn = SVN(folder=tmp_folder)
     svn.checkout(url=self.repo_url)
     self.assertTrue(svn.is_pristine())
     with open(os.path.join(tmp_folder, "not_tracked.txt"), "w") as f:
         f.write("content")
     self.assertFalse(svn.is_pristine())
Esempio n. 3
0
 def test_ignored_file(self):
     tmp_folder = self.gimme_tmp()
     svn = SVN(folder=self.gimme_tmp())
     svn.checkout(url=self.repo_url)
     file_to_ignore = "secret.txt"
     with open(os.path.join(tmp_folder, file_to_ignore), "w") as f:
         f.write("content")
     svn.run("propset svn:ignore {} .".format(file_to_ignore))
     self.assertFalse(svn.is_pristine())  # Folder properties have been modified
     svn.run('commit -m "add ignored file"')
     self.assertTrue(svn.is_pristine())
Esempio n. 4
0
    def test_missing_remote(self):
        repo_url = self.gimme_tmp()
        subprocess.check_output('svnadmin create "{}"'.format(repo_url), shell=True)
        project_url = SVN.file_protocol + quote(repo_url.replace("\\", "/"), safe='/:')

        svn = SVN(folder=self.gimme_tmp())
        svn.checkout(url=project_url)
        self.assertTrue(svn.is_pristine())

        shutil.rmtree(repo_url, ignore_errors=False, onerror=try_remove_readonly)
        self.assertFalse(os.path.exists(repo_url))
        self.assertFalse(svn.is_pristine())
Esempio n. 5
0
 def work_on_project(tmp_folder):
     svn = SVN(folder=tmp_folder)
     svn.checkout(url=project_url)
     self.assertTrue(svn.is_pristine())
     with open(os.path.join(tmp_folder, "myfile"), "a") as f:
         f.write("random content: {}".format(uuid.uuid4()))
     return svn
Esempio n. 6
0
    def test_checkout_project(self):
        project_url, _ = self.create_project(files={'myfile': "contents"})

        tmp_folder = self.gimme_tmp()
        svn = SVN(folder=tmp_folder)
        svn.checkout(url=project_url)
        self.assertTrue(svn.is_pristine())
Esempio n. 7
0
 def test_modified_file(self):
     project_url, _ = self.create_project(files={'myfile': "contents"})
     tmp_folder = self.gimme_tmp()
     svn = SVN(folder=tmp_folder)
     svn.checkout(url=project_url)
     with open(os.path.join(tmp_folder, "myfile"), "a") as f:
         f.write("new content")
     self.assertFalse(svn.is_pristine())
Esempio n. 8
0
 def test_mixed_revisions(self):
     project_url, _ = self.create_project(files={'myfile': "cc", 'another': 'aa'})
     svn = SVN(folder=self.gimme_tmp())
     svn.checkout(url=project_url)
     with open(os.path.join(svn.folder, 'myfile'), "a") as f:
         f.write('more')
     svn.run('commit -m "up version"')
     self.assertFalse(svn.is_pristine())
Esempio n. 9
0
    def test_clone_over_dirty_directory(self):
        project_url, _ = self.create_project(files={'myfile': "contents"})
        tmp_folder = self.gimme_tmp()
        svn = SVN(folder=tmp_folder)
        svn.checkout(url=project_url)

        new_file = os.path.join(tmp_folder, "new_file")
        with open(new_file, "w") as f:
            f.write("content")

        mod_file = os.path.join(tmp_folder, "myfile")
        with open(mod_file, "a") as f:
            f.write("new content")

        self.assertFalse(svn.is_pristine())
        # SVN::clone over a dirty repo reverts all changes
        # (but it doesn't delete non versioned files)
        svn.checkout(url=project_url)
        self.assertEqual(open(mod_file).read(), "contents")
        self.assertFalse(svn.is_pristine())
Esempio n. 10
0
class SVNToolTestsPristineWithExternalFile(SVNLocalRepoTestCase):

    def _propset_cmd(self, relpath, rev, url):
        return 'propset svn:externals "{} -r{} {}" .'.format(relpath, rev, url)

    def setUp(self):
        project_url, _ = self.create_project(files={'myfile': "contents"})
        project2_url, rev = self.create_project(files={'nestedfile': "contents"})

        self.svn = SVN(folder=self.gimme_tmp())
        self.svn.checkout(url=project_url)
        self.svn.run(self._propset_cmd("subrepo_nestedfile", rev, project2_url + '/nestedfile'))
        self.svn.run('commit -m "add external"')
        self.svn.update()
        self.assertTrue(self.svn.is_pristine())

    def test_modified_external(self):
        with open(os.path.join(self.svn.folder, "subrepo_nestedfile"), "a") as f:
            f.write("cosass")
        self.assertFalse(self.svn.is_pristine())
Esempio n. 11
0
class SVNToolTestsPristineWithExternalsFixed(SVNLocalRepoTestCase):
    def _propset_cmd(self, relpath, rev, url):
        return 'propset svn:externals "{} -r{} {}" .'.format(relpath, rev, url)

    def setUp(self):
        project_url, _ = self.create_project(files={'myfile': "contents"})
        project2_url, rev = self.create_project(
            files={'nestedfile': "contents"})

        self.svn = SVN(folder=self.gimme_tmp())
        self.svn.checkout(url=project_url)
        self.svn.run(self._propset_cmd("subrepo", rev, project2_url))
        self.svn.run('commit -m "add external"')
        self.svn.update()
        self.assertTrue(self.svn.is_pristine())

        self.svn_subrepo = SVN(folder=os.path.join(self.svn.folder, 'subrepo'))
        self.assertTrue(self.svn_subrepo.is_pristine())

    def test_modified_external(self):
        with open(os.path.join(self.svn.folder, "subrepo", "nestedfile"),
                  "a") as f:
            f.write("cosass")
        self.assertFalse(self.svn_subrepo.is_pristine())
        self.assertFalse(self.svn.is_pristine())

    def test_commit_external(self):
        with open(os.path.join(self.svn.folder, "subrepo", "nestedfile"),
                  "a") as f:
            f.write("cosass")
        self.svn_subrepo.run('commit -m "up external"')
        self.assertFalse(self.svn_subrepo.is_pristine())
        self.assertFalse(self.svn.is_pristine())

        self.svn_subrepo.update()
        self.assertTrue(self.svn_subrepo.is_pristine())
        self.assertFalse(self.svn.is_pristine())

    def test_untracked_external(self):
        with open(os.path.join(self.svn.folder, "subrepo", "other_file"),
                  "w") as f:
            f.write("cosass")
        self.assertFalse(self.svn_subrepo.is_pristine())
        self.assertFalse(self.svn.is_pristine())

    def test_ignored_external(self):
        file_to_ignore = "secret.txt"
        with open(os.path.join(self.svn_subrepo.folder, file_to_ignore),
                  "w") as f:
            f.write("cosas")

        self.svn_subrepo.run("propset svn:ignore {} .".format(file_to_ignore))
        self.assertFalse(self.svn_subrepo.is_pristine())
        self.assertFalse(self.svn.is_pristine())

        self.svn_subrepo.run('commit -m "add ignored file"')
        self.assertTrue(self.svn_subrepo.is_pristine())
        self.assertFalse(self.svn.is_pristine())

        subrepo_rev = self.svn_subrepo.get_revision()
        self.svn.run(
            self._propset_cmd("subrepo", subrepo_rev,
                              self.svn_subrepo.get_remote_url()))
        self.assertTrue(self.svn_subrepo.is_pristine())
        self.assertFalse(self.svn.is_pristine())

        self.svn.run('commit -m "change property"')
        self.svn.update()
        self.assertTrue(self.svn.is_pristine())
Esempio n. 12
0
 def test_checkout(self):
     svn = SVN(folder=self.gimme_tmp())
     svn.checkout(url=self.repo_url)
     self.assertTrue(svn.is_pristine())