def test_uncommitted_no_changes(self): self._raw_git_clone( type(self)._repos_dir, type(self)._origin_repo, 'master', 'test-clone') base_dir = _os.path.join(type(self)._repos_dir, 'test-clone') git = GitWrapper(base_dir) self.assertItemsEqual(git.get_uncommitted_staged_files(), []) return
def test_current_tag_no_tag(self): self._raw_git_clone( type(self)._repos_dir, type(self)._origin_repo, 'master', 'test-clone') base_dir = _os.path.join(type(self)._repos_dir, 'test-clone') git = GitWrapper(base_dir) self.assertIsNone(git.get_current_tag()) return
def test_current_branch_valid_repo(self): self._raw_git_clone( type(self)._repos_dir, type(self)._origin_repo, 'master', 'test-clone') base_dir = _os.path.join(type(self)._repos_dir, 'test-clone') git = GitWrapper(base_dir) self.assertEqual(git.get_current_branch(), 'master') return
def test_update_index_valid_repo(self): self._raw_git_clone( type(self)._repos_dir, type(self)._origin_repo, 'master', 'test-clone') base_dir = _os.path.join(type(self)._repos_dir, 'test-clone') git = GitWrapper(base_dir) git.update_index() return
def test_current_branch_detached_head(self): self._raw_git_clone( type(self)._repos_dir, type(self)._origin_repo, 'master', 'test-clone') base_dir = _os.path.join(type(self)._repos_dir, 'test-clone') ShellHelper.exec_command(_shlex.split('git checkout HEAD^'), base_dir) git = GitWrapper(base_dir) self.assertIsNone(git.get_current_branch()) return
def test_current_tag_lightweight_tag(self): self._raw_git_clone( type(self)._repos_dir, type(self)._origin_repo, 'master', 'test-clone') base_dir = _os.path.join(type(self)._repos_dir, 'test-clone') ShellHelper.exec_command(_shlex.split('git tag tag-v1'), base_dir) git = GitWrapper(base_dir) self.assertEqual(git.get_current_tag(), 'tag-v1') return
def test_current_branch_invalid_repo(self): self._raw_git_clone( type(self)._repos_dir, type(self)._origin_repo, 'master', 'test-clone') base_dir = _os.path.join(type(self)._repos_dir, 'test-clone') git_dir = _os.path.join(base_dir, '.git') ShellHelper.remove_dir(git_dir) git = GitWrapper(base_dir) with self.assertRaisesRegexp( GitWrapperError, r'^Command \'git symbolic-ref HEAD\' failed$'): git.get_current_branch() return
def test_unstaged_with_files(self): self._raw_git_clone( type(self)._repos_dir, type(self)._origin_repo, 'master', 'test-clone') base_dir = _os.path.join(type(self)._repos_dir, 'test-clone') ShellHelper.append_text_to_file('Modifying existing file...', 'README', base_dir) ShellHelper.remove_file(_os.path.join(base_dir, 'dummy')) git = GitWrapper(base_dir) self.assertItemsEqual(git.get_unstaged_files(), ['M\tREADME', 'D\tdummy']) return
def test_untracked_with_files(self): self._raw_git_clone( type(self)._repos_dir, type(self)._origin_repo, 'master', 'test-clone') base_dir = _os.path.join(type(self)._repos_dir, 'test-clone') ShellHelper.append_text_to_file('Untracked file here...', 'untracked-test', base_dir) ShellHelper.append_text_to_file('Untracked file here too...', 'untracked-test2', base_dir) git = GitWrapper(base_dir) self.assertItemsEqual(git.get_untracked_files(), ['untracked-test', 'untracked-test2']) return
def test_update_index_invalid_repo(self): self._raw_git_clone( type(self)._repos_dir, type(self)._origin_repo, 'master', 'test-clone') base_dir = _os.path.join(type(self)._repos_dir, 'test-clone') git_dir = _os.path.join(base_dir, '.git') ShellHelper.remove_dir(git_dir) with self.assertRaisesRegexp( GitWrapperError, r'^Command \'git update-index -q --ignore-submodules ' + r'--refresh\' failed$'): git = GitWrapper(base_dir) git.update_index() return
def _git_wrapper_clone_helper(self, base_dir, url, branch, dest, remove_base_dir=False): clone_dir = _os.path.join(base_dir, dest) if not remove_base_dir: self._set_tear_down_cb(self._clone_tear_down_cb, clone_dir) else: self._set_tear_down_cb(self._clone_tear_down_cb, base_dir) git = GitWrapper(base_dir) git.clone(url, branch, dest) return
def test_unstaged_with_files(self): self._raw_git_clone( type(self)._repos_dir, type(self)._origin_repo, 'master', 'test-clone') base_dir = _os.path.join(type(self)._repos_dir, 'test-clone') ShellHelper.append_text_to_file( 'Modifying existing file...', 'README', base_dir) ShellHelper.remove_file(_os.path.join(base_dir, 'dummy')) git = GitWrapper(base_dir) self.assertItemsEqual(git.get_unstaged_files(), ['M\tREADME', 'D\tdummy']) return
def _exec_status(self): if not self._is_client_initialized(): raise CommandHandlerError( 'Error: Uninitialized client, ' + 'please run init to initialize the client first') # Parse the manifest XML self._parse_manifest_xml() # Get the client spec name from client info client = self._get_client_spec(self._get_client_info()) # Process each repo in the Client Spec for repo in client.repo_list: git = GitWrapper(_os.path.join(self._current_dir, repo.destination)) Logger.msg('####################################################') Logger.msg('Repo: ' + repo.destination) Logger.msg('Remote URL: ' + repo.url) git.update_index() current_branch = git.get_current_branch() dirty = False if current_branch is None: current_branch = 'Detached HEAD' if current_branch != repo.branch: Logger.msg('Original Branch: ' + repo.branch) Logger.msg('Current Branch: ' + current_branch + '\n') else: Logger.msg('Branch: ' + repo.branch + '\n') untracked_files = git.get_untracked_files() if len(untracked_files) != 0: Logger.msg('Untracked Files: \n' + '\n'.join(untracked_files) + '\n') dirty = True unstaged_files = git.get_unstaged_files() if len(unstaged_files) != 0: Logger.msg('Unstaged Files: \n' + '\n'.join(unstaged_files) + '\n') dirty = True uncommitted_staged_files = git.get_uncommitted_staged_files() if len(uncommitted_staged_files) != 0: Logger.msg('Uncommitted Changes: \n' + '\n'.join(uncommitted_staged_files) + '\n') dirty = True if not dirty: Logger.msg('No uncommitted changes') Logger.msg('####################################################') return
def test_untracked_with_files(self): self._raw_git_clone( type(self)._repos_dir, type(self)._origin_repo, 'master', 'test-clone') base_dir = _os.path.join(type(self)._repos_dir, 'test-clone') ShellHelper.append_text_to_file( 'Untracked file here...', 'untracked-test', base_dir) ShellHelper.append_text_to_file( 'Untracked file here too...', 'untracked-test2', base_dir) git = GitWrapper(base_dir) self.assertItemsEqual( git.get_untracked_files(), ['untracked-test', 'untracked-test2']) return
def _exec_status(self): if not self._is_client_initialized(): raise CommandHandlerError( 'Error: Uninitialized client, ' + 'please run init to initialize the client first') # Parse the manifest XML self._parse_manifest_xml() # Get the client spec name from client info client = self._get_client_spec(self._get_client_info()) # Process each repo in the Client Spec for repo in client.repo_list: git = GitWrapper( _os.path.join(self._current_dir, repo.destination)) Logger.msg('####################################################') Logger.msg('Repo: ' + repo.destination) Logger.msg('Remote URL: ' + repo.url) git.update_index() current_branch = git.get_current_branch() dirty = False if current_branch is None: current_branch = 'Detached HEAD' if current_branch != repo.branch: Logger.msg('Original Branch: ' + repo.branch) Logger.msg('Current Branch: ' + current_branch + '\n') else: Logger.msg('Branch: ' + repo.branch + '\n') untracked_files = git.get_untracked_files() if len(untracked_files) != 0: Logger.msg( 'Untracked Files: \n' + '\n'.join(untracked_files) + '\n') dirty = True unstaged_files = git.get_unstaged_files() if len(unstaged_files) != 0: Logger.msg( 'Unstaged Files: \n' + '\n'.join(unstaged_files) + '\n') dirty = True uncommitted_staged_files = git.get_uncommitted_staged_files() if len(uncommitted_staged_files) != 0: Logger.msg('Uncommitted Changes: \n' + '\n'.join(uncommitted_staged_files) + '\n') dirty = True if not dirty: Logger.msg('No uncommitted changes') Logger.msg('####################################################') return
def _exec_init(self, args): if self._is_client_initialized(): raise CommandHandlerError('Error: Client is already initialized') # Download the manifest XML self._get_manifest_xml() # Parse the manifest XML self._parse_manifest_xml() # Get the Client Spec corresponding to the Command line argument client_spec = self._get_client_spec(args.client_spec) # Process each repo in the Client Spec for repo in client_spec.repo_list: git = GitWrapper(self._current_dir) git.clone(repo.url, repo.branch, repo.destination) # Create the client file, writing the following # The manifest file name # The client spec chosen self._store_client_info(args.client_spec) return