[PATCH 1/2] Start converting tests to pytest.
Gedare Bloom
gedare at rtems.org
Fri Mar 13 23:28:52 UTC 2020
On Fri, Mar 13, 2020 at 3:35 PM Amar Takhar <amar at rtems.org> wrote:
>
> This converts three files:
>
> error.py:
> - Check for exceptions and error messages
>
> path.py:
> - Test params and setting module variables
>
> macros.py:
> - Test class with setup and shared module access
>
> This should cover the bulk of what is required to convert the rest to pytest.
>
> Also removes the old test code from the modules themselves.
> ---
> rtemstoolkit/conftest.py | 13 ++++++++
> rtemstoolkit/error.py | 10 ------
> rtemstoolkit/macros.py | 24 --------------
> rtemstoolkit/path.py | 17 ----------
> rtemstoolkit/tests/__init__.py | 0
> rtemstoolkit/tests/test_error.py | 11 +++++++
> rtemstoolkit/tests/test_macros.py | 41 +++++++++++++++++++++++
> rtemstoolkit/tests/test_path.py | 54 +++++++++++++++++++++++++++++++
> 8 files changed, 119 insertions(+), 51 deletions(-)
> create mode 100644 rtemstoolkit/conftest.py
> create mode 100644 rtemstoolkit/tests/__init__.py
> create mode 100644 rtemstoolkit/tests/test_error.py
> create mode 100644 rtemstoolkit/tests/test_macros.py
> create mode 100644 rtemstoolkit/tests/test_path.py
>
> diff --git a/rtemstoolkit/conftest.py b/rtemstoolkit/conftest.py
> new file mode 100644
> index 0000000..a823a2e
> --- /dev/null
> +++ b/rtemstoolkit/conftest.py
> @@ -0,0 +1,13 @@
License/file header?
> +import pytest
> +from sys import path
> +import os
> +
> +
> +# Always find the parent directory of rtemstoolkit/ no matter where
> +# pytest is run.
> +def pytest_runtest_setup(item):
> + path_toolkit = os.path.dirname(os.path.abspath(__file__))
> + path.append(path_toolkit[0:path_toolkit.rfind('/')])
> +
> +
> +
> diff --git a/rtemstoolkit/error.py b/rtemstoolkit/error.py
> index e3a43c1..697b0a6 100644
> --- a/rtemstoolkit/error.py
> +++ b/rtemstoolkit/error.py
> @@ -55,13 +55,3 @@ class exit(error):
> """Raise for to exit."""
> def __init__(self):
> pass
> -
> -if __name__ == '__main__':
> - try:
> - raise general('a general error')
> - except general as gerr:
> - print('caught:', gerr)
> - try:
> - raise internal('an internal error')
> - except internal as ierr:
> - print('caught:', ierr)
> diff --git a/rtemstoolkit/macros.py b/rtemstoolkit/macros.py
> index d8012e1..708107f 100644
> --- a/rtemstoolkit/macros.py
> +++ b/rtemstoolkit/macros.py
> @@ -534,27 +534,3 @@ class macros:
>
> def unlock_read_map(self):
> self.read_map_locked = False
> -
> -if __name__ == "__main__":
> - import copy
> - import sys
> - print(inspect.getfile(macros))
> - m = macros()
> - d = copy.copy(m)
> - m['test1'] = 'something'
> - if d.has_key('test1'):
> - print('error: copy failed.')
> - sys.exit(1)
> - m.parse("[test]\n" \
> - "test1: none, undefine, ''\n" \
> - "name: none, override, 'pink'\n")
> - print('set test:', m.set_read_map('test'))
> - if m['name'] != 'pink':
> - print('error: override failed. name is %s' % (m['name']))
> - sys.exit(1)
> - if m.has_key('test1'):
> - print('error: map undefine failed.')
> - sys.exit(1)
> - print('unset test:', m.unset_read_map('test'))
> - print(m)
> - print(m.keys())
> diff --git a/rtemstoolkit/path.py b/rtemstoolkit/path.py
> index b15164b..7b5f64b 100644
> --- a/rtemstoolkit/path.py
> +++ b/rtemstoolkit/path.py
> @@ -430,20 +430,3 @@ def get_humanize_size(path, depth = -1):
> return "%5.3f%sB" % (size, unit)
> size /= 1024.0
> return "%.3f%sB" % (size, 'Y')
> -
> -if __name__ == '__main__':
> - print(host('/a/b/c/d-e-f'))
> - print(host('//a/b//c/d-e-f'))
> - print(shell('/w/x/y/z'))
> - print(basename('/as/sd/df/fg/me.txt'))
> - print(dirname('/as/sd/df/fg/me.txt'))
> - print(join('/d', 'g', '/tyty/fgfg'))
> - windows = True
> - print(host('/a/b/c/d-e-f'))
> - print(host('//a/b//c/d-e-f'))
> - print(shell('/w/x/y/z'))
> - print(shell('w:/x/y/z'))
> - print(basename('x:/sd/df/fg/me.txt'))
> - print(dirname('x:/sd/df/fg/me.txt'))
> - print(join('s:/d/', '/g', '/tyty/fgfg'))
> - print(join('s:/d/e\\f/g', '/h', '/tyty/zxzx', '\\mm\\nn/p'))
> diff --git a/rtemstoolkit/tests/__init__.py b/rtemstoolkit/tests/__init__.py
> new file mode 100644
> index 0000000..e69de29
> diff --git a/rtemstoolkit/tests/test_error.py b/rtemstoolkit/tests/test_error.py
> new file mode 100644
> index 0000000..85ceeae
> --- /dev/null
> +++ b/rtemstoolkit/tests/test_error.py
> @@ -0,0 +1,11 @@
> +import pytest
> +from rtemstoolkit.error import general, internal
> +
> +def test_general():
> + with pytest.raises(general, match=r"^error: test_general$"):
> + raise general("test_general")
> +
> +
> +def test_insernal():
> + with pytest.raises(internal, match=r"^internal error: test_internal$"):
> + raise internal("test_internal")
> diff --git a/rtemstoolkit/tests/test_macros.py b/rtemstoolkit/tests/test_macros.py
> new file mode 100644
> index 0000000..aa9b80a
> --- /dev/null
> +++ b/rtemstoolkit/tests/test_macros.py
> @@ -0,0 +1,41 @@
> +import pytest
> +
> +from rtemstoolkit.macros import macros
> +
> +
pydoc?
> +class TestClass:
> + @classmethod
> + def setup_class(cls):
> + import copy
> + import sys
> + cls.m = macros()
> + cls.d = copy.copy(cls.m)
> +
> +
> + def test_copy_failure(self):
> + self.m['test1'] = 'something'
> + assert "test1" not in self.d
> +
> +
> + def test_set_tests(self):
> + assert self.m.parse("[test]\n" \
> + "test1: none, undefine, ''\n" \
> + "name: none, override, 'pink'\n") is None
> +
> + assert self.m.set_read_map("test")
> +
> +
> + def test_check_override(self):
> + if self.m["name"] != "pink":
> + raise Exception("error: override failed. name is %s" % self.m["name"])
> +
> +
> + def test_undefine(self):
> + assert "test1" not in self.m
> +
> +
> + def test_unset(self):
> + assert "name" in self.m
> + assert self.m.unset_read_map("test")
> + assert "name" not in self.m
> +
> diff --git a/rtemstoolkit/tests/test_path.py b/rtemstoolkit/tests/test_path.py
> new file mode 100644
> index 0000000..2ce9acb
> --- /dev/null
> +++ b/rtemstoolkit/tests/test_path.py
> @@ -0,0 +1,54 @@
> +import pytest
> +
> +from rtemstoolkit import path
> +
> +
> +rtems_windows = pytest.mark.parametrize("windows", [False, True], ids=["Windows=False", "Windows=True"])
line length
> +
> +
> + at rtems_windows
> +def test_host(windows):
> + path.windows = windows
> +
> + if windows:
> + path_str = "a:\\b\\c\\d-e-f"
> + else:
> + path_str = "/a/b/c/d-e-f"
> +
> + assert path.host('//a/b/c/d-e-f') == path_str
> +
> +
> + at rtems_windows
> +def test_shell(windows):
> + path.windows = windows
> + assert path.shell('/w/x/y/z') == "/w/x/y/z"
> +
Add another blank line
> + at rtems_windows
> +def test_basename(windows):
> + path.windows = windows
> + assert path.basename('/as/sd/df/fg/me.txt') == "me.txt"
> +
> + if windows:
> + assert path.basename('x:/sd/df/fg/me.txt') == "me.txt"
> +
> +
> + at rtems_windows
> +def test_dirname(windows):
> + path.windows = windows
> + assert path.dirname('/as/sd/df/fg/me.txt') == "/as/sd/df/fg"
> +
> + if windows:
> + assert path.dirname('x:/sd/df/fg/me.txt') == "/x/sd/df/fg"
> +
> +
> + at rtems_windows
> +def test_join(windows):
> + path.windows = windows
> + assert path.join('/d', 'g', '/tyty/fgfg') == "/d/g/tyty/fgfg"
> +
> + if windows:
> + assert path.join('s:/d/e\\f/g', '/h', '/tyty/zxzx', '\\mm\\nn/p') == "/s/d/e/f/g/h/tyty/zxzx/mm/nn/p"
> + assert path.join('s:/d/', '/g', '/tyty/fgfg') == "/s/d/g/tyty/fgfg"
> +
> +
> +
> --
> 2.25.0
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
More information about the devel
mailing list