| |
@@ -0,0 +1,171 @@
|
| |
+ import json
|
| |
+ import mock
|
| |
+ import imp
|
| |
+ # importing the bin script as source through imp
|
| |
+ imp.load_source("module_diff_bin", "bin/module_diff") # noqa
|
| |
+ import requests_mock
|
| |
+ from module_diff_bin import main
|
| |
+
|
| |
+ module1_url = ("https://pdc.fedoraproject.org/rest_api/v1"
|
| |
+ "/unreleasedvariants/"
|
| |
+ "?page_size=1&variant_uid=mariadb-10.2-20171019133930")
|
| |
+
|
| |
+ module2_url = ("https://pdc.fedoraproject.org/rest_api/v1"
|
| |
+ "/unreleasedvariants/"
|
| |
+ "?page_size=1&variant_uid=mariadb-10.2-20171103103655")
|
| |
+
|
| |
+
|
| |
+ def generate_module_res(pdc_json_res):
|
| |
+ module1_res = pdc_json_res.get()
|
| |
+ module2_res = pdc_json_res.get()
|
| |
+ module1_res["results"][0]["rpms"].remove(
|
| |
+ "mariadb-connect-engine-3:10.2.9-3.module_629c669e.x86_64.rpm")
|
| |
+ module2_res["results"][0]["koji_tag"] = "module-15d35d06c29b1848"
|
| |
+ module2_res["results"][0]["rpms"] = [
|
| |
+ "mariadb-debugsource-3:10.2.9-3.module_629c669e.x86_64.rpm",
|
| |
+ "mariadb-connect-engine-debuginfo-3:10.2.9-3.module_629c669e.x86_64.rpm",
|
| |
+ "mariadb-debuginfo-3:11.2.9-3.module_15d35d06.x86_64.rpm",
|
| |
+ "mariadb-3:10.2.9-3.module_629c669e.x86_64.rpm",
|
| |
+ "mariadb-devel-3:9.2.9-3.module_15d35d06.x86_64.rpm",
|
| |
+ "mariadb-connect-engine-3:10.2.9-3.module_15d35d06.x86_64.rpm"
|
| |
+ ]
|
| |
+
|
| |
+ return module1_res, module2_res
|
| |
+
|
| |
+
|
| |
+ class TestCli(object):
|
| |
+ """
|
| |
+ Tests for the cli of the module_diff tool
|
| |
+ """
|
| |
+
|
| |
+ def test_cli_required_options(self, pdc_json_res, capsys):
|
| |
+ """ Testing output with minimum required options """
|
| |
+
|
| |
+ module1_res, module2_res = generate_module_res(pdc_json_res)
|
| |
+
|
| |
+ with requests_mock.mock() as mock_http:
|
| |
+ mock_http.register_uri("GET", module1_url, json=module1_res)
|
| |
+ mock_http.register_uri("GET", module2_url, json=module2_res)
|
| |
+
|
| |
+ cli_cmd = [
|
| |
+ 'module_diff',
|
| |
+ 'mariadb-10.2-20171019133930',
|
| |
+ 'mariadb-10.2-20171103103655'
|
| |
+ ]
|
| |
+
|
| |
+ with mock.patch("sys.argv", cli_cmd):
|
| |
+ main()
|
| |
+ output = capsys.readouterr()[0]
|
| |
+
|
| |
+ assert "Compared modules" in output
|
| |
+ assert "NSV:" in output
|
| |
+ assert "# of RPMs:" in output
|
| |
+ assert "# of RPMs added:" in output
|
| |
+ assert "# of RPMs removed:" in output
|
| |
+ assert "# of RPMs upgraded:" in output
|
| |
+ assert "# of RPMs downgraded:" in output
|
| |
+ assert "RPMs Added" in output
|
| |
+ assert "RPMs Added" in output
|
| |
+ assert "RPMs Removed" in output
|
| |
+ assert "RPMs Upgraded" in output
|
| |
+ assert "RPMs Downgraded" in output
|
| |
+ assert "RPMs which dist tag changed" not in output
|
| |
+ assert "RPMs Reused" not in output
|
| |
+
|
| |
+ def test_cli_dist_option(self, pdc_json_res, capsys):
|
| |
+ """
|
| |
+ Testing option --dist which displays RPMs which changed their dist tag.
|
| |
+ """
|
| |
+
|
| |
+ module1_res, module2_res = generate_module_res(pdc_json_res)
|
| |
+
|
| |
+ with requests_mock.mock() as mock_http:
|
| |
+ mock_http.register_uri("GET", module1_url, json=module1_res)
|
| |
+ mock_http.register_uri("GET", module2_url, json=module2_res)
|
| |
+
|
| |
+ cli_cmd = [
|
| |
+ 'module_diff',
|
| |
+ 'mariadb-10.2-20171019133930',
|
| |
+ 'mariadb-10.2-20171103103655',
|
| |
+ '--dist'
|
| |
+ ]
|
| |
+
|
| |
+ with mock.patch("sys.argv", cli_cmd):
|
| |
+ main()
|
| |
+ output = capsys.readouterr()[0]
|
| |
+
|
| |
+ assert "Compared modules" in output
|
| |
+ assert "NSV:" in output
|
| |
+ assert "# of RPMs:" in output
|
| |
+ assert "# of RPMs added:" in output
|
| |
+ assert "# of RPMs removed:" in output
|
| |
+ assert "# of RPMs upgraded:" in output
|
| |
+ assert "# of RPMs downgraded:" in output
|
| |
+ assert "RPMs Added" in output
|
| |
+ assert "RPMs Added" in output
|
| |
+ assert "RPMs Removed" in output
|
| |
+ assert "RPMs Upgraded" in output
|
| |
+ assert "RPMs Downgraded" in output
|
| |
+ assert "RPMs which dist tag changed" in output
|
| |
+ assert "RPMs Reused" not in output
|
| |
+
|
| |
+ def test_cli_reused_option(self, pdc_json_res, capsys):
|
| |
+ """
|
| |
+ Testing option --reused which displays RPMs which where reused from previous build.
|
| |
+ """
|
| |
+ module1_res, module2_res = generate_module_res(pdc_json_res)
|
| |
+
|
| |
+ with requests_mock.mock() as mock_http:
|
| |
+ mock_http.register_uri("GET", module1_url, json=module1_res)
|
| |
+ mock_http.register_uri("GET", module2_url, json=module2_res)
|
| |
+
|
| |
+ cli_cmd = [
|
| |
+ 'module_diff',
|
| |
+ 'mariadb-10.2-20171019133930',
|
| |
+ 'mariadb-10.2-20171103103655',
|
| |
+ '--reused'
|
| |
+ ]
|
| |
+
|
| |
+ with mock.patch("sys.argv", cli_cmd):
|
| |
+ main()
|
| |
+ output = capsys.readouterr()[0]
|
| |
+
|
| |
+ assert "Compared modules" in output
|
| |
+ assert "NSV:" in output
|
| |
+ assert "# of RPMs:" in output
|
| |
+ assert "# of RPMs added:" in output
|
| |
+ assert "# of RPMs removed:" in output
|
| |
+ assert "# of RPMs upgraded:" in output
|
| |
+ assert "# of RPMs downgraded:" in output
|
| |
+ assert "RPMs Added" in output
|
| |
+ assert "RPMs Added" in output
|
| |
+ assert "RPMs Removed" in output
|
| |
+ assert "RPMs Upgraded" in output
|
| |
+ assert "RPMs Downgraded" in output
|
| |
+ assert "RPMs which dist tag changed" not in output
|
| |
+ assert "RPMs Reused" in output
|
| |
+
|
| |
+ def test_cli_json_option(self, pdc_json_res, capsys):
|
| |
+ """
|
| |
+ Testing option --json which displays the output as a json string.
|
| |
+ """
|
| |
+ module1_res, module2_res = generate_module_res(pdc_json_res)
|
| |
+
|
| |
+ with requests_mock.mock() as mock_http:
|
| |
+ mock_http.register_uri("GET", module1_url, json=module1_res)
|
| |
+ mock_http.register_uri("GET", module2_url, json=module2_res)
|
| |
+
|
| |
+ cli_cmd = [
|
| |
+ 'module_diff',
|
| |
+ 'mariadb-10.2-20171019133930',
|
| |
+ 'mariadb-10.2-20171103103655',
|
| |
+ '--json'
|
| |
+ ]
|
| |
+
|
| |
+ with mock.patch("sys.argv", cli_cmd):
|
| |
+ main()
|
| |
+ output = capsys.readouterr()[0]
|
| |
+ # json.loads will fire an exception if the json is not valid
|
| |
+ json_dict = json.loads(output)
|
| |
+ assert isinstance(json_dict, dict)
|
| |
+ assert len(json_dict)
|
| |
fixed issues #4 and #6.