PR#3548: Increase unit tests
Merges #3548 https://pagure.io/koji/pull-request/3548 Fixes: #3527 https://pagure.io/koji/issue/3527 Increase CLI unit tests
This commit is contained in:
commit
9de309ac79
4 changed files with 208 additions and 18 deletions
|
|
@ -98,6 +98,22 @@ class TestAddChannel(utils.CliTestCase):
|
|||
activate_session=None)
|
||||
self.activate_session_mock.assert_not_called()
|
||||
|
||||
def test_handle_add_channel_other_error_msg(self):
|
||||
expected = 'Other error message.'
|
||||
|
||||
self.session.addChannel.side_effect = koji.GenericError(expected)
|
||||
arguments = ['--description', self.description, self.channel_name]
|
||||
self.assert_system_exit(
|
||||
handle_add_channel,
|
||||
self.options, self.session, arguments,
|
||||
stdout='',
|
||||
stderr=expected + '\n',
|
||||
exit_code=1,
|
||||
activate_session=None)
|
||||
self.activate_session_mock.assert_called_once_with(self.session, self.options)
|
||||
self.session.addChannel.assert_called_once_with(self.channel_name,
|
||||
description=self.description)
|
||||
|
||||
def test_handle_add_channel_help(self):
|
||||
self.assert_help(
|
||||
handle_add_channel,
|
||||
|
|
|
|||
|
|
@ -139,3 +139,68 @@ Tags:
|
|||
self.session.getMavenBuild.assert_not_called()
|
||||
self.session.getWinBuild.assert_not_called()
|
||||
self.session.listRPMs.assert_not_called()
|
||||
|
||||
@mock.patch('sys.stdout', new_callable=StringIO)
|
||||
def test_buildinfo_valid_win_maven_image_with_changelog(self, stdout):
|
||||
build_id = 1
|
||||
build_info = self.buildinfo.copy()
|
||||
build_info['state'] = 0
|
||||
build_info['source'] = 'test-source'
|
||||
build_info['cg_name'] = 'cg-name-test'
|
||||
build_info['extra'] = {'test-extra': 'result-extra'}
|
||||
list_all_archives = [{'id': 987, 'filename': 'test-maven-file', 'group_id': '222',
|
||||
'artifact_id': '555', 'version': '2'},
|
||||
{'id': 988, 'filename': 'test-win-file', 'relpath': 'test-rel-path'},
|
||||
{'id': 989, 'filename': 'test-image-filename'},
|
||||
{'id': 990, 'filename': 'test-extra-filename', 'btype': 'test-btype'}]
|
||||
self.session.getBuild.return_value = build_info
|
||||
self.session.getTaskInfo.return_value = self.taskinfo
|
||||
self.session.listTags.return_value = [{'id': 123, 'name': 'test-tag'}]
|
||||
self.session.getMavenBuild.return_value = {
|
||||
'build_id': 12345, 'group_id': 222, 'artifact_id': 555, 'version': 2}
|
||||
self.session.getWinBuild.return_value = {'build_id': 12346, 'platform': 'test-platform'}
|
||||
self.session.listArchives.side_effect = [
|
||||
[list_all_archives[0]], [list_all_archives[1]], [list_all_archives[2]],
|
||||
list_all_archives]
|
||||
self.session.listRPMs.return_value = []
|
||||
self.session.getChangelogEntries.return_value = {'author': 'Test user',
|
||||
'date': '2022-10-03 12:00:00',
|
||||
'date_ts': 1664798400,
|
||||
'text': '- change for test'},
|
||||
expected_stdout = """BUILD: test-build-1-1 [1]
|
||||
State: BUILDING
|
||||
Reserved by: cg-name-test
|
||||
Built by: kojiadmin
|
||||
Source: test-source
|
||||
Volume: DEFAULT
|
||||
Task: 8 build (target, src)
|
||||
Finished: Thu, 04 Mar 2021 14:45:40 UTC
|
||||
Maven groupId: 222
|
||||
Maven artifactId: 555
|
||||
Maven version: 2
|
||||
Windows build platform: test-platform
|
||||
Tags: test-tag
|
||||
Extra: {'test-extra': 'result-extra'}
|
||||
Maven archives:
|
||||
/mnt/koji/packages/test-build/1/1/maven/222/555/2/test-maven-file
|
||||
Windows archives:
|
||||
/mnt/koji/packages/test-build/1/1/win/test-rel-path/test-win-file
|
||||
Image archives:
|
||||
/mnt/koji/packages/test-build/1/1/images/test-image-filename
|
||||
Test-btype Archives:
|
||||
/mnt/koji/packages/test-build/1/1/files/test-btype/test-extra-filename
|
||||
Changelog:
|
||||
* Mon Oct 03 2022 Test user
|
||||
- change for test
|
||||
|
||||
|
||||
"""
|
||||
anon_handle_buildinfo(self.options, self.session, [str(build_id), '--changelog'])
|
||||
self.assert_console_message(stdout, expected_stdout)
|
||||
self.session.listTags.assert_called_once_with(build_id)
|
||||
self.session.getBuild.assert_called_once_with(build_id)
|
||||
self.session.getTaskInfo.assert_called_once_with(self.buildinfo['task_id'], request=True)
|
||||
self.session.getMavenBuild.assert_called_once_with(self.buildinfo['id'])
|
||||
self.session.getWinBuild.assert_called_once_with(self.buildinfo['id'])
|
||||
self.session.listRPMs.assert_called_once_with(buildID=self.buildinfo['id'])
|
||||
self.assertEqual(self.session.listArchives.call_count, 4)
|
||||
|
|
|
|||
|
|
@ -242,6 +242,12 @@ config_opts['macros']['%distribution'] = 'Koji Testing'
|
|||
'rpm.macro.random_macro2': 'random_macro_content2',
|
||||
'mock.package_manager': 'yum',
|
||||
'mock.yum.module_hotfixes': 1,
|
||||
'mock.forcearch': True,
|
||||
'mock.yum.best': 10,
|
||||
'mock.bootstrap_image': 'bootstrap_image_content',
|
||||
'mock.use_bootstrap': True,
|
||||
'mock.module_setup_commands': 'module_setup_commands_content',
|
||||
'mock.releasever': 'releasever_content',
|
||||
},
|
||||
'arches': 'x86_64',
|
||||
}
|
||||
|
|
@ -277,7 +283,15 @@ config_opts['macros']['%distribution'] = 'Koji Testing'
|
|||
},
|
||||
'package_manager': 'yum',
|
||||
'module_hotfixes': 1,
|
||||
'bootstrap_image': 'bootstrap_image_content',
|
||||
'forcearch': 'x86_64',
|
||||
'module_setup_commands': 'module_setup_commands_content',
|
||||
'releasever': 'releasever_content',
|
||||
'use_bootstrap': True,
|
||||
'use_bootstrap_image': True,
|
||||
'yum_best': 10,
|
||||
})
|
||||
|
||||
del opts['topurl']
|
||||
anon_handle_mock_config(self.options, self.session, arguments)
|
||||
self.assert_console_message(stdout, "%s\n" % self.gen_config_mock.return_value)
|
||||
|
|
|
|||
|
|
@ -10,29 +10,124 @@ from . import utils
|
|||
|
||||
class TestTaginfo(utils.CliTestCase):
|
||||
def setUp(self):
|
||||
self.maxDiff = None
|
||||
self.options = mock.MagicMock()
|
||||
self.options.debug = False
|
||||
self.session = mock.MagicMock()
|
||||
self.session.getAPIVersion.return_value = koji.API_VERSION
|
||||
self.error_format = """Usage: %s taginfo [options] <tag> [<tag> ...]
|
||||
(Specify the --help global option for a list of other help options)
|
||||
|
||||
@mock.patch('sys.stderr', new_callable=StringIO)
|
||||
def test_taginfo_without_option(self, stderr):
|
||||
expected = "Usage: %s taginfo [options] <tag> [<tag> ...]\n" \
|
||||
"(Specify the --help global option for a list of other help options)\n\n" \
|
||||
"%s: error: Please specify a tag\n" % (self.progname, self.progname)
|
||||
with self.assertRaises(SystemExit) as ex:
|
||||
anon_handle_taginfo(self.options, self.session, [])
|
||||
self.assertExitCode(ex, 2)
|
||||
self.assert_console_message(stderr, expected)
|
||||
%s: error: {message}
|
||||
""" % (self.progname, self.progname)
|
||||
|
||||
@mock.patch('sys.stderr', new_callable=StringIO)
|
||||
def test_taginfo_non_exist_tag(self, stderr):
|
||||
def test_taginfo_without_option(self):
|
||||
self.assert_system_exit(
|
||||
anon_handle_taginfo,
|
||||
self.options, self.session, [],
|
||||
stdout='',
|
||||
stderr=self.format_error_message("Please specify a tag"),
|
||||
exit_code=2,
|
||||
activate_session=None)
|
||||
|
||||
self.session.getBuildConfig.assert_not_called()
|
||||
self.session.getTagGroups.assert_not_called()
|
||||
self.session.mavenEnabled.assert_not_called()
|
||||
self.session.getBuildTargets.assert_not_called()
|
||||
self.session.getRepo.assert_not_called()
|
||||
self.session.getTagExternalRepos.assert_not_called()
|
||||
self.session.getInheritanceData.assert_not_called()
|
||||
|
||||
def test_taginfo_non_exist_tag(self):
|
||||
tag = 'test-tag'
|
||||
expected = "Usage: %s taginfo [options] <tag> [<tag> ...]\n" \
|
||||
"(Specify the --help global option for a list of other help options)\n\n" \
|
||||
"%s: error: No such tag: %s\n" % (self.progname, self.progname, tag)
|
||||
self.session.getBuildConfig.return_value = None
|
||||
with self.assertRaises(SystemExit) as cm:
|
||||
anon_handle_taginfo(self.options, self.session, [tag])
|
||||
self.assertExitCode(cm, 2)
|
||||
self.assert_console_message(stderr, expected)
|
||||
self.assert_system_exit(
|
||||
anon_handle_taginfo,
|
||||
self.options, self.session, [tag],
|
||||
stdout='',
|
||||
stderr=self.format_error_message("No such tag: %s" % tag),
|
||||
exit_code=2,
|
||||
activate_session=None)
|
||||
|
||||
self.session.getBuildConfig.assert_called_once_with('test-tag')
|
||||
self.session.getTagGroups.assert_not_called()
|
||||
self.session.mavenEnabled.assert_not_called()
|
||||
self.session.getBuildTargets.assert_not_called()
|
||||
self.session.getRepo.assert_not_called()
|
||||
self.session.getTagExternalRepos.assert_not_called()
|
||||
self.session.getInheritanceData.assert_not_called()
|
||||
|
||||
@mock.patch('sys.stdout', new_callable=StringIO)
|
||||
def test_taginfo(self, stdout):
|
||||
self.session.getBuildConfig.return_value = {
|
||||
'arches': 'x86_64',
|
||||
'config_inheritance': {'arches': None, 'extra': ['value']},
|
||||
'extra': {'tag2distrepo.keys': '9867c58f'},
|
||||
'id': 1111,
|
||||
'locked': True,
|
||||
'maven_include_all': False,
|
||||
'maven_support': True,
|
||||
'name': 'test-tag',
|
||||
'perm': 1,
|
||||
'perm_id': 'test-perm'}
|
||||
self.session.getTagGroups.return_value = [{'name': 'group-1'}, {'name': 'group-2'}]
|
||||
self.session.mavenEnabled.return_value = True
|
||||
self.session.getBuildTargets.side_effect = [[
|
||||
{'build_tag': 123,
|
||||
'build_tag_name': 'test-build-tag-1',
|
||||
'id': 111,
|
||||
'name': 'test-tag-1'}],
|
||||
[{'build_tag': 1111,
|
||||
'build_tag_name': 'test-tag',
|
||||
'id': 112,
|
||||
'name': 'test-tag-2'}]]
|
||||
self.session.getRepo.side_effect = [None, None, ]
|
||||
self.session.getTagExternalRepos.return_value = [{'external_repo_id': 11,
|
||||
'external_repo_name': 'ext-repo',
|
||||
'tag_id': 1111,
|
||||
'tag_name': 'test-tag',
|
||||
'priority': 5,
|
||||
'merge_mode': 'simple',
|
||||
'arches': 'x86_64 i686',
|
||||
'url': 'test/url'}]
|
||||
self.session.getInheritanceData.return_value = [{'child_id': 1,
|
||||
'intransitive': False,
|
||||
'maxdepth': 111111,
|
||||
'name': 'test-tag',
|
||||
'noconfig': False,
|
||||
'parent_id': 2,
|
||||
'pkg_filter': 'pkg-filter',
|
||||
'priority': 5,
|
||||
'tag_id': 1111}]
|
||||
expected_stdout = """Tag: test-tag [1111]
|
||||
Arches: x86_64
|
||||
Groups: group-1, group-2
|
||||
LOCKED
|
||||
Required permission: 'test-perm'
|
||||
Maven support?: yes
|
||||
Include all Maven archives?: no
|
||||
Tag options:
|
||||
tag2distrepo.keys : '9867c58f'
|
||||
Targets that build into this tag:
|
||||
test-tag-1 (test-build-tag-1, no active repo)
|
||||
This tag is a buildroot for one or more targets
|
||||
Current repo: no active repo
|
||||
Targets that build from this tag:
|
||||
test-tag-2
|
||||
External repos:
|
||||
5 ext-repo (test/url, merge mode: simple), arches: x86_64 i686
|
||||
Inheritance:
|
||||
5 MF.. test-tag [2]
|
||||
maxdepth: 111111
|
||||
package filter: pkg-filter
|
||||
"""
|
||||
anon_handle_taginfo(self.options, self.session, ['test-tag'])
|
||||
self.assert_console_message(stdout, expected_stdout)
|
||||
self.session.getBuildConfig.assert_called_once_with('test-tag')
|
||||
self.session.getTagGroups.assert_called_once_with(1111)
|
||||
self.session.mavenEnabled.assert_called_once_with()
|
||||
self.session.getBuildTargets.assert_has_calls([mock.call(destTagID=1111)],
|
||||
[mock.call(buildTagID=1111)])
|
||||
self.session.getRepo.assert_has_calls([mock.call(123)], [mock.call(1111)])
|
||||
self.session.getTagExternalRepos.assert_called_once_with(tag_info=1111)
|
||||
self.session.getInheritanceData.assert_called_once_with(1111)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue