<pre style='margin:0'>
Renee Otten (reneeotten) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/ce0951b4738f44d7413c05bc5f3a5e7b55b1f42f">https://github.com/macports/macports-ports/commit/ce0951b4738f44d7413c05bc5f3a5e7b55b1f42f</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit ce0951b4738f44d7413c05bc5f3a5e7b55b1f42f
</span>Author: Renee Otten <reneeotten@macports.org>
AuthorDate: Tue May 31 10:43:42 2022 -0400
<span style='display:block; white-space:pre;color:#404040;'> python PG: add code for setting-up a test phase
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> - add "python.test_framework" option to the python PG. Currently
</span><span style='display:block; white-space:pre;color:#404040;'> supported frameworks are: "pytest" (default), "nose", and "unittest".
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> When "test.run yes" is set, a test-phase will be set-up for the pyXY
</span><span style='display:block; white-space:pre;color:#404040;'> subports. The required testing-framework dependency is added, PYTHONPATH
</span><span style='display:block; white-space:pre;color:#404040;'> is set, and the test.cmd / test.args are set depending on the selected
</span><span style='display:block; white-space:pre;color:#404040;'> framework.
</span><span style='display:block; white-space:pre;color:#404040;'>
</span><span style='display:block; white-space:pre;color:#404040;'> Closes: https://trac.macports.org/ticket/64241
</span>---
_resources/port1.0/group/python-1.0.tcl | 56 +++++++++++++++++++++++++++++++--
1 file changed, 53 insertions(+), 3 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/_resources/port1.0/group/python-1.0.tcl b/_resources/port1.0/group/python-1.0.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index c28cd730c69..75fad9294cc 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/_resources/port1.0/group/python-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/_resources/port1.0/group/python-1.0.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -19,6 +19,9 @@
</span> # python.pep517_backend: specify the backend to use; one of "setuptools" (default),
# "flit", "hatch", or "poetry"
#
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# python.test_framework: specify the test framework to use; one of "pytest" (default),
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# "nose", or "unittest"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span> # Note: setting these options requires name to be set beforehand
PortGroup compiler_wrapper 1.0
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -138,6 +141,7 @@ proc python_set_versions {option action args} {
</span> destroot {
system "echo $name is a stub port > ${destroot}${prefix}/share/doc/${name}/README"
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ test {}
</span> } else {
set addcode 1
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -271,7 +275,7 @@ proc python_set_default_version {option action args} {
</span>
options python.branch python.prefix python.bin python.lib python.libdir \
python.include python.pkgd python.pep517 python.pep517_backend \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- python.add_dependencies
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ python.test_framework python.add_dependencies
</span> # for pythonXY, python.branch is X.Y, for pythonXYZ, it's X.YZ
default python.branch {[string index ${python.version} 0].[string range ${python.version} 1 end]}
default python.prefix {${frameworks_dir}/Python.framework/Versions/${python.branch}}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -289,10 +293,15 @@ default destroot.target {[python_get_defaults destroot_target]}
</span> default python.pep517 no
default python.pep517_backend setuptools
<span style='display:block; white-space:pre;background:#e0ffe0;'>+default python.test_framework pytest
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default test.cmd {[python_get_defaults test_cmd]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default test.target {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+default test.args {[python_get_defaults test_args]}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> default python.add_dependencies yes
proc python_add_dependencies {} {
if {[option python.add_dependencies]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global subport python.version python.default_version
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global subport python.version python.default_version test.run
</span> if {[string match py-* $subport]} {
# set up py-foo as a stub port that depends on the default pyXY-foo
depends_lib-delete port:py${python.default_version}[string trimleft $subport py]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -327,6 +336,19 @@ proc python_add_dependencies {} {
</span> default {}
}
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[tbool test.run]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch -- [option python.test_framework] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pytest {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_test-delete port:py${python.version}-pytest
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_test-append port:py${python.version}-pytest
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ nose {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_test-delete port:py${python.version}-nose
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ depends_test-append port:py${python.version}-nose
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> }
}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -334,7 +356,7 @@ port::register_callback python_add_dependencies
</span>
proc python_get_defaults {var} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- global python.version python.branch python.prefix python.bin python.pep517 workpath
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ global python.version python.branch python.prefix python.bin python.pep517 workpath python.test_framework
</span> switch -- $var {
binary_suffix {
if {[string match py-* [option name]]} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -379,6 +401,28 @@ proc python_get_defaults {var} {
</span> return install
}
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ test_cmd {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch -- [option python.test_framework] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pytest {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return py.test-${python.branch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ nose {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return nosetests-${python.branch}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ unittest {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return "${python.bin} -m unittest discover"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test_args {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ switch -- [option python.test_framework] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ pytest {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ return "-o addopts=''"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ default {}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span> include {
set inc_dir "${python.prefix}/include/python${python.branch}"
if {[file exists ${inc_dir}]} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -451,3 +495,9 @@ pre-livecheck {
</span> livecheck.type none
}
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+pre-test {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # set PYTHONPATH
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ test.env-append PYTHONPATH=[join [glob -nocomplain ${worksrcpath}/build/lib*] :]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span></pre><pre style='margin:0'>
</pre>