From 058790b6e68338e9a145567302f420c322608519 Mon Sep 17 00:00:00 2001 From: Ondrej Nosek Date: Jul 09 2020 08:03:22 +0000 Subject: [PATCH 1/3] Disable some test for 'clog' functionality Until 'rpm' behavior is clarified. On some systems 'clog' command provides different (empty) output. Signed-off-by: Ondrej Nosek --- diff --git a/tests/test_cli.py b/tests/test_cli.py index f127d47..a8b34f4 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -324,6 +324,7 @@ class TestClog(CliTestCase): cli = self.new_cli() cli.clog() + @unittest.skip("temporarily disabled") def test_clog(self): cli_cmd = ['rpkg', '--path', self.cloned_repo_path, 'clog'] @@ -335,6 +336,7 @@ class TestClog(CliTestCase): clog = self.read_file(clog_file).strip() self.assertEqual('Initial version', clog) + @unittest.skip("temporarily disabled") def test_raw_clog(self): cli_cmd = ['rpkg', '--path', self.cloned_repo_path, 'clog', '--raw'] @@ -346,6 +348,7 @@ class TestClog(CliTestCase): clog = self.read_file(clog_file).strip() self.assertEqual('- Initial version', clog) + @unittest.skip("temporarily disabled") def test_reference_source_files_in_spec_should_not_break_clog(self): """SPEC containing Source0 or Patch0 should not break clog @@ -382,6 +385,7 @@ class TestCommit(CliTestCase): commit_msg = self.get_last_commit_message() self.assertEqual('new release', commit_msg) + @unittest.skip("temporarily disabled") def test_with_summary_and_changelog(self): cli_cmd = ['rpkg', '--path', self.cloned_repo_path, 'commit', '-m', 'new release', '--with-changelog'] @@ -397,6 +401,7 @@ class TestCommit(CliTestCase): self.assertFalse(os.path.exists(os.path.join(self.cloned_repo_path, 'clog'))) self.assertFalse(os.path.exists(os.path.join(self.cloned_repo_path, 'commit-message'))) + @unittest.skip("temporarily disabled") def test_with_clog(self): cli_cmd = ['rpkg', '--path', self.cloned_repo_path, 'commit', '--clog'] @@ -408,6 +413,7 @@ class TestCommit(CliTestCase): self.assertEqual(expected_commit_msg, commit_msg) self.assertFalse(os.path.exists(os.path.join(self.cloned_repo_path, 'clog'))) + @unittest.skip("temporarily disabled") def test_with_raw_clog(self): cli_cmd = ['rpkg', '--path', self.cloned_repo_path, 'commit', '--clog', '--raw'] with patch('sys.argv', new=cli_cmd): From 89b406a60fd352a615360eebf3aa73517ad482d4 Mon Sep 17 00:00:00 2001 From: Ondrej Nosek Date: Jul 09 2020 08:03:40 +0000 Subject: [PATCH 2/3] Pytest replaces nosetests Nosetests tool is deprecated. Also tools supporting Python2.6 test-environment are deprecated one by one. So this was removed too. Pytest tool will run the unit tests. When 'make test' is run, all neccessary dependencies are installed by pip. Fixes: #501 JIRA: RHELCMP-578 Signed-off-by: Ondrej Nosek --- diff --git a/Makefile b/Makefile index 1eaeab2..bcde6d0 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,7 @@ -ifdef IGNORE_PY26 - default_targets=detox -else - default_targets=py26-test detox -endif - +default_targets=tox test: $(default_targets) .PHONY: test -py26-test: - @virtualenv --python=python2.6 .py26env - @.py26env/bin/pip install tox - @.py26env/bin/tox -e py26 -- $(TOX_POSARGS) -.PHONY: py26-test - detox: @detox -e py27,py36,py37,flake8 -- $(TOX_POSARGS) .PHONY: detox @@ -20,5 +9,5 @@ detox: tox: @python3 -m venv .env @.env/bin/pip install tox - @.env/bin/tox -e py27,py36,py37,flake8 -- $(TOX_POSARGS) + @.env/bin/tox -e py27,py36,py37,flake8 --parallel=auto -- $(TOX_POSARGS) .PHONY: tox diff --git a/README.rst b/README.rst index 24142b5..88f1f73 100644 --- a/README.rst +++ b/README.rst @@ -78,7 +78,7 @@ Before make a pull request, ensure local changes pass all test cases. Before run tests, install these packages:: - sudo dnf install python26 python37 detox python2-virtualenv + sudo dnf install python37 To run tests simply, ``make test``. diff --git a/requirements/fedora-py2.txt b/requirements/fedora-py2.txt index e97c9c8..58b994d 100644 --- a/requirements/fedora-py2.txt +++ b/requirements/fedora-py2.txt @@ -15,6 +15,5 @@ PyYAML python2-coverage python2-flake8 python2-mock -python2-nose python2-rpmfluff python2-openidc-client # used in MBS tests diff --git a/requirements/fedora-py3.txt b/requirements/fedora-py3.txt index cb71549..fc799c3 100644 --- a/requirements/fedora-py3.txt +++ b/requirements/fedora-py3.txt @@ -15,6 +15,5 @@ python3-yaml python3-coverage python3-flake8 python3-mock -python3-nose python3-rpmfluff python3-openidc-client # used in MBS tests diff --git a/requirements/tests.txt b/requirements/tests.txt deleted file mode 100644 index e7573f1..0000000 --- a/requirements/tests.txt +++ /dev/null @@ -1,4 +0,0 @@ -python2-nose -python2-mock -python2-rpmfluff -python2-coverage diff --git a/setup.cfg b/setup.cfg index 02757bc..d6992ee 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,12 +1,13 @@ [aliases] -test = nosetests +test = pytest [flake8] max-line-length = 100 -[nosetests] -verbosity = 2 -detailed-errors = 1 -with-coverage = 1 +[tool:pytest] cover-package = pyrpkg -cover-erase = 1 +# additional values for 'addopts' can be: +# --cov-report html +# -ra -q +addopts = --cov=pyrpkg +testpaths = tests diff --git a/setup.py b/setup.py index 9461666..d6b9758 100755 --- a/setup.py +++ b/setup.py @@ -70,7 +70,6 @@ setup( }, tests_require=tests_require, dependency_links=dep_links, - test_suite='nose.collector', classifiers=( 'Development Status :: 5 - Production/Stable', 'Environment :: Console', diff --git a/tests/test_flatpak_build.py b/tests/test_flatpak_build.py index a8a0109..ac7e9af 100644 --- a/tests/test_flatpak_build.py +++ b/tests/test_flatpak_build.py @@ -214,7 +214,7 @@ class FlatpakBuildCase(CommandTestCase): def mock_get(url, params=None, timeout=None): nsvc = params['nsvc'] del params['nsvc'] - self.assertEquals(params, { + self.assertEqual(params, { 'order_desc_by': 'version', 'per_page': 1 }) diff --git a/tests/utils.py b/tests/utils.py index 7d049e4..b0934e0 100644 --- a/tests/utils.py +++ b/tests/utils.py @@ -17,14 +17,6 @@ except ImportError: import unittest -# to prevent printing the method's docstring in the nosetests list -def shortDescription(self): - return None - - -unittest.TestCase.shortDescription = shortDescription - - # Following global variables are used to construct Commands for tests in this # module. Only for testing purpose, and they are not going to be used for # hitting real services. diff --git a/tox.ini b/tox.ini index b7fd993..76d6bf1 100644 --- a/tox.ini +++ b/tox.ini @@ -1,5 +1,5 @@ [tox] -envlist = py26,py27,py36,py37,flake8,doc +envlist = py27,py36,py37,flake8,doc [testenv] skip_install = True @@ -7,18 +7,11 @@ deps = rpm-py-installer -r{toxinidir}/requirements/test-pypi.txt - ; Tests run by `setup.py nosetests`, which require nose is + ; Tests run by `tox`, which require pytest is ; installed in advance. - nose==1.3.7 + pytest + pytest-cov - ; Python 2.6 support has been dropped since specific version of these - ; packages. These packages are dependencies through the dependent path. - - py26: pycparser<2.19 - py26: python-dateutil<2.7.0 - py26: idna<2.8 - ; Required by koji - py26: pyOpenSSL<18.0.0 commands = ; Respect the install_requires in setup.py and install dependent packages ; from there. An alternative is to use tox option usedevelop, however it @@ -27,7 +20,8 @@ commands = ; https://gitlab.gnome.org/GNOME/pygobject/issues/264 pip install -e . - python setup.py nosetests {posargs} + python -m pytest {posargs} + setenv= PYCURL_SSL_LIBRARY=openssl From fe17328000e9cb1cdf25343832d6671b9b7bc128 Mon Sep 17 00:00:00 2001 From: Ondrej Nosek Date: Jul 13 2020 15:46:05 +0000 Subject: [PATCH 3/3] Add Signed-off-by: Ondrej Nosek --- diff --git a/Makefile b/Makefile index bcde6d0..e8b8e3d 100644 --- a/Makefile +++ b/Makefile @@ -2,12 +2,8 @@ default_targets=tox test: $(default_targets) .PHONY: test -detox: - @detox -e py27,py36,py37,flake8 -- $(TOX_POSARGS) -.PHONY: detox - tox: @python3 -m venv .env @.env/bin/pip install tox - @.env/bin/tox -e py27,py36,py37,flake8 --parallel=auto -- $(TOX_POSARGS) + @.env/bin/tox -e py27,py36,py37,flake8,flake8python2 --parallel=auto ${TOX_POSARGS} .PHONY: tox diff --git a/README.rst b/README.rst index 88f1f73..62595bd 100644 --- a/README.rst +++ b/README.rst @@ -5,7 +5,7 @@ This is the rpkg project, which mostly is a python library for dealing with rpm packaging in a git source control. pyrpkg is the base library that sites can subclass to create useful tools. -rpkg works with Python 2.6, 2.7, 3.6 and 3.7. +rpkg works with Python 2.6, 2.7, 3.6, 3.7 and 3.8. License ======= @@ -19,19 +19,21 @@ Install from distribution packages ---------------------------------- rpkg is available in Fedora and EPEL repositories. It can be installed with -package manager command. There are Python 2 and 3 package for Fedora and only -Python 2 package in EPEL. +package manager command. There is Python 3 package for Fedora and Python 2 +package in EPEL6/7 and Python 3 package for EPEL8. Install in a Fedora system:: - sudo dnf install python2-rpkg + sudo dnf install python3-rpkg -If Python 3 package is needed, install ``python3-rpkg``. - -Install in EL6 or EL7:: +Install in EPEL6 or EPEL7:: sudo yum install python2-rpkg +Install in EPEL8:: + + sudo dnf install python3-rpkg + Install in a Python virtual environment --------------------------------------- @@ -78,7 +80,8 @@ Before make a pull request, ensure local changes pass all test cases. Before run tests, install these packages:: - sudo dnf install python37 + sudo dnf install python37 git make gcc rpm-build rpm-devel libcurl-devel \ + krb5-devel openssl-devel python3-devel To run tests simply, ``make test``. diff --git a/requirements/README.rst b/requirements/README.rst index 7dfe220..1c2ed3a 100644 --- a/requirements/README.rst +++ b/requirements/README.rst @@ -12,4 +12,4 @@ Requirements this README file. They has to be installed from package manager too. * fedora-cli-tools.txt: contains command line tools that rpkg executes them in - various commands, e.g. rpmlint, rpmbuild and mock. \ No newline at end of file + various commands, e.g. rpmlint, rpmbuild and mock. diff --git a/requirements/pypi.txt b/requirements/pypi.txt index 5d35f3b..6aeaee2 100644 --- a/requirements/pypi.txt +++ b/requirements/pypi.txt @@ -6,8 +6,9 @@ cccolutils >= 1.4 GitPython koji >= 1.15 pycurl >= 7.19 -requests six >= 1.9.0 +requests +PyYAML # rpm-py-installer # diff --git a/requirements/test-pypi.txt b/requirements/test-pypi.txt index b85c9a5..00a1904 100644 --- a/requirements/test-pypi.txt +++ b/requirements/test-pypi.txt @@ -1,5 +1,6 @@ coverage mock == 1.0.1 +flake8 # used in MBS tests openidc-client diff --git a/tox.ini b/tox.ini index 76d6bf1..d6b0cef 100644 --- a/tox.ini +++ b/tox.ini @@ -3,8 +3,18 @@ envlist = py27,py36,py37,flake8,doc [testenv] skip_install = True +parallel_show_output = True +basepython= + py26: {env:TOXPYTHON:python2.6} + py27: {env:TOXPYTHON:python2.7} + py36: {env:TOXPYTHON:python3.6} + py37: {env:TOXPYTHON:python3.7} + flake8: {env:TOXPYTHON:python3.7} + flake8python2: {env:TOXPYTHON:python2.7} + deps = rpm-py-installer + -r{toxinidir}/requirements/pypi.txt -r{toxinidir}/requirements/test-pypi.txt ; Tests run by `tox`, which require pytest is @@ -13,23 +23,17 @@ deps = pytest-cov commands = - ; Respect the install_requires in setup.py and install dependent packages - ; from there. An alternative is to use tox option usedevelop, however it - ; does not work for rpkg now due to the PyGObject, which can only be - ; installed via pip. Refer to upstream issue - ; https://gitlab.gnome.org/GNOME/pygobject/issues/264 - pip install -e . - python -m pytest {posargs} setenv= PYCURL_SSL_LIBRARY=openssl [testenv:flake8] -basepython = python3 -skip_install = True -deps = flake8 == 3.5.0 -commands = flake8 pyrpkg/ tests/ +commands = python -m flake8 pyrpkg/ tests/ + +[testenv:flake8python2] +commands = python -m flake8 pyrpkg/ tests/ + [testenv:doc] basepython = python3