Example #1
0
 def test_not_release_successfully_when_github_create_release_fails(self):
     fake_path_class = MagicMock(spec=Path)
     fake_requests = MagicMock(spec=requests)
     fake_post = MagicMock(spec=requests.Response).return_value
     fake_post.status_code = 401
     fake_post.text = self.valid_gh_release_response
     fake_requests.post.return_value = fake_post
     fake_version = MagicMock(spec=version)
     fake_version.main.return_value = (True, 'MyProject.conf')
     fake_changelog = MagicMock(spec=changelog)
     fake_changelog.update.return_value = ('updated', 'changelog')
     args = [
         'release',
         '--release-version',
         '0.0.1',
     ]
     runner = lambda x: StdOutput('')
     released = release.main(
         shell_cmd_runner=runner,
         _path=fake_path_class,
         _requests=fake_requests,
         _version=fake_version,
         _changelog=fake_changelog,
         leave=False,
         args=args,
     )
     self.assertFalse(released)
Example #2
0
    def test_use_git_signing_key_on_prepare(self):
        fake_path_class = MagicMock(spec=Path)
        fake_version = MagicMock(spec=version)
        fake_version.main.return_value = (True, 'MyProject.conf')
        fake_changelog = MagicMock(spec=changelog)
        fake_changelog.update.return_value = ('updated', 'changelog')

        args = [
            'prepare',
            '--git-signing-key',
            '0815',
            '--release-version',
            '0.0.1',
        ]
        called = []

        def runner(cmd):
            called.append(cmd)
            return StdOutput('')

        released = release.main(
            shell_cmd_runner=runner,
            _path=fake_path_class,
            _version=fake_version,
            _changelog=fake_changelog,
            leave=False,
            args=args,
        )
        self.assertTrue(released)
        self.assertIn("git commit -S 0815 -m 'Automatic release to 0.0.1'",
                      called)
        self.assertIn("git tag -u 0815 v0.0.1 -m 'Automatic release to 0.0.1'",
                      called)
Example #3
0
    def test_fail_sign_on_invalid_get_response(self):
        fake_path_class = MagicMock(spec=Path)
        fake_requests = MagicMock(spec=requests)
        fake_get = MagicMock(spec=requests.Response).return_value
        fake_get.status_code = 404
        fake_get.text = self.valid_gh_release_response
        fake_requests.get.return_value = fake_get
        fake_version = MagicMock(spec=version)
        fake_version.main.return_value = (True, 'MyProject.conf')
        fake_changelog = MagicMock(spec=changelog)
        fake_changelog.update.return_value = ('updated', 'changelog')
        args = [
            'sign',
            '--project',
            'foo',
            '--release-version',
            '0.0.1',
        ]

        def runner(_: str):
            return StdOutput('')

        released = release.main(
            shell_cmd_runner=runner,
            _path=fake_path_class,
            _requests=fake_requests,
            _version=fake_version,
            _changelog=fake_changelog,
            leave=False,
            args=args,
        )
        self.assertFalse(released)
Example #4
0
 def test_prepare_successfully(self):
     fake_path_class = MagicMock(spec=Path)
     fake_version = MagicMock(spec=version)
     fake_version.main.return_value = (True, 'MyProject.conf')
     fake_changelog = MagicMock(spec=changelog)
     fake_changelog.update.return_value = ('updated', 'changelog')
     args = [
         '--project',
         'testcases',
         'prepare',
         '--release-version',
         '0.0.1',
         '--next-version',
         '0.0.2dev',
     ]
     runner = lambda x: StdOutput('')
     released = release.main(
         shell_cmd_runner=runner,
         _path=fake_path_class,
         _version=fake_version,
         _changelog=fake_changelog,
         leave=False,
         args=args,
     )
     self.assertTrue(released)
Example #5
0
    def test_fail_if_tag_is_already_taken(self):
        fake_path_class = MagicMock(spec=Path)
        fake_version = MagicMock(spec=version)
        fake_changelog = MagicMock(spec=changelog)

        args = [
            'prepare',
            '--release-version',
            '0.0.1',
        ]
        runner = lambda x: StdOutput('v0.0.1'.encode())
        with self.assertRaises(ValueError,
                               msg='git tag v0.0.1 is already taken'):
            release.main(
                shell_cmd_runner=runner,
                _path=fake_path_class,
                _version=fake_version,
                _changelog=fake_changelog,
                leave=False,
                args=args,
            )
Example #6
0
    def test_release_to_specific_git_remote(self):
        fake_path_class = MagicMock(spec=Path)
        fake_requests = MagicMock(spec=requests)
        fake_post = MagicMock(spec=requests.Response).return_value
        fake_post.status_code = 201
        fake_post.text = self.valid_gh_release_response
        fake_requests.post.return_value = fake_post
        fake_version = MagicMock(spec=version)
        fake_version.main.return_value = (True, 'MyProject.conf')
        fake_changelog = MagicMock(spec=changelog)
        fake_changelog.update.return_value = ('updated', 'changelog')
        args = [
            'release',
            '--project',
            'foo',
            '--release-version',
            '0.0.1',
            '--next-version',
            '0.0.2.dev1',
            '--git-remote-name',
            'upstream',
        ]

        called = []

        def runner(cmd: str):
            called.append(cmd)
            return StdOutput('')

        released = release.main(
            shell_cmd_runner=runner,
            _path=fake_path_class,
            _requests=fake_requests,
            _version=fake_version,
            _changelog=fake_changelog,
            leave=False,
            args=args,
        )
        self.assertTrue(released)

        self.assertIn('git push --follow-tags upstream', called)
        self.assertIn('git add MyProject.conf', called)
        self.assertIn(
            "git commit -m 'Automatic adjustments after release\n\n"
            "* Update to version 0.0.2.dev1\n"
            "* Add empty changelog after 0.0.1'",
            called,
        )
        print(called)
Example #7
0
    def test_successfully_sign(self):
        fake_path_class = MagicMock(spec=Path)
        fake_requests = MagicMock(spec=requests)
        fake_get = MagicMock(spec=requests.Response).return_value
        fake_get.status_code = 200
        fake_get.text = self.valid_gh_release_response
        fake_requests.get.return_value = fake_get
        fake_post = MagicMock(spec=requests.Response).return_value
        fake_post.status_code = 201
        fake_post.text = self.valid_gh_release_response
        fake_requests.post.return_value = fake_post
        fake_version = MagicMock(spec=version)
        fake_version.main.return_value = (True, 'MyProject.conf')
        fake_changelog = MagicMock(spec=changelog)
        fake_changelog.update.return_value = ('updated', 'changelog')
        args = [
            'sign',
            '--project',
            'bar',
            '--release-version',
            '0.0.1',
        ]

        called = []

        def runner(cmd: str):
            called.append(cmd)
            return StdOutput('')

        released = release.main(
            shell_cmd_runner=runner,
            _path=fake_path_class,
            _requests=fake_requests,
            _version=fake_version,
            _changelog=fake_changelog,
            leave=False,
            args=args,
        )
        self.assertTrue(released)
Example #8
0
    def test_not_release_when_no_project_found(self):
        fake_path_class = MagicMock(spec=Path)
        fake_version = MagicMock(spec=version)
        fake_version.main.return_value = (False, '')
        fake_changelog = MagicMock(spec=changelog)
        fake_changelog.update.return_value = ('updated', 'changelog')

        args = [
            'prepare',
            '--release-version',
            '0.0.1',
        ]
        runner = lambda x: StdOutput('')
        released = release.main(
            shell_cmd_runner=runner,
            _path=fake_path_class,
            _version=fake_version,
            _changelog=fake_changelog,
            leave=False,
            args=args,
        )
        self.assertFalse(released)
Example #9
0
    def test_release_to_specific_git_remote(self):
        fake_path_class = MagicMock(spec=Path)
        fake_requests = MagicMock(spec=requests)
        fake_post = MagicMock(spec=requests.Response).return_value
        fake_post.status_code = 201
        fake_post.text = self.valid_gh_release_response
        fake_requests.post.return_value = fake_post
        fake_version = MagicMock(spec=version)
        fake_version.main.return_value = (True, 'MyProject.conf')
        fake_changelog = MagicMock(spec=changelog)
        fake_changelog.update.return_value = ('updated', 'changelog')
        args = [
            '--project',
            'testcases',
            'release',
            '--release-version',
            '0.0.1',
            '--git-remote-name',
            'testremote',
        ]

        def runner(cmd: str):
            if not 'testremote' in cmd:
                raise ValueError('unexpected cmd: {}'.format(cmd))
            return StdOutput('')

        released = release.main(
            shell_cmd_runner=runner,
            _path=fake_path_class,
            _requests=fake_requests,
            _version=fake_version,
            _changelog=fake_changelog,
            leave=False,
            args=args,
        )
        self.assertTrue(released)