def test_update_fetch_all_tags(self): url = self.remote_path client = GitClient(self.local_path) self.assertTrue(client.checkout(url, "master")) self.assertEqual(client._get_branch(), "master") self.assertEqual(client.get_remote_version(fetch=False), self.readonly_version) self.assertEqual(client.get_remote_version(fetch=True), self.readonly_version) subprocess.check_call("touch new_file.txt", shell=True, cwd=self.remote_path) subprocess.check_call("git add *", shell=True, cwd=self.remote_path) subprocess.check_call("git commit -m newfile", shell=True, cwd=self.remote_path) po = subprocess.Popen("git log -n 1 --pretty=format:\"%H\"", shell=True, cwd=self.remote_path, stdout=subprocess.PIPE) remote_new_version = po.stdout.read().decode('UTF-8').rstrip('"').lstrip('"') self.assertNotEqual(self.readonly_version, remote_new_version) # remote version stays same until we fetch self.assertEqual(client.get_remote_version(fetch=False), self.readonly_version) self.assertEqual(client.get_remote_version(fetch=True), remote_new_version) self.assertEqual(client.get_remote_version(fetch=False), remote_new_version)
def test_get_remote_version(self): url = self.remote_path client = GitClient(path=self.local_path) client.checkout(url, version='master') self.assertEqual(client.get_remote_version(fetch=True), self.readonly_version) self.assertEqual(client.get_remote_version(fetch=False), self.readonly_version) subprocess.check_call("git reset --hard test_tag", shell=True, cwd=self.local_path) self.assertEqual(client.get_remote_version(fetch=True), self.readonly_version) client.update(version='test_branch') self.assertEqual(client.get_remote_version(fetch=True), self.readonly_version_init) client.update(version='test_branch') self.assertEqual(client.get_remote_version(fetch=False), self.readonly_version_init) # switch tracked branch subprocess.check_call('git config --replace-all branch.master.merge test_branch', shell=True, cwd=self.local_path) client.update(version='master') self.assertEqual(client.get_remote_version(fetch=False), self.readonly_version_init) # with other remote for cmd in [ 'git remote add remote2 %s' % self.remote_path, 'git config --replace-all branch.master.remote remote2', 'git fetch remote2']: subprocess.check_call(cmd, shell=True, cwd=self.local_path) self.assertEqual(client.get_remote_version(fetch=False), self.readonly_version_init)