コード例 #1
0
    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
コード例 #2
0
    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
コード例 #3
0
    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
コード例 #4
0
    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
コード例 #5
0
    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
コード例 #6
0
    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
コード例 #7
0
ファイル: git_wrapper.py プロジェクト: Tuxdude/repobuddy
    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
コード例 #8
0
ファイル: git_wrapper.py プロジェクト: Tuxdude/repobuddy
    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
コード例 #9
0
ファイル: git_wrapper.py プロジェクト: Tuxdude/repobuddy
    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
コード例 #10
0
ファイル: git_wrapper.py プロジェクト: Tuxdude/repobuddy
    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
コード例 #11
0
ファイル: git_wrapper.py プロジェクト: Tuxdude/repobuddy
    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
コード例 #12
0
ファイル: git_wrapper.py プロジェクト: Tuxdude/repobuddy
    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
コード例 #13
0
    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
コード例 #14
0
    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
コード例 #15
0
    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
コード例 #16
0
    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
コード例 #17
0
    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
コード例 #18
0
ファイル: git_wrapper.py プロジェクト: Tuxdude/repobuddy
    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
コード例 #19
0
ファイル: git_wrapper.py プロジェクト: Tuxdude/repobuddy
    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
コード例 #20
0
ファイル: git_wrapper.py プロジェクト: Tuxdude/repobuddy
    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
コード例 #21
0
ファイル: git_wrapper.py プロジェクト: Tuxdude/repobuddy
    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
コード例 #22
0
    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
コード例 #23
0
ファイル: git_wrapper.py プロジェクト: Tuxdude/repobuddy
    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
コード例 #24
0
ファイル: command_handler.py プロジェクト: Tuxdude/repobuddy
    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
コード例 #25
0
ファイル: command_handler.py プロジェクト: Tuxdude/repobuddy
    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
コード例 #26
0
    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