summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-chkpkg.spec306
-rw-r--r--sources1
3 files changed, 308 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..1212c90 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/chkpkg-0.5.2.tar.gz
diff --git a/python-chkpkg.spec b/python-chkpkg.spec
new file mode 100644
index 0000000..e052ca5
--- /dev/null
+++ b/python-chkpkg.spec
@@ -0,0 +1,306 @@
+%global _empty_manifest_terminate_build 0
+Name: python-chkpkg
+Version: 0.5.2
+Release: 1
+Summary: Tests Python package sources to see if they build successfully to a PyPi compatible distribution
+License: MIT
+URL: https://github.com/rtmigo/chkpkg_py#readme
+Source0: https://mirrors.aliyun.com/pypi/web/packages/55/e1/cb1967c83f65ee387c12dfcbb495804200fe20067c7ae2ab9821d6a48b3c/chkpkg-0.5.2.tar.gz
+BuildArch: noarch
+
+
+%description
+`chkpkg` supports Python 3.6+ on Linux, macOS and Windows.
+# Install
+``` bash
+pip3 install chkpkg
+```
+# Use
+``` python3
+from chkpkg import Package
+with Package() as pkg:
+ pkg.run_python_code('import mypackage; mypackage.myfunc()')
+ pkg.run_shell_code('mypackage_cli --version')
+print("Package is OK!")
+```
+This **test script** creates a distribution from project sources, installs the
+package from the distribution into a virtual environment, tries importing and
+running the installed package from python and command line.
+If any results in an error, an exception is thrown. The absence of exceptions
+means that the package is fine.
+By default, we assume that the `setup.py` or `setup.cfg` is located in the
+current working directory. You can specify a different path using the
+argument `Package(project_dir=...)`
+# Steps
+Without context, the test script would look like this:
+``` python3
+from chkpkg import Package
+pkg = Package()
+try:
+ # step 1
+ pkg.init()
+ # step 2
+ pkg.run_python_code('import mypackage; mypackage.myfunc()')
+ pkg.run_shell_code('mypackage_cli --version')
+finally:
+ # step 3
+ pkg.cleanup()
+```
+## Step 1: Build, Verify, Install
+``` python3
+pkg.init()
+```
+The `init` method:
+- Creates a temporary virtual environment capable of building `.whl` files
+ - Creates a distribution as a `.whl` file (`python -m build`)
+ - Verifies the package source (`twine check --strict`)
+- Creates another temporary virtual environment without preinstalled packages
+ - Installs the package from the newly created `.whl` into the clean virtual
+ environment
+## Step 2: Import, Run
+``` python3
+pkg.run_python_code('import mypackage')
+```
+The `run_python_code` method allows you to check that the package is installed
+and can be imported without errors.
+You can also run some functions from the imported package and check the output.
+``` python3
+output = pkg.run_python_code('import mypackage; print(mypackage.plus(2, 3))')
+assert output == "5"
+```
+If the package must be installed as a CLI program, this can be tested with
+the `run_shell_code`. This function calls `cmd.exe` on Windows and `bash`
+on other systems.
+``` python3
+output = pkg.run_shell_code('mypackage_cli --version')
+assert output[0].isdigit()
+```
+The current working directory will be a random temporary one. If `mypackage_cli`
+can be run, then it really is available as a shell command from any directory.
+However, such tests are best done on a clean system. If we run the tests on
+development machine, it may turn out that we are running a command that was in
+the system before the package was installed.
+## Step 3: Cleanup
+``` python3
+pkg.cleanup()
+```
+The `cleanup` method removes all temporary directories created during building
+and testing.
+# License
+Copyright © 2021 [Arteom iG](https://github.com/rtmigo).
+Released under the [MIT License](LICENSE).
+
+%package -n python3-chkpkg
+Summary: Tests Python package sources to see if they build successfully to a PyPi compatible distribution
+Provides: python-chkpkg
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-chkpkg
+`chkpkg` supports Python 3.6+ on Linux, macOS and Windows.
+# Install
+``` bash
+pip3 install chkpkg
+```
+# Use
+``` python3
+from chkpkg import Package
+with Package() as pkg:
+ pkg.run_python_code('import mypackage; mypackage.myfunc()')
+ pkg.run_shell_code('mypackage_cli --version')
+print("Package is OK!")
+```
+This **test script** creates a distribution from project sources, installs the
+package from the distribution into a virtual environment, tries importing and
+running the installed package from python and command line.
+If any results in an error, an exception is thrown. The absence of exceptions
+means that the package is fine.
+By default, we assume that the `setup.py` or `setup.cfg` is located in the
+current working directory. You can specify a different path using the
+argument `Package(project_dir=...)`
+# Steps
+Without context, the test script would look like this:
+``` python3
+from chkpkg import Package
+pkg = Package()
+try:
+ # step 1
+ pkg.init()
+ # step 2
+ pkg.run_python_code('import mypackage; mypackage.myfunc()')
+ pkg.run_shell_code('mypackage_cli --version')
+finally:
+ # step 3
+ pkg.cleanup()
+```
+## Step 1: Build, Verify, Install
+``` python3
+pkg.init()
+```
+The `init` method:
+- Creates a temporary virtual environment capable of building `.whl` files
+ - Creates a distribution as a `.whl` file (`python -m build`)
+ - Verifies the package source (`twine check --strict`)
+- Creates another temporary virtual environment without preinstalled packages
+ - Installs the package from the newly created `.whl` into the clean virtual
+ environment
+## Step 2: Import, Run
+``` python3
+pkg.run_python_code('import mypackage')
+```
+The `run_python_code` method allows you to check that the package is installed
+and can be imported without errors.
+You can also run some functions from the imported package and check the output.
+``` python3
+output = pkg.run_python_code('import mypackage; print(mypackage.plus(2, 3))')
+assert output == "5"
+```
+If the package must be installed as a CLI program, this can be tested with
+the `run_shell_code`. This function calls `cmd.exe` on Windows and `bash`
+on other systems.
+``` python3
+output = pkg.run_shell_code('mypackage_cli --version')
+assert output[0].isdigit()
+```
+The current working directory will be a random temporary one. If `mypackage_cli`
+can be run, then it really is available as a shell command from any directory.
+However, such tests are best done on a clean system. If we run the tests on
+development machine, it may turn out that we are running a command that was in
+the system before the package was installed.
+## Step 3: Cleanup
+``` python3
+pkg.cleanup()
+```
+The `cleanup` method removes all temporary directories created during building
+and testing.
+# License
+Copyright © 2021 [Arteom iG](https://github.com/rtmigo).
+Released under the [MIT License](LICENSE).
+
+%package help
+Summary: Development documents and examples for chkpkg
+Provides: python3-chkpkg-doc
+%description help
+`chkpkg` supports Python 3.6+ on Linux, macOS and Windows.
+# Install
+``` bash
+pip3 install chkpkg
+```
+# Use
+``` python3
+from chkpkg import Package
+with Package() as pkg:
+ pkg.run_python_code('import mypackage; mypackage.myfunc()')
+ pkg.run_shell_code('mypackage_cli --version')
+print("Package is OK!")
+```
+This **test script** creates a distribution from project sources, installs the
+package from the distribution into a virtual environment, tries importing and
+running the installed package from python and command line.
+If any results in an error, an exception is thrown. The absence of exceptions
+means that the package is fine.
+By default, we assume that the `setup.py` or `setup.cfg` is located in the
+current working directory. You can specify a different path using the
+argument `Package(project_dir=...)`
+# Steps
+Without context, the test script would look like this:
+``` python3
+from chkpkg import Package
+pkg = Package()
+try:
+ # step 1
+ pkg.init()
+ # step 2
+ pkg.run_python_code('import mypackage; mypackage.myfunc()')
+ pkg.run_shell_code('mypackage_cli --version')
+finally:
+ # step 3
+ pkg.cleanup()
+```
+## Step 1: Build, Verify, Install
+``` python3
+pkg.init()
+```
+The `init` method:
+- Creates a temporary virtual environment capable of building `.whl` files
+ - Creates a distribution as a `.whl` file (`python -m build`)
+ - Verifies the package source (`twine check --strict`)
+- Creates another temporary virtual environment without preinstalled packages
+ - Installs the package from the newly created `.whl` into the clean virtual
+ environment
+## Step 2: Import, Run
+``` python3
+pkg.run_python_code('import mypackage')
+```
+The `run_python_code` method allows you to check that the package is installed
+and can be imported without errors.
+You can also run some functions from the imported package and check the output.
+``` python3
+output = pkg.run_python_code('import mypackage; print(mypackage.plus(2, 3))')
+assert output == "5"
+```
+If the package must be installed as a CLI program, this can be tested with
+the `run_shell_code`. This function calls `cmd.exe` on Windows and `bash`
+on other systems.
+``` python3
+output = pkg.run_shell_code('mypackage_cli --version')
+assert output[0].isdigit()
+```
+The current working directory will be a random temporary one. If `mypackage_cli`
+can be run, then it really is available as a shell command from any directory.
+However, such tests are best done on a clean system. If we run the tests on
+development machine, it may turn out that we are running a command that was in
+the system before the package was installed.
+## Step 3: Cleanup
+``` python3
+pkg.cleanup()
+```
+The `cleanup` method removes all temporary directories created during building
+and testing.
+# License
+Copyright © 2021 [Arteom iG](https://github.com/rtmigo).
+Released under the [MIT License](LICENSE).
+
+%prep
+%autosetup -n chkpkg-0.5.2
+
+%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-chkpkg -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Jun 20 2023 Python_Bot <Python_Bot@openeuler.org> - 0.5.2-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..35bef3e
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+11a3f6e12d60d4edfe7875851eea8a19 chkpkg-0.5.2.tar.gz