Skip to content

Commit

Permalink
Merge "[tests] Add setup_tests.py"
Browse files Browse the repository at this point in the history
  • Loading branch information
jenkins-bot authored and Gerrit Code Review committed Jan 27, 2024
2 parents 96cf2d8 + 0d6147f commit 7c4962f
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 8 deletions.
1 change: 1 addition & 0 deletions docs/tests_ref/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ Tests in this project:
protectbot<./protectbot_tests>
pwb<./pwb_tests>
script<./script_tests>
setup<./setup_tests>
redirect_bot<./redirect_bot_tests>
reflinks<./reflinks_tests>
replacebot<./replacebot_tests>
Expand Down
8 changes: 8 additions & 0 deletions docs/tests_ref/setup_tests.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
*************************
tests.setup\_tests module
*************************

.. automodule:: tests.setup_tests
:members:
:undoc-members:
:show-inheritance:
19 changes: 11 additions & 8 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import os
import re
import sys
from contextlib import suppress


if sys.version_info[:3] >= (3, 9):
Expand Down Expand Up @@ -134,7 +135,7 @@ def get_validated_version() -> str:
"""
version = metadata.__version__
if 'sdist' not in sys.argv:
return version # pragma: no cover
return version

# validate version for sdist
from contextlib import suppress
Expand All @@ -145,12 +146,12 @@ def get_validated_version() -> str:
try:
tags = run(['git', 'tag'], check=True, stdout=PIPE,
universal_newlines=True).stdout.splitlines()
except Exception as e: # pragma: no cover
except Exception as e:
print(e)
sys.exit('Creating source distribution canceled.')

last_tag = None
if tags: # pragma: no cover
if tags:
for tag in ('stable', 'python2'):
with suppress(ValueError):
tags.remove(tag)
Expand All @@ -160,16 +161,16 @@ def get_validated_version() -> str:
warning = ''
try:
vrsn = Version(version)
except InvalidVersion: # pragma: no cover
except InvalidVersion:
warning = f'{version} is not a valid version string following PEP 440.'
else:
if last_tag and vrsn <= Version(last_tag):
warning = ( # pragma: no cover
warning = (
f'New version {version!r} is not higher than last version '
f'{last_tag!r}.'
)

if warning: # pragma: no cover
if warning:
print(__doc__)
print('\n\n{warning}')
sys.exit('\nBuild of distribution package canceled.')
Expand Down Expand Up @@ -199,18 +200,20 @@ def read_desc(filename) -> str:
return ''.join(desc)


def get_packages(name) -> List[str]:
def get_packages(name: str) -> List[str]:
"""Find framework packages."""
try:
from setuptools import find_namespace_packages
except ImportError:
sys.exit(
'setuptools >= 40.1.0 is required to create a new distribution.')
packages = find_namespace_packages(include=[name + '.*'])
with suppress(ValueError):
packages.remove(name + '.apicache-py3')
return [str(name)] + packages


def main() -> None:
def main() -> None: # pragma: no cover
"""Setup entry point."""
from setuptools import setup

Expand Down
63 changes: 63 additions & 0 deletions tests/setup_tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#!/usr/bin/env python3
"""Test setup.py.
.. versionadded:: 9.0
"""
#
# (C) Pywikibot team, 2024
#
# Distributed under the terms of the MIT license.
#
from __future__ import annotations

import unittest

import pywikibot
import setup

from tests.aspects import TestCase


class TestSetup(TestCase):

"""Test setup.py functions."""

site = False
net = False

def test_get_validated_version(self):
"""Test :func:`setup.get_validated_version` function."""
self.assertEqual(setup.get_validated_version(), pywikibot.__version__)

def test_read_desc(self):
"""Test :func:`setup.read_desc` function."""
desc = setup.read_desc('README.rst')
coc = setup.read_desc('CODE_OF_CONDUCT.rst')
self.assertIn(coc, desc)

def test_get_pywikibot_packages(self):
"""Test :func:`setup.get_packages` function for pywikibot."""
name = 'pywikibot'
packages = setup.get_packages(name)
self.assertEqual(packages[0], name)
self.assertIn(name + '.scripts', packages)
self.assertLength(packages, 14)

def test_get_tests_packages(self):
"""Test :func:`setup.get_packages` function for tests."""
name = 'tests'
packages = setup.get_packages(name)
self.assertEqual(packages[0], name)
self.assertIn(name + '.data', packages)
self.assertLength(packages, 10)

def test_get_scripts_packages(self):
"""Test :func:`setup.get_packages` function for scripts."""
name = 'scripts'
packages = setup.get_packages(name)
self.assertEqual(packages[0], name)
self.assertIn(name + '.userscripts', packages)


if __name__ == '__main__': # pragma: no cover
unittest.main()

0 comments on commit 7c4962f

Please sign in to comment.