We no longer need to support Python 2, so there's no point in this compatibility layer. Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com> (cherry picked from commit b34de57813187f1781aef733468c9745a144d9af)
		
			
				
	
	
		
			165 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # -*- coding: utf-8 -*-
 | |
| 
 | |
| from unittest import mock
 | |
| 
 | |
| import pungi.phases.repoclosure as repoclosure_phase
 | |
| from tests.helpers import DummyCompose, PungiTestCase, mk_boom
 | |
| 
 | |
| 
 | |
| class TestRepoclosure(PungiTestCase):
 | |
|     def setUp(self):
 | |
|         super(TestRepoclosure, self).setUp()
 | |
|         self.maxDiff = None
 | |
| 
 | |
|     def _get_repo(self, compose_id, variant, arch, path=None):
 | |
|         path = path or arch + "/os"
 | |
|         return {
 | |
|             "%s-repoclosure-%s.%s" % (compose_id, variant, arch): self.topdir
 | |
|             + "/compose/%s/%s" % (variant, path)
 | |
|         }
 | |
| 
 | |
|     @mock.patch("pungi.wrappers.repoclosure.get_repoclosure_cmd")
 | |
|     @mock.patch("pungi.phases.repoclosure.run")
 | |
|     def test_repoclosure_skip_if_disabled(self, mock_run, mock_grc):
 | |
|         compose = DummyCompose(
 | |
|             self.topdir, {"repoclosure_strictness": [("^.*$", {"*": "off"})]}
 | |
|         )
 | |
|         repoclosure_phase.run_repoclosure(compose)
 | |
| 
 | |
|         self.assertEqual(mock_grc.call_args_list, [])
 | |
| 
 | |
|     @mock.patch("pungi.wrappers.repoclosure.get_repoclosure_cmd")
 | |
|     @mock.patch("pungi.phases.repoclosure.run")
 | |
|     def test_repoclosure_dnf_backend(self, mock_run, mock_grc):
 | |
|         compose = DummyCompose(self.topdir, {"repoclosure_backend": "dnf"})
 | |
|         repoclosure_phase.run_repoclosure(compose)
 | |
| 
 | |
|         self.assertCountEqual(
 | |
|             mock_grc.call_args_list,
 | |
|             [
 | |
|                 mock.call(
 | |
|                     backend="dnf",
 | |
|                     arch=["amd64", "x86_64", "noarch"],
 | |
|                     lookaside={},
 | |
|                     repos=self._get_repo(compose.compose_id, "Everything", "amd64"),
 | |
|                 ),
 | |
|                 mock.call(
 | |
|                     backend="dnf",
 | |
|                     arch=["amd64", "x86_64", "noarch"],
 | |
|                     lookaside={},
 | |
|                     repos=self._get_repo(compose.compose_id, "Client", "amd64"),
 | |
|                 ),
 | |
|                 mock.call(
 | |
|                     backend="dnf",
 | |
|                     arch=["amd64", "x86_64", "noarch"],
 | |
|                     lookaside={},
 | |
|                     repos=self._get_repo(compose.compose_id, "Server", "amd64"),
 | |
|                 ),
 | |
|                 mock.call(
 | |
|                     backend="dnf",
 | |
|                     arch=["x86_64", "noarch"],
 | |
|                     lookaside={},
 | |
|                     repos=self._get_repo(compose.compose_id, "Server", "x86_64"),
 | |
|                 ),
 | |
|                 mock.call(
 | |
|                     backend="dnf",
 | |
|                     arch=["x86_64", "noarch"],
 | |
|                     lookaside={},
 | |
|                     repos=self._get_repo(compose.compose_id, "Everything", "x86_64"),
 | |
|                 ),
 | |
|             ],
 | |
|         )
 | |
| 
 | |
|     @mock.patch("glob.glob")
 | |
|     @mock.patch("pungi.wrappers.repoclosure.extract_from_fus_logs")
 | |
|     @mock.patch("pungi.wrappers.repoclosure.get_repoclosure_cmd")
 | |
|     @mock.patch("pungi.phases.repoclosure.run")
 | |
|     def test_repoclosure_hybrid_variant(self, mock_run, mock_grc, effl, glob):
 | |
|         compose = DummyCompose(
 | |
|             self.topdir, {"repoclosure_backend": "dnf", "gather_method": "hybrid"}
 | |
|         )
 | |
|         f = mock.Mock()
 | |
|         glob.return_value = [f]
 | |
| 
 | |
|         def _log(a, v):
 | |
|             return compose.paths.log.log_file(a, "repoclosure-%s" % compose.variants[v])
 | |
| 
 | |
|         repoclosure_phase.run_repoclosure(compose)
 | |
| 
 | |
|         self.assertEqual(mock_grc.call_args_list, [])
 | |
|         self.assertCountEqual(
 | |
|             effl.call_args_list,
 | |
|             [
 | |
|                 mock.call([f], _log("amd64", "Everything")),
 | |
|                 mock.call([f], _log("amd64", "Client")),
 | |
|                 mock.call([f], _log("amd64", "Server")),
 | |
|                 mock.call([f], _log("x86_64", "Server")),
 | |
|                 mock.call([f], _log("x86_64", "Everything")),
 | |
|             ],
 | |
|         )
 | |
| 
 | |
|     @mock.patch("pungi.wrappers.repoclosure.get_repoclosure_cmd")
 | |
|     @mock.patch("pungi.phases.repoclosure.run")
 | |
|     def test_repoclosure_report_error(self, mock_run, mock_grc):
 | |
|         compose = DummyCompose(
 | |
|             self.topdir, {"repoclosure_strictness": [("^.*$", {"*": "fatal"})]}
 | |
|         )
 | |
|         mock_run.side_effect = mk_boom(cls=RuntimeError)
 | |
| 
 | |
|         with self.assertRaises(RuntimeError):
 | |
|             repoclosure_phase.run_repoclosure(compose)
 | |
| 
 | |
|     @mock.patch("pungi.wrappers.repoclosure.get_repoclosure_cmd")
 | |
|     @mock.patch("pungi.phases.repoclosure.run")
 | |
|     def test_repoclosure_overwrite_options_creates_correct_commands(
 | |
|         self, mock_run, mock_grc
 | |
|     ):
 | |
|         compose = DummyCompose(
 | |
|             self.topdir,
 | |
|             {
 | |
|                 "repoclosure_backend": "dnf",
 | |
|                 "repoclosure_strictness": [
 | |
|                     ("^.*$", {"*": "off"}),
 | |
|                     ("^Server$", {"*": "fatal"}),
 | |
|                 ],
 | |
|             },
 | |
|         )
 | |
|         repoclosure_phase.run_repoclosure(compose)
 | |
| 
 | |
|         self.assertCountEqual(
 | |
|             mock_grc.call_args_list,
 | |
|             [
 | |
|                 mock.call(
 | |
|                     backend="dnf",
 | |
|                     arch=["amd64", "x86_64", "noarch"],
 | |
|                     lookaside={},
 | |
|                     repos=self._get_repo(compose.compose_id, "Server", "amd64"),
 | |
|                 ),
 | |
|                 mock.call(
 | |
|                     backend="dnf",
 | |
|                     arch=["x86_64", "noarch"],
 | |
|                     lookaside={},
 | |
|                     repos=self._get_repo(compose.compose_id, "Server", "x86_64"),
 | |
|                 ),
 | |
|             ],
 | |
|         )
 | |
| 
 | |
|     @mock.patch("pungi.phases.repoclosure._delete_repoclosure_cache_dirs")
 | |
|     @mock.patch("pungi.wrappers.repoclosure.get_repoclosure_cmd")
 | |
|     @mock.patch("pungi.phases.repoclosure.run")
 | |
|     def test_repoclosure_uses_correct_behaviour(self, mock_run, mock_grc, mock_del):
 | |
|         compose = DummyCompose(
 | |
|             self.topdir,
 | |
|             {
 | |
|                 "repoclosure_backend": "dnf",
 | |
|                 "repoclosure_strictness": [
 | |
|                     ("^.*$", {"*": "off"}),
 | |
|                     ("^Server$", {"*": "fatal"}),
 | |
|                 ],
 | |
|             },
 | |
|         )
 | |
|         mock_run.side_effect = mk_boom(cls=RuntimeError)
 | |
| 
 | |
|         with self.assertRaises(RuntimeError):
 | |
|             repoclosure_phase.run_repoclosure(compose)
 |