<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>