示例#1
0
    def test_diverged_remote(self):
        stage_dir('serve_clone')
        check_call_silent(['git', 'clone', self.stage, '.'])
        check_call_silent(['git', 'fetch', 'origin', 'gh-pages:gh-pages'])
        git_config()

        with pushd(self.stage):
            with git_utils.Commit('gh-pages', 'add file') as commit:
                commit.add_file(
                    git_utils.FileInfo('file-origin.txt', 'this is some text'))
            origin_rev = git_utils.get_latest_commit('gh-pages')

        with git_utils.Commit('gh-pages', 'add file') as commit:
            commit.add_file(git_utils.FileInfo('file.txt',
                                               'this is some text'))
        clone_rev = git_utils.get_latest_commit('gh-pages')
        check_call_silent(['git', 'fetch', 'origin'])

        self._check_serve(err_output=(
            'warning: gh-pages has diverged from origin/gh-pages\n' +
            '  Pass --ignore to ignore this or --rebase to rebase onto ' +
            'remote\n'))
        self.assertEqual(git_utils.get_latest_commit('gh-pages'), clone_rev)

        self._check_serve(['--ignore'])
        self.assertEqual(git_utils.get_latest_commit('gh-pages'), clone_rev)

        self._check_serve(['--rebase'])
        self.assertEqual(git_utils.get_latest_commit('gh-pages'), origin_rev)
示例#2
0
    def setUp(self):
        self.stage = stage_dir('serve')
        git_init()
        copytree(os.path.join(test_data_dir, 'basic_theme'), self.stage)
        check_call_silent(['git', 'add', 'mkdocs.yml', 'docs'])
        check_call_silent(['git', 'commit', '-m', 'initial commit'])

        with git_utils.Commit('gh-pages', 'add file') as commit:
            commit.add_file(git_utils.FileInfo('index.html', 'main page'))
            commit.add_file(git_utils.FileInfo('dir/index.html', 'sub page'))
示例#3
0
 def test_dir(self):
     files = sorted(git_utils.walk_files('branch', 'dir'),
                    key=lambda x: x.path)
     self.assertEqual(files, [
         git_utils.FileInfo(os.path.join('dir', 'file 2.txt'),
                            b'more text'),
         git_utils.FileInfo(os.path.join('dir', 'file.txt'), b'more text'),
         git_utils.FileInfo(os.path.join('dir', 'subdir', 'file 3.txt'),
                            b'even more text'),
     ])
示例#4
0
    def test_overwrite_version(self):
        with git_utils.Commit('gh-pages', 'add versions.json') as commit:
            commit.add_file(
                git_utils.FileInfo(
                    'versions.json',
                    '[{"version": "1.0", "title": "1.0", "aliases": ["latest"]}]',
                ))
            commit.add_file(git_utils.FileInfo('1.0/old-file.txt', ''))
            commit.add_file(git_utils.FileInfo('latest/old-file.txt', ''))

        commands.deploy(self.stage, '1.0', '1.0.1', ['greatest'])
        check_call_silent(['git', 'checkout', 'gh-pages'])
        self._test_deploy(expected_versions=[
            versions.VersionInfo('1.0', '1.0.1', ['latest', 'greatest'])
        ])
示例#5
0
    def test_overwrite_alias(self):
        with git_utils.Commit('gh-pages', 'add versions.json') as commit:
            commit.add_file(
                git_utils.FileInfo(
                    'versions.json',
                    '[{"version": "1.0", "title": "1.0", "aliases": ["latest"]}]',
                ))
            commit.add_file(git_utils.FileInfo('1.0/file.txt', ''))
            commit.add_file(git_utils.FileInfo('latest/file.txt', ''))

        with self.assertRaises(ValueError):
            commands.deploy(self.stage, '2.0', '2.0.0', ['latest'])
        check_call_silent(['git', 'checkout', 'gh-pages'])
        self._test_deploy('add versions.json',
                          [versions.VersionInfo('1.0', '1.0', ['latest'])])
示例#6
0
 def setUp(self):
     self.stage = stage_dir('read_file')
     os.chdir(self.stage)
     git_init()
     with git_utils.Commit('branch', 'add file') as commit:
         commit.add_file(git_utils.FileInfo('file.txt',
                                            'this is some text'))
示例#7
0
    def setUp(self):
        self.stage = stage_dir('walk_files')
        os.chdir(self.stage)
        git_init()
        commit_files(['file.txt'], 'initial commit')

        with git_utils.Commit('branch', 'add file') as commit:
            commit.add_file(git_utils.FileInfo('file.txt', b'text'))
            commit.add_file(
                git_utils.FileInfo(os.path.join('dir/file.txt'), b'more text'))
            commit.add_file(
                git_utils.FileInfo(os.path.join('dir', 'file 2.txt'),
                                   b'more text'))
            commit.add_file(
                git_utils.FileInfo(os.path.join('dir', 'subdir', 'file 3.txt'),
                                   b'even more text'))
示例#8
0
    def test_update_aliases(self):
        with git_utils.Commit('gh-pages', 'add versions.json') as commit:
            commit.add_file(
                git_utils.FileInfo(
                    'versions.json',
                    '[{"version": "1.0", "title": "1.0", "aliases": ["latest"]}]',
                ))
            commit.add_file(git_utils.FileInfo('1.0/file.txt', ''))
            commit.add_file(git_utils.FileInfo('latest/file.txt', ''))

        commands.deploy(self.stage, '2.0', '2.0.0', ['latest'], True)
        check_call_silent(['git', 'checkout', 'gh-pages'])
        self._test_deploy('.*', [
            versions.VersionInfo('2.0', '2.0.0', ['latest']),
            versions.VersionInfo('1.0', '1.0', []),
        ])
示例#9
0
    def test_context_already_finished(self):
        with git_utils.Commit('master', 'add file') as commit:
            commit.add_file(git_utils.FileInfo('file.txt',
                                               'this is some text'))
            commit.finish()

        check_call_silent(['git', 'checkout', 'master'])
        assertDirectory('.', {'file.txt'})
示例#10
0
    def test_finish(self):
        commit = git_utils.Commit('master', 'add file')
        commit.add_file(git_utils.FileInfo('file.txt', 'this is some text'))
        commit.finish()
        self.assertRaises(git_utils.GitError, commit.finish)
        self.assertRaises(git_utils.GitError, commit.abort)

        check_call_silent(['git', 'checkout', 'master'])
        assertDirectory('.', {'file.txt'})
示例#11
0
    def test_walk(self):
        files = sorted(git_utils.walk_real_files(self.directory),
                       key=lambda x: x.path)

        path = os.path.join(self.directory, 'file.txt')
        with open(path, 'rb') as f:
            data = f.read()

        self.assertEqual(files, [git_utils.FileInfo(path, data, self.mode)])
示例#12
0
    def test_behind_remote(self):
        with git_utils.Commit('gh-pages', 'add file') as commit:
            commit.add_file(git_utils.FileInfo('file.txt',
                                               'this is some text'))

        stage_dir('deploy_clone')
        check_call_silent(['git', 'clone', self.stage, '.'])
        check_call_silent(['git', 'fetch', 'origin', 'gh-pages:gh-pages'])
        git_config()

        with pushd(self.stage):
            with git_utils.Commit('gh-pages', 'add file') as commit:
                commit.add_file(
                    git_utils.FileInfo('file2.txt', 'this is some text'))
            origin_rev = git_utils.get_latest_commit('gh-pages')
        check_call_silent(['git', 'fetch', 'origin'])

        assertPopen(['mike', 'deploy', '1.0'])
        self.assertEqual(git_utils.get_latest_commit('gh-pages^'), origin_rev)
示例#13
0
    def setUp(self):
        self.stage = stage_dir('server')
        git_init()
        with git_utils.Commit('branch', 'add file') as commit:
            commit.add_file(git_utils.FileInfo('index.html', 'main page'))
            commit.add_file(git_utils.FileInfo('dir/index.html', 'sub page'))

        class Handler(server.GitBranchHTTPHandler):
            branch = 'branch'

            # Use a buffered response in Python 3.6+, since it's easier for
            # testing.
            if sys.version_info >= (3, 6):
                wbufsize = -1

            def log_message(self, *args):
                pass

        self.server = MockServer(('0.0.0.0', 8888), Handler)
示例#14
0
    def test_versions_exist(self):
        with git_utils.Commit('gh-pages', 'add versions.json') as commit:
            commit.add_file(
                git_utils.FileInfo(
                    'versions.json',
                    '[{"version": "1.0", "title": "1.0", "aliases": []}]',
                ))

        self.assertEqual(list(commands.list_versions()), [
            versions.VersionInfo('1.0'),
        ])
示例#15
0
    def test_handle_exception(self):
        self._add_file('file.txt')
        try:
            with git_utils.Commit('master', 'add file') as commit:
                commit.add_file(
                    git_utils.FileInfo('file2.txt', 'this is some text'))
                raise ValueError('bad')
        except ValueError:
            pass

        check_call_silent(['git', 'checkout', 'master'])
        assertDirectory('.', {'file.txt'})
示例#16
0
    def setUp(self):
        self.stage = stage_dir('list')
        git_init()
        all_versions = versions.Versions()
        all_versions.add('1.0')
        all_versions.add('2.0', '2.0.2')
        all_versions.add('3.0', '3.0.3', ['stable'])
        all_versions.add('4.0', aliases=['latest', 'dev'])

        with git_utils.Commit('gh-pages', 'commit message') as commit:
            commit.add_file(
                git_utils.FileInfo('versions.json', all_versions.dumps()))
示例#17
0
    def test_local_empty(self):
        with git_utils.Commit('gh-pages', 'add file') as commit:
            commit.add_file(git_utils.FileInfo('file.txt',
                                               'this is some text'))
        origin_rev = git_utils.get_latest_commit('gh-pages')

        stage_dir('deploy_clone')
        check_call_silent(['git', 'clone', self.stage, '.'])
        git_config()

        assertPopen(['mike', 'deploy', '1.0'])
        self.assertEqual(git_utils.get_latest_commit('gh-pages^'), origin_rev)
示例#18
0
    def test_diverged_remote(self):
        with git_utils.Commit('gh-pages', 'add file') as commit:
            commit.add_file(git_utils.FileInfo(
                'file.txt', 'this is some text'
            ))

        stage_dir('deploy_clone')
        check_call_silent(['git', 'clone', self.stage, '.'])
        check_call_silent(['git', 'fetch', 'origin', 'gh-pages:gh-pages'])
        git_config()

        with pushd(self.stage):
            with git_utils.Commit('gh-pages', 'add file') as commit:
                commit.add_file(git_utils.FileInfo(
                    'file2-origin.txt', 'this is some text'
                ))
            origin_rev = git_utils.get_latest_commit('gh-pages')

        with git_utils.Commit('gh-pages', 'add file') as commit:
            commit.add_file(git_utils.FileInfo(
                'file2.txt', 'this is some text'
            ))
        clone_rev = git_utils.get_latest_commit('gh-pages')
        check_call_silent(['git', 'fetch', 'origin'])

        assertOutput(self, ['mike', 'deploy', '1.0'], output=(
            'error: gh-pages has diverged from origin/gh-pages\n' +
            '  Pass --ignore to ignore this or --rebase to rebase onto ' +
            'remote\n'
        ), returncode=1)
        self.assertEqual(git_utils.get_latest_commit('gh-pages'), clone_rev)

        assertPopen(['mike', 'deploy', '1.0', '--ignore'])
        self.assertEqual(git_utils.get_latest_commit('gh-pages^'), clone_rev)

        assertPopen(['mike', 'deploy', '1.0', '--rebase'])
        self.assertEqual(git_utils.get_latest_commit('gh-pages^'), origin_rev)
示例#19
0
    def test_ahead_remote(self):
        origin_rev = git_utils.get_latest_commit('gh-pages')

        stage_dir('serve_clone')
        check_call_silent(['git', 'clone', self.stage, '.'])
        check_call_silent(['git', 'fetch', 'origin', 'gh-pages:gh-pages'])
        git_config()

        with git_utils.Commit('gh-pages', 'add file') as commit:
            commit.add_file(git_utils.FileInfo('file.txt',
                                               'this is some text'))
        clone_rev = git_utils.get_latest_commit('gh-pages')

        self._check_serve()
        self.assertEqual(git_utils.get_latest_commit('gh-pages'), clone_rev)
        self.assertEqual(git_utils.get_latest_commit('gh-pages^'), origin_rev)
示例#20
0
    def setUp(self):
        self.stage = stage_dir('list')
        git_init()
        copytree(os.path.join(test_data_dir, 'basic_theme'), self.stage)
        check_call_silent(['git', 'add', 'mkdocs.yml', 'docs'])
        check_call_silent(['git', 'commit', '-m', 'initial commit'])

        all_versions = versions.Versions()
        all_versions.add('1.0')
        all_versions.add('2.0', '2.0.2')
        all_versions.add('3.0', '3.0.3', ['stable'])
        all_versions.add('4.0', aliases=['latest', 'dev'])

        with git_utils.Commit('gh-pages', 'commit message') as commit:
            commit.add_file(
                git_utils.FileInfo(os.path.join(self.prefix, 'versions.json'),
                                   all_versions.dumps()))
示例#21
0
 def _mock_commit(self):
     with git_utils.Commit('gh-pages', 'add versions.json') as commit:
         commit.add_file(
             git_utils.FileInfo(
                 'versions.json',
                 '[{"version": "1.0", "title": "1.0", "aliases": ["latest"]}]',
             ))
         commit.add_file(git_utils.FileInfo('1.0/page.html', ''))
         commit.add_file(git_utils.FileInfo('1.0/file.txt', ''))
         commit.add_file(git_utils.FileInfo('1.0/dir/index.html', ''))
         commit.add_file(git_utils.FileInfo('latest/page.html', ''))
         commit.add_file(git_utils.FileInfo('latest/dir/index.html', ''))
示例#22
0
 def _add_file(self, name, branch='master'):
     with git_utils.Commit(branch, 'add file') as commit:
         commit.add_file(git_utils.FileInfo(name, 'this is some text'))
示例#23
0
 def setUp(self):
     self.stage = stage_dir('serve')
     git_init()
     with git_utils.Commit('branch', 'add file') as commit:
         commit.add_file(git_utils.FileInfo('index.html', 'main page'))
         commit.add_file(git_utils.FileInfo('dir/index.html', 'sub page'))
示例#24
0
 def test_copy_start(self):
     f = git_utils.FileInfo(os.path.join('dir', 'file.txt'), '')
     self.assertEqual(
         f.copy('destdir', 'dir'),
         git_utils.FileInfo(os.path.join('destdir', 'file.txt'), ''))