def test_tag_from_output(self): """Test getting a tag from a pull output.""" http_url = "https://github.com/niosus/catkin_tools_fetch" _, output = GitBridge.clone("catkin_tools_fetch", http_url, self.test_dir) output = GitBridge.pull(self.test_dir, "master") tag = Updater.tag_from_output(output) self.assertEqual(tag, Updater.UP_TO_DATE_TAG)
def test_pull(self): """Test pulling a repository.""" http_url = "https://github.com/niosus/catkin_tools_fetch" _, output = GitBridge.clone("catkin_tools_fetch", http_url, self.test_dir) output = GitBridge.pull(self.test_dir, "master") expected_msg = b"""From https://github.com/niosus/catkin_tools_fetch * branch master -> FETCH_HEAD""" self.assertTrue(output.startswith(expected_msg))
def test_clone(self): """Test if cloning works as expected.""" wrong_url = "https://github.com/niosus" name, result = GitBridge.clone("name", wrong_url, self.test_dir) self.assertEqual(name, "name") self.assertEqual(result, GitBridge.ERROR_TAG) http_url = "https://github.com/niosus/catkin_tools_fetch" _, result = GitBridge.clone("", http_url, self.test_dir) self.assertEqual(result, GitBridge.CLONED_TAG.format(branch="master")) _, result = GitBridge.clone("", http_url, ".") self.assertEqual(result, GitBridge.EXISTS_TAG)
def test_update_full_simple(self): """Test updater end to end on single repo.""" http_url = "https://github.com/niosus/catkin_tools_fetch" GitBridge.clone("fetch", http_url, self.test_dir) pkg = MagicMock() type(pkg).name = PropertyMock(return_value="pkg") packages = {".": pkg} updater = Updater(self.test_dir, packages, "abort") selected_packages = [pkg.name] status_msgs = updater.update_packages(selected_packages) self.assertEquals(len(status_msgs), 1) self.assertEquals(status_msgs[0][0], "pkg") self.assertEquals(status_msgs[0][1], colored(Updater.UP_TO_DATE_TAG, "green"))
def test_repository_exists(self): """Test behavior if repository exists.""" http_url = "https://github.com/niosus/catkin_tools_fetch" dependency = Dependency(name='test', url=http_url) dep_res, exists = GitBridge.repository_exists(dependency) self.assertTrue(exists) self.assertEqual(dep_res.name, dependency.name) wrong_url = "https://github.com/niosus" dependency = Dependency(name='test', url=wrong_url) dep_res, exists = GitBridge.repository_exists(dependency) self.assertFalse(exists) dependency = Dependency(name='empty', url='') dep_res, exists = GitBridge.repository_exists(dependency) self.assertFalse(exists)
def pick_tag(self, folder, package): """Pick result tag for a folder.""" if self.use_preprint: msg = " {}: {}".format(Tools.decorate(package.name), Updater.RUNNING_TAG) self.printer.add_msg(package.name, msg) output, branch, has_changes = GitBridge.status(folder) if has_changes: return package, Updater.CHANGES_TAG try: output = GitBridge.pull(folder, branch) return package, Updater.tag_from_output(output) except subprocess.CalledProcessError as e: log.debug(" git pull returned error: %s", e) return package, Updater.ERROR_TAG
def __clone_dependency(self, pkg_name, url, dep_path, branch): """Clone a single dependency. Return a future to the clone process.""" if self.use_preprint: msg = " {}: {}".format(Tools.decorate(pkg_name), Downloader.CLONING_TAG) self.printer.add_msg(pkg_name, msg) return GitBridge.clone(pkg_name, url, dep_path, branch)
def test_status(self): """Test that git status gives us branch and status.""" http_url = "https://github.com/niosus/catkin_tools_fetch" name, result = GitBridge.clone("test", http_url, self.test_dir) self.assertEqual(name, "test") self.assertEqual(result, GitBridge.CLONED_TAG.format(branch="master")) output, branch, has_changes = GitBridge.status(self.test_dir) expected_output = b"## master...origin/master\n" self.assertEqual(output, expected_output) self.assertEqual(branch, "master") self.assertFalse(has_changes) test_file = os.path.join(self.test_dir, "test_file.txt") with open(test_file, 'a'): output, branch, has_changes = GitBridge.status(self.test_dir) expected_output = b"""## master...origin/master ?? test_file.txt """ self.assertEqual(output, expected_output) self.assertEqual(branch, "master") self.assertTrue(has_changes)
def test_get_branch_name(self): """Test getting the branch name.""" test_output = """## master...origin/master M package.xml M src/nodes/full_stack.cpp M src/scripts/CMakeLists.txt M src/utils/velodyne_utils.cpp M src/visualization/visualizer.cpp ?? src/scripts/kitti_show_boxes.cpp """ print(test_output) branch = GitBridge.get_branch_name(test_output) self.assertEqual(branch, "master")
def __check_dependency(self, dependency): if self.use_preprint: msg = " {}: {}".format(Tools.decorate(dependency.name), Downloader.CHECKING_TAG) self.printer.add_msg(dependency.name, msg) return GitBridge.repository_exists(dependency)