diff --git a/tests/test_builder/test_builder_utils.py b/tests/test_builder/test_builder_utils.py index 762b0bdd..2af324d3 100644 --- a/tests/test_builder/test_builder_utils.py +++ b/tests/test_builder/test_builder_utils.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # SPDX-License-Identifier: MIT from __future__ import absolute_import +import os import shutil import tempfile @@ -16,10 +17,11 @@ from module_build_service.scheduler.db_session import db_session from tests import read_staged_data, scheduler_init_data +@pytest.mark.parametrize("variation", ("none", "empty", "already_downloaded")) @patch("requests.get") @patch("koji.ClientSession") @patch("module_build_service.builder.utils.execute_cmd") -def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_get): +def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_get, variation): session = Mock() rpms = [ { @@ -27,7 +29,7 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_ "build_id": 875991, "name": "module-build-macros", "release": "1.module_92011fe6", - "size": 6890, + "size": 42, "version": "0.1", }, { @@ -35,7 +37,7 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_ "build_id": 875991, "name": "module-build-macros", "release": "1.module_92011fe6", - "size": 6890, + "size": 42, "version": "0.1", }, { @@ -43,7 +45,7 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_ "build_id": 875636, "name": "ed-debuginfo", "release": "2.module_bd6e0eb1", - "size": 81438, + "size": 42, "version": "1.14.1", }, { @@ -51,7 +53,7 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_ "build_id": 875636, "name": "ed", "release": "2.module_bd6e0eb1", - "size": 80438, + "size": 42, "version": "1.14.1", }, { @@ -59,7 +61,7 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_ "build_id": 875640, "name": "mksh-debuginfo", "release": "2.module_bd6e0eb1", - "size": 578774, + "size": 42, "version": "54", }, { @@ -67,7 +69,7 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_ "build_id": 875640, "name": "mksh", "release": "2.module_bd6e0eb1", - "size": 267042, + "size": 42, "version": "54", }, ] @@ -96,17 +98,6 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_ }, ] - session.listTaggedRPMS.return_value = (rpms, builds) - session.opts = {"topurl": "https://kojipkgs.stg.fedoraproject.org/"} - mock_koji_session.return_value = session - - tag = "module-testmodule-master-20170405123740-build" - temp_dir = tempfile.mkdtemp() - try: - utils.create_local_repo_from_koji_tag(conf, tag, temp_dir) - finally: - shutil.rmtree(temp_dir) - url_one = ( "https://kojipkgs.stg.fedoraproject.org//vol/prod/packages/module-build-macros/" "0.1/1.module_92011fe6/noarch/module-build-macros-0.1-1.module_92011fe6.noarch.rpm" @@ -120,11 +111,36 @@ def test_create_local_repo_from_koji_tag(mock_exec_cmd, mock_koji_session, mock_ "2.module_bd6e0eb1/x86_64/mksh-54-2.module_bd6e0eb1.x86_64.rpm" ) - expected_calls = [ - call(url_one, stream=True, timeout=60), - call(url_two, stream=True, timeout=60), - call(url_three, stream=True, timeout=60), - ] + if variation == "empty": + rpms = [] + builds = [] + + session.listTaggedRPMS.return_value = (rpms, builds) + session.opts = {"topurl": "https://kojipkgs.stg.fedoraproject.org/"} + mock_koji_session.return_value = session + + tag = "module-testmodule-master-20170405123740-build" + temp_dir = tempfile.mkdtemp() + try: + if variation == "already_downloaded": + for url in (url_one, url_two, url_three): + print(os.path.join(temp_dir, os.path.basename(url))) + with open(os.path.join(temp_dir, os.path.basename(url)), "w") as f: + f.write("x" * 42) + + utils.create_local_repo_from_koji_tag(conf, tag, temp_dir) + finally: + shutil.rmtree(temp_dir) + + if variation == "none": + expected_calls = [ + call(url_one, stream=True, timeout=60), + call(url_two, stream=True, timeout=60), + call(url_three, stream=True, timeout=60), + ] + else: + expected_calls = [] + for expected_call in expected_calls: assert expected_call in mock_get.call_args_list assert len(mock_get.call_args_list) == len(expected_calls)