diff options
Diffstat (limited to 'python-pytest-regtest.spec')
| -rw-r--r-- | python-pytest-regtest.spec | 267 |
1 files changed, 267 insertions, 0 deletions
diff --git a/python-pytest-regtest.spec b/python-pytest-regtest.spec new file mode 100644 index 0000000..a4cf067 --- /dev/null +++ b/python-pytest-regtest.spec @@ -0,0 +1,267 @@ +%global _empty_manifest_terminate_build 0 +Name: python-pytest-regtest +Version: 1.5.0 +Release: 1 +Summary: pytest plugin for regression tests +License: https://opensource.org/licenses/MIT +URL: https://gitlab.com/uweschmitt/pytest-regtest +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/52/0f/790ba30a32b6f6ab9db946cf39dc72a4cb8ad6d275bc4c3de082e247721f/pytest-regtest-1.5.0.tar.gz +BuildArch: noarch + + +%description +pytest-regtest is a *pytest*-plugin for implementing regression tests. +Compared to functional testing a regression test does not test if +software produces correct results, instead a regression test checks if +software behaves the same way as it did before introduced changes. +More about regression testing at +<https://en.wikipedia.org/wiki/Regression_testing>. Regression testing +is a common technique to get started when refactoring legacy code +lacking a test suite. +*pytest-regtest* allows capturing selected output which then can be +compared to the captured output from former runs. +To install and activate this plugin execute: + $ pip install pytest-regtest +*pytest-regtest* plugin provides a fixture named *regtest* which can be +used as a file handle for recording data: +```python + def test_squares_up_to_ten(regtest): + result = [i*i for i in range(10)] + # one way to record output: + print(result, file=regtest) + # alternative method to record output: + regtest.write("done") + # or using a context manager: + with regtest: + print("this will be recorded") +``` +If you run this test script with *pytest* the first time there is no +recorded output for this test function so far and thus the test will +fail with a message including a diff: + $ py.test + regression test output differences for test_demo.py::test_squares_up_to_ten: + > --- current + > +++ tobe + > @@ -1,2 +1 @@ + > -[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] + > -done + > + +The output tells us what the current output is, and that the "tobe" output +is still empty. +For accepting this output, we run *pytest* with the *--reset-regtest* +flag: + $ py.test --regtest-reset +Now the next execution of *py.test* will succeed: + $ py.test +Now we break the test by modifying the code under test to compute the first +eleven square numbers: +```python + from __future__ import print_function + def test_squares_up_to_ten(regtest): + result = [i*i for i in range(11)] # changed ! + # one way to record output: + print(result, file=regtest) + # alternative method to record output: + regtest.write("done") +``` +The next run of pytest delivers a nice diff of the current and expected output +from this test function: + $ py.test + > --- current + > +++ tobe + > @@ -1,2 +1,2 @@ + > -[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100] + > +[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] + > done +The recorded output was written to files in the subfolder +`_regtest_outputs` next to your test script(s). You might keep this +folder under version control. + +%package -n python3-pytest-regtest +Summary: pytest plugin for regression tests +Provides: python-pytest-regtest +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-pytest-regtest +pytest-regtest is a *pytest*-plugin for implementing regression tests. +Compared to functional testing a regression test does not test if +software produces correct results, instead a regression test checks if +software behaves the same way as it did before introduced changes. +More about regression testing at +<https://en.wikipedia.org/wiki/Regression_testing>. Regression testing +is a common technique to get started when refactoring legacy code +lacking a test suite. +*pytest-regtest* allows capturing selected output which then can be +compared to the captured output from former runs. +To install and activate this plugin execute: + $ pip install pytest-regtest +*pytest-regtest* plugin provides a fixture named *regtest* which can be +used as a file handle for recording data: +```python + def test_squares_up_to_ten(regtest): + result = [i*i for i in range(10)] + # one way to record output: + print(result, file=regtest) + # alternative method to record output: + regtest.write("done") + # or using a context manager: + with regtest: + print("this will be recorded") +``` +If you run this test script with *pytest* the first time there is no +recorded output for this test function so far and thus the test will +fail with a message including a diff: + $ py.test + regression test output differences for test_demo.py::test_squares_up_to_ten: + > --- current + > +++ tobe + > @@ -1,2 +1 @@ + > -[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] + > -done + > + +The output tells us what the current output is, and that the "tobe" output +is still empty. +For accepting this output, we run *pytest* with the *--reset-regtest* +flag: + $ py.test --regtest-reset +Now the next execution of *py.test* will succeed: + $ py.test +Now we break the test by modifying the code under test to compute the first +eleven square numbers: +```python + from __future__ import print_function + def test_squares_up_to_ten(regtest): + result = [i*i for i in range(11)] # changed ! + # one way to record output: + print(result, file=regtest) + # alternative method to record output: + regtest.write("done") +``` +The next run of pytest delivers a nice diff of the current and expected output +from this test function: + $ py.test + > --- current + > +++ tobe + > @@ -1,2 +1,2 @@ + > -[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100] + > +[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] + > done +The recorded output was written to files in the subfolder +`_regtest_outputs` next to your test script(s). You might keep this +folder under version control. + +%package help +Summary: Development documents and examples for pytest-regtest +Provides: python3-pytest-regtest-doc +%description help +pytest-regtest is a *pytest*-plugin for implementing regression tests. +Compared to functional testing a regression test does not test if +software produces correct results, instead a regression test checks if +software behaves the same way as it did before introduced changes. +More about regression testing at +<https://en.wikipedia.org/wiki/Regression_testing>. Regression testing +is a common technique to get started when refactoring legacy code +lacking a test suite. +*pytest-regtest* allows capturing selected output which then can be +compared to the captured output from former runs. +To install and activate this plugin execute: + $ pip install pytest-regtest +*pytest-regtest* plugin provides a fixture named *regtest* which can be +used as a file handle for recording data: +```python + def test_squares_up_to_ten(regtest): + result = [i*i for i in range(10)] + # one way to record output: + print(result, file=regtest) + # alternative method to record output: + regtest.write("done") + # or using a context manager: + with regtest: + print("this will be recorded") +``` +If you run this test script with *pytest* the first time there is no +recorded output for this test function so far and thus the test will +fail with a message including a diff: + $ py.test + regression test output differences for test_demo.py::test_squares_up_to_ten: + > --- current + > +++ tobe + > @@ -1,2 +1 @@ + > -[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] + > -done + > + +The output tells us what the current output is, and that the "tobe" output +is still empty. +For accepting this output, we run *pytest* with the *--reset-regtest* +flag: + $ py.test --regtest-reset +Now the next execution of *py.test* will succeed: + $ py.test +Now we break the test by modifying the code under test to compute the first +eleven square numbers: +```python + from __future__ import print_function + def test_squares_up_to_ten(regtest): + result = [i*i for i in range(11)] # changed ! + # one way to record output: + print(result, file=regtest) + # alternative method to record output: + regtest.write("done") +``` +The next run of pytest delivers a nice diff of the current and expected output +from this test function: + $ py.test + > --- current + > +++ tobe + > @@ -1,2 +1,2 @@ + > -[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100] + > +[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] + > done +The recorded output was written to files in the subfolder +`_regtest_outputs` next to your test script(s). You might keep this +folder under version control. + +%prep +%autosetup -n pytest-regtest-1.5.0 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-pytest-regtest -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 1.5.0-1 +- Package Spec generated |
