def setUpClass(self): HGClientTestSetups.setUpClass() url = self.local_url client = HgClient(self.local_path) client.checkout(url) # after setting up "local" repo, change files and make some changes subprocess.check_call("rm deleted-fs.txt", shell=True, cwd=self.local_path) subprocess.check_call("hg rm deleted.txt", shell=True, cwd=self.local_path) f = io.open(os.path.join(self.local_path, "modified.txt"), 'a') f.write('0123456789abcdef') f.close() f = io.open(os.path.join(self.local_path, "modified-fs.txt"), 'a') f.write('0123456789abcdef') f.close() f = io.open(os.path.join(self.local_path, "added-fs.txt"), 'w') f.write('0123456789abcdef') f.close() f = io.open(os.path.join(self.local_path, "added.txt"), 'w') f.write('0123456789abcdef') f.close() subprocess.check_call("hg add added.txt", shell=True, cwd=self.local_path)
def setUpClass(self): HGClientTestSetups.setUpClass() url = self.local_url client = HgClient(self.local_path) client.checkout(url) self.basepath_export = os.path.join(self.root_directory, 'export')
def test_get_remote_version(self): url = self.local_url version = self.local_version client = HgClient(self.local_path) client.checkout(url, version='default') self.assertEqual(client.get_remote_version(fetch=True), self.local_version) self.assertEqual(client.get_version(), self.local_version) for cmd in [ "hg checkout default", "touch remote_new.txt", "hg add remote_new.txt", "hg commit -m remote_new" ]: subprocess.check_call(cmd, shell=True, cwd=self.remote_path) po = subprocess.Popen("hg log --template '{node|short}' -l1", shell=True, cwd=self.remote_path, stdout=subprocess.PIPE) remote_new_version = po.stdout.read().decode('UTF-8').rstrip( "'").lstrip("'") self.assertNotEqual(self.local_version, remote_new_version) self.assertEqual(client.get_remote_version(fetch=False), self.local_version) self.assertEqual(client.get_remote_version(fetch=True), remote_new_version) self.assertEqual(client.get_remote_version(fetch=False), remote_new_version) self.assertEqual(client.get_version(), self.local_version)
def test_checkout_dir_exists(self): url = self.remote_path client = HgClient(self.local_path) self.assertFalse(client.path_exists()) os.makedirs(self.local_path) self.assertTrue(client.checkout(url)) # non-empty self.assertFalse(client.checkout(url))
def test_get_log_defaults(self): client = HgClient(self.local_path) client.checkout(self.local_url) log = client.get_log() self.assertEquals(4, len(log)) self.assertEquals("modified", log[0]["message"]) for key in ["id", "author", "email", "date", "message"]: self.assertTrue(log[0][key] is not None, key)
def test_get_log_defaults(self): client = HgClient(self.local_path) client.checkout(self.local_url) log = client.get_log(limit=1)[0] affected = client.get_affected_files(log['id']) self.assertEqual(sorted(['deleted-fs.txt', 'deleted.txt']), sorted(affected))
def test_get_log_defaults(self): client = HgClient(self.local_path) client.checkout(self.local_url) log = client.get_log() self.assertEquals(4, len(log)) self.assertEquals('modified', log[0]['message']) for key in ['id', 'author', 'email', 'date', 'message']: self.assertTrue(log[0][key] is not None, key)
def test_get_url_by_reading(self): url = self.local_url client = HgClient(self.local_path) client.checkout(url, self.local_version) self.assertTrue(client.path_exists()) self.assertTrue(client.detect_presence()) self.assertEqual(client.get_url(), self.local_url) self.assertEqual(client.get_version(), self.local_version) self.assertEqual(client.get_version(self.local_version_init[0:6]), self.local_version_init) self.assertEqual(client.get_version("test_tag"), self.local_version_init)
def test_get_current_version_label(self): url = self.local_url version = self.local_version client = HgClient(self.local_path) client.checkout(url, version='test_tag') self.assertEqual(client.get_current_version_label(), 'default') client.update(version='default') self.assertEqual(client.get_current_version_label(), 'default') client.update(version='test_branch') self.assertEqual(client.get_current_version_label(), 'test_branch')
def test_get_remote_version(self): url = self.local_url version = self.local_version client = HgClient(self.local_path) client.checkout(url) self.assertEqual(client.get_remote_version(fetch=True), self.local_version) client.checkout(url, version='test_tag') self.assertEqual(client.get_remote_version(fetch=True), self.local_version) client.update(version='default') self.assertEqual(client.get_remote_version(fetch=True), self.local_version) client.update(version='test_branch') self.assertEqual(client.get_remote_version(fetch=True), self.branch_version)
def test_checkout_specific_version_and_update(self): url = self.local_url version = self.local_version client = HgClient(self.local_path) self.assertFalse(client.path_exists()) self.assertFalse(client.detect_presence()) self.assertFalse(client.detect_presence()) self.assertTrue(client.checkout(url, version)) self.assertTrue(client.path_exists()) self.assertTrue(client.detect_presence()) self.assertEqual(client.get_path(), self.local_path) self.assertEqual(client.get_url(), url) self.assertEqual(client.get_version(), version) new_version = self.local_version_second self.assertTrue(client.update(new_version)) self.assertEqual(client.get_version(), new_version) self.assertTrue(client.update()) self.assertEqual(client.get_version(), self.local_version) self.assertTrue(client.update(new_version)) self.assertEqual(client.get_version(), new_version) self.assertTrue(client.update('')) self.assertEqual(client.get_version(), self.local_version)
def test_checkout_specific_version_and_update(self): from vcstools.hg import HgClient directory = tempfile.mkdtemp() subdir = "checkout_specific_version_test" self.directories[subdir] = directory local_path = os.path.join(directory, "anyvc") url = self.readonly_url version = self.readonly_version client = HgClient(local_path) self.assertFalse(client.path_exists()) self.assertFalse(client.detect_presence()) self.assertFalse(client.detect_presence()) self.assertTrue(client.checkout(url, version)) self.assertTrue(client.path_exists()) self.assertTrue(client.detect_presence()) self.assertEqual(client.get_path(), local_path) self.assertEqual(client.get_url(), url) self.assertEqual(client.get_version(), version) new_version = self.readonly_version_second self.assertTrue(client.update(new_version)) self.assertEqual(client.get_version(), new_version) shutil.rmtree(directory) self.directories.pop(subdir)
def test_checkout(self): url = self.local_url client = HgClient(self.local_path) self.assertFalse(client.path_exists()) self.assertFalse(client.detect_presence()) self.assertTrue(client.checkout(url)) self.assertTrue(client.path_exists()) self.assertTrue(client.detect_presence()) self.assertEqual(client.get_path(), self.local_path) self.assertEqual(client.get_url(), url) self.assertEqual(client.get_version(), self.local_version)
def test_checkout_into_subdir_without_existing_parent(self): local_path = os.path.join(self.local_path, "nonexistant_subdir") url = self.local_url client = HgClient(local_path) self.assertFalse(client.path_exists()) self.assertFalse(client.detect_presence()) self.assertTrue(client.checkout(url)) self.assertTrue(client.path_exists()) self.assertTrue(client.detect_presence()) self.assertEqual(client.get_path(), local_path) self.assertEqual(client.get_url(), url)
def setUp(self): from vcstools.hg import HgClient directory = tempfile.mkdtemp() self.directories = dict(setUp=directory) remote_path = os.path.join(directory, "remote") os.makedirs(remote_path) # create a "remote" repo subprocess.check_call(["hg", "init"], cwd=remote_path) subprocess.check_call(["touch", "fixed.txt"], cwd=remote_path) subprocess.check_call(["hg", "add", "fixed.txt"], cwd=remote_path) subprocess.check_call(["hg", "commit", "-m", "initial"], cwd=remote_path) po = subprocess.Popen( ["hg", "log", "--template", "'{node|short}'", "-l1"], cwd=remote_path, stdout=subprocess.PIPE) self.readonly_version_init = po.stdout.read().rstrip("'").lstrip("'") # in hg, tagging creates an own changeset, so we need to fetch version before tagging subprocess.check_call(["hg", "tag", "test_tag"], cwd=remote_path) # files to be modified in "local" repo subprocess.check_call(["touch", "modified.txt"], cwd=remote_path) subprocess.check_call(["touch", "modified-fs.txt"], cwd=remote_path) subprocess.check_call(["hg", "add", "modified.txt", "modified-fs.txt"], cwd=remote_path) subprocess.check_call(["hg", "commit", "-m", "initial"], cwd=remote_path) po = subprocess.Popen( ["hg", "log", "--template", "'{node|short}'", "-l1"], cwd=remote_path, stdout=subprocess.PIPE) self.readonly_version_second = po.stdout.read().rstrip("'").lstrip("'") subprocess.check_call(["touch", "deleted.txt"], cwd=remote_path) subprocess.check_call(["touch", "deleted-fs.txt"], cwd=remote_path) subprocess.check_call(["hg", "add", "deleted.txt", "deleted-fs.txt"], cwd=remote_path) subprocess.check_call(["hg", "commit", "-m", "modified"], cwd=remote_path) po = subprocess.Popen( ["hg", "log", "--template", "'{node|short}'", "-l1"], cwd=remote_path, stdout=subprocess.PIPE) self.readonly_version = po.stdout.read().rstrip("'").lstrip("'") self.readonly_path = os.path.join(directory, "readonly") self.readonly_url = remote_path client = HgClient(self.readonly_path) self.assertTrue(client.checkout(remote_path, self.readonly_version))
def test_get_remote_version(self): url = self.local_url version = self.local_version client = HgClient(self.local_path) client.checkout(url, version='default') self.assertEqual(client.get_remote_version(fetch=True), self.local_version) self.assertEqual(client.get_version(), self.local_version) for cmd in [ "hg checkout default", "touch remote_new.txt", "hg add remote_new.txt", "hg commit -m remote_new"]: subprocess.check_call(cmd, shell=True, cwd=self.remote_path) po = subprocess.Popen("hg log --template '{node|short}' -l1", shell=True, cwd=self.remote_path, stdout=subprocess.PIPE) remote_new_version = po.stdout.read().decode('UTF-8').rstrip("'").lstrip("'") self.assertNotEqual(self.local_version, remote_new_version) self.assertEqual(client.get_remote_version(fetch=False), self.local_version) self.assertEqual(client.get_remote_version(fetch=True), remote_new_version) self.assertEqual(client.get_remote_version(fetch=False), remote_new_version) self.assertEqual(client.get_version(), self.local_version)
def test_checkout_into_subdir_without_existing_parent(self): # test for #3497 from vcstools.hg import HgClient directory = tempfile.mkdtemp() self.directories["checkout_test"] = directory local_path = os.path.join(directory, "anyvc", "nonexistant_subdir") url = self.readonly_url client = HgClient(local_path) self.assertFalse(client.path_exists()) self.assertFalse(client.detect_presence()) self.assertFalse(client.detect_presence()) self.assertTrue(client.checkout(url)) self.assertTrue(client.path_exists()) self.assertTrue(client.detect_presence()) self.assertEqual(client.get_path(), local_path) self.assertEqual(client.get_url(), url)
def test_checkout(self): from vcstools.hg import HgClient directory = tempfile.mkdtemp() self.directories["checkout_test"] = directory local_path = os.path.join(directory, "anyvc") url = self.readonly_url client = HgClient(local_path) self.assertFalse(client.path_exists()) self.assertFalse(client.detect_presence()) self.assertFalse(client.detect_presence()) self.assertTrue(client.checkout(url)) self.assertTrue(client.path_exists()) self.assertTrue(client.detect_presence()) self.assertEqual(client.get_path(), local_path) self.assertEqual(client.get_url(), url)
def setUp(self): from vcstools.hg import HgClient directory = tempfile.mkdtemp() self.directories = dict(setUp=directory) remote_path = os.path.join(directory, "remote") os.makedirs(remote_path) # create a "remote" repo subprocess.check_call(["hg", "init"], cwd=remote_path) subprocess.check_call(["touch", "fixed.txt"], cwd=remote_path) subprocess.check_call(["hg", "add", "fixed.txt"], cwd=remote_path) subprocess.check_call(["hg", "commit", "-m", "initial"], cwd=remote_path) po = subprocess.Popen(["hg", "log", "--template", "'{node|short}'", "-l1"], cwd=remote_path, stdout=subprocess.PIPE) self.readonly_version_init = po.stdout.read().rstrip("'").lstrip("'") # in hg, tagging creates an own changeset, so we need to fetch version before tagging subprocess.check_call(["hg", "tag", "test_tag"], cwd=remote_path) # files to be modified in "local" repo subprocess.check_call(["touch", "modified.txt"], cwd=remote_path) subprocess.check_call(["touch", "modified-fs.txt"], cwd=remote_path) subprocess.check_call(["hg", "add", "modified.txt", "modified-fs.txt"], cwd=remote_path) subprocess.check_call(["hg", "commit", "-m", "initial"], cwd=remote_path) po = subprocess.Popen(["hg", "log", "--template", "'{node|short}'", "-l1"], cwd=remote_path, stdout=subprocess.PIPE) self.readonly_version_second = po.stdout.read().rstrip("'").lstrip("'") subprocess.check_call(["touch", "deleted.txt"], cwd=remote_path) subprocess.check_call(["touch", "deleted-fs.txt"], cwd=remote_path) subprocess.check_call(["hg", "add", "deleted.txt", "deleted-fs.txt"], cwd=remote_path) subprocess.check_call(["hg", "commit", "-m", "modified"], cwd=remote_path) po = subprocess.Popen(["hg", "log", "--template", "'{node|short}'", "-l1"], cwd=remote_path, stdout=subprocess.PIPE) self.readonly_version = po.stdout.read().rstrip("'").lstrip("'") self.readonly_path = os.path.join(directory, "readonly") self.readonly_url = remote_path client = HgClient(self.readonly_path) self.assertTrue(client.checkout(remote_path, self.readonly_version))
def test_get_log_path(self): client = HgClient(self.local_path) client.checkout(self.local_url) log = client.get_log(relpath='fixed.txt') self.assertEquals('initial', log[0]['message'])
def test_get_log_limit(self): client = HgClient(self.local_path) client.checkout(self.local_url) log = client.get_log(limit=1) self.assertEquals(1, len(log)) self.assertEquals('modified', log[0]['message'])
def test_checkout_emptystringversion(self): # special test to check that version '' means the same as None url = self.local_url client = HgClient(self.local_path) self.assertTrue(client.checkout(url, '')) self.assertEqual(client.get_version(), self.local_version)
def setUpClass(self): HGClientTestSetups.setUpClass() client = HgClient(self.local_path) client.checkout(self.local_url)
def setUpClass(self): HGClientTestSetups.setUpClass() url = self.local_url client = HgClient(self.local_path) client.checkout(url)
def test_get_log_path(self): client = HgClient(self.local_path) client.checkout(self.local_url) log = client.get_log(relpath="fixed.txt") self.assertEquals("initial", log[0]["message"])