From 256fe605b34778347cdca6835b42f374dfefc008 Mon Sep 17 00:00:00 2001 From: Sandro Date: Mon, 10 Jul 2023 11:34:37 +0200 Subject: [PATCH] Initial release (RHBZ#2217257) --- .gitignore | 1 + python-nihtest.spec | 106 ++++++++++++++++++++++++++ run_tests_using_cmake_and_ctest.patch | 55 +++++++++++++ sources | 1 + 4 files changed, 163 insertions(+) create mode 100644 .gitignore create mode 100644 python-nihtest.spec create mode 100644 run_tests_using_cmake_and_ctest.patch create mode 100644 sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..796617d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/nihtest-1.1.1.tar.gz diff --git a/python-nihtest.spec b/python-nihtest.spec new file mode 100644 index 0000000..614142c --- /dev/null +++ b/python-nihtest.spec @@ -0,0 +1,106 @@ +%global pypi_name nihtest +%global forgeurl https://github.com/nih-at/nihtest + +%bcond_without tests + +Name: python-%{pypi_name} +Version: 1.1.1 +Release: %{autorelease} +Summary: A testing tool for command line utilities +%forgemeta + +License: BSD-3-Clause +URL: %forgeurl +Source: %forgesource +Patch: run_tests_using_cmake_and_ctest.patch + +BuildArch: noarch +BuildRequires: python3-devel +BuildRequires: git-core +# For generating manpages +BuildRequires: make, mandoc +# For running tests using CMake +%if %{with tests} +BuildRequires: cmake, gcc +%endif + +%global _description %{expand: +This is nihtest, a testing tool for command line utilities. + +Tests are run in a sandbox directory to guarantee a clean separation of +the test. + +It checks that exit code, standard and error outputs are as expected +and compares the files in the sandbox after the run with the expected +results.} + +%description %_description + +%package -n python3-%{pypi_name} +Summary: %{summary} +Provides: nihtest = %{?epoch:%{epoch}:}%{version}-%{release} + +%description -n python3-%{pypi_name} %_description + + +%prep +%autosetup -p1 -n %{pypi_name}-%{version} -S git + +# Work around issue with package discovery due to SPECPARTS dir +# https://github.com/rpm-software-management/rpm/issues/2532 +# Another option seems to be to remove that dir +echo -e '\n[tool.setuptools]\npackages = ["nihtest"]\n' >> pyproject.toml + + +%generate_buildrequires +%pyproject_buildrequires + + +%build +%pyproject_wheel + +# Generate man pages and docs +pushd manpages +make %{?_smp_mflags} +popd + + +%install +%pyproject_install +%pyproject_save_files %{pypi_name} + +mkdir -p %{buildroot}/%{_mandir}/man{1,5} +mv manpages/nihtest.man manpages/nihtest.1 +mv manpages/nihtest-case.man manpages/nihtest-case.5 +mv manpages/nihtest.conf.man manpages/nihtest.conf.5 +cp -a manpages/*.1 %{buildroot}/%{_mandir}/man1 +cp -a manpages/*.5 %{buildroot}/%{_mandir}/man5 + + +%check +%pyproject_check_import + +# Run tests using CMake +%if %{with tests} + # Solution for running tests provided by Benson Muite + touch check.sh + echo "PATH=%{buildroot}%{_bindir}:${PATH} PYTHONPATH=%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}:${PYTHONPATH} %{python3} %{buildroot}%{_bindir}/nihtest -v \$1 " >> check.sh + sed -i 's|${NIHTEST}|bash %{_builddir}/%{pypi_name}-%{version}/check.sh|g' tests/CMakeLists.txt + sed -i 's|ENVIRONMENT "PATH=${path}"|ENVIRONMENT "PYTHONPATH=%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}:$ENV{PYTHONPATH}"|g' tests/CMakeLists.txt + echo "PYTHONPATH=%{buildroot}%{python3_sitearch}:%{buildroot}%{python3_sitelib}" >> tests/nihtest.conf.in + %cmake + %cmake_build + %ctest +%endif + + +%files -n python3-%{pypi_name} -f %{pyproject_files} +%doc README.* +%doc manpages/*.html +%{_bindir}/%{pypi_name} +%{_mandir}/man1/%{pypi_name}.1* +%{_mandir}/man5/%{pypi_name}*.5* + + +%changelog +%autochangelog diff --git a/run_tests_using_cmake_and_ctest.patch b/run_tests_using_cmake_and_ctest.patch new file mode 100644 index 0000000..567ccbb --- /dev/null +++ b/run_tests_using_cmake_and_ctest.patch @@ -0,0 +1,55 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 9451fb4..0c6996c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -11,27 +11,27 @@ enable_testing() + + find_package(Python3 REQUIRED COMPONENTS Interpreter) + +-set(VENV ${CMAKE_BINARY_DIR}/venv) ++#set(VENV ${CMAKE_BINARY_DIR}/venv) + if (WIN32) +- set(VENV_BIN_DIR ${VENV}/Scripts) +- set(VENV_PYTHON ${VENV_BIN_DIR}/python.exe) ++ #set(VENV_BIN_DIR ${VENV}/Scripts) ++ #set(VENV_PYTHON ${VENV_BIN_DIR}/python.exe) + else () # assume Linux +- set(VENV_BIN_DIR ${VENV}/bin) +- set(VENV_PYTHON ${VENV_BIN_DIR}/python) ++ #set(VENV_BIN_DIR ${VENV}/bin) ++ #set(VENV_PYTHON ${VENV_BIN_DIR}/python) + endif () + +-set(NIHTEST ${VENV_BIN_DIR}/nihtest) ++#set(NIHTEST ${VENV_BIN_DIR}/nihtest) + + file(GLOB SOURCES ${CMAKE_SOURCE_DIR}/nihtest/*.py) + +-add_custom_command( +- OUTPUT ${NIHTEST} +- COMMAND ${Python3_EXECUTABLE} -m venv ${VENV} +- COMMAND ${VENV_BIN_DIR}/pip install -q --disable-pip-version-check ${CMAKE_SOURCE_DIR} +- DEPENDS ${SOURCES} +-) ++#add_custom_command( ++ #OUTPUT ${NIHTEST} ++ #COMMAND ${Python3_EXECUTABLE} -m venv ${VENV} ++ #COMMAND ${VENV_BIN_DIR}/pip install -q --disable-pip-version-check ${CMAKE_SOURCE_DIR} ++ #DEPENDS ${SOURCES} ++#) + +-add_custom_target(venv ALL DEPENDS ${NIHTEST}) ++#add_custom_target(venv ALL #DEPENDS ${NIHTEST}) + + # TODO: target for wheel + +diff --git a/tests/nihtest.conf.in b/tests/nihtest.conf.in +index 4204af3..dd3677e 100644 +--- a/tests/nihtest.conf.in ++++ b/tests/nihtest.conf.in +@@ -5,3 +5,5 @@ program-directories = @PROJECT_BINARY_DIR@ + @PROJECT_BINARY_DIR@/Release + @PROJECT_BINARY_DIR@/Debug + @VENV_BIN_DIR@ ++ ++[environment] diff --git a/sources b/sources new file mode 100644 index 0000000..db7f75d --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (nihtest-1.1.1.tar.gz) = 56b134fe17506db1f2e974cc1c90993841243b196fad01f840b1e89d888cc9d1819531ef13c91ca6d7b1d8ed9d490e04777c57f9b864fc022ad7b3bd0a5a66b4