[med-svn] [Git][med-team/toil][master] 6 commits: Accepted patch to use SubTest from pytest 9.0.1+. Closes: #1123531

Michael R. Crusoe (@crusoe) gitlab at salsa.debian.org
Wed Jan 7 14:31:10 GMT 2026



Michael R. Crusoe pushed to branch master at Debian Med / toil


Commits:
431e3c71 by Michael R. Crusoe at 2026-01-07T14:07:09+01:00
Accepted patch to use SubTest from pytest 9.0.1+. Closes: #1123531

- - - - -
b02ef891 by Michael R. Crusoe at 2026-01-07T14:07:55+01:00
New upstream version 9.1.2
- - - - -
786ee1c7 by Michael R. Crusoe at 2026-01-07T14:07:55+01:00
New upstream version

- - - - -
d3c56458 by Michael R. Crusoe at 2026-01-07T14:08:12+01:00
Update upstream source from tag 'upstream/9.1.2'

Update to upstream version '9.1.2'
with Debian dir 09ac6c38501f97a0200318d2d23a1d986ed6522c
- - - - -
a91335ad by Michael R. Crusoe at 2026-01-07T14:10:59+01:00
Freshen version patch

- - - - -
328bbc2e by Michael R. Crusoe at 2026-01-07T14:16:08+01:00
fix subtests patch

- - - - -


8 changed files:

- debian/changelog
- debian/patches/remove_pytest-subtests.patch
- debian/patches/setting_version.patch
- src/toil/leader.py
- + src/toil/test/wdl/testfiles/gather.wdl
- src/toil/test/wdl/wdltoil_test.py
- src/toil/wdl/wdltoil.py
- version_template.py


Changes:

=====================================
debian/changelog
=====================================
@@ -1,10 +1,16 @@
-toil (9.1.0-2) UNRELEASED; urgency=medium
+toil (9.1.2-1) UNRELEASED; urgency=medium
 
+  [ Andreas Tille ]
   * Team upload.
   * Homepage moved to https://github.com/DataBiosphere/toil
   * d/watch: version=5
 
- -- Andreas Tille <tille at debian.org>  Sat, 20 Dec 2025 18:56:22 +0100
+  [ Michael R. Crusoe ]
+  * Accepted patch to use SubTest from pytest 9.0.1+. Closes: #1123531
+  * New upstream version
+  * Freshen version patch
+
+ -- Michael R. Crusoe <crusoe at debian.org>  Wed, 07 Jan 2026 14:07:55 +0100
 
 toil (9.1.0-1) unstable; urgency=medium
 


=====================================
debian/patches/remove_pytest-subtests.patch
=====================================
@@ -1,22 +1,25 @@
---- a/src/toil/test/src/importExportFileTest.py
-+++ b/src/toil/test/src/importExportFileTest.py
+From: Alexandre Detiste <tchet at debian.org>
+Subject: pytest-subtests has been integrated into pytest (>= 9.0.1)
+Forwarded: https://github.com/DataBiosphere/toil/pull/5430
+--- toil.orig/src/toil/test/src/importExportFileTest.py
++++ toil/src/toil/test/src/importExportFileTest.py
 @@ -27,7 +27,7 @@
  from toil.test import pslow as slow
  
  import pytest
 -from pytest_subtests import SubTests
-+from pytest import SubTests
++from pytest import Subtests as SubTests
  
  
  def create_file(tmp_path: Path, content: str, executable: bool = False) -> Path:
---- a/src/toil/test/src/jobTest.py
-+++ b/src/toil/test/src/jobTest.py
+--- toil.orig/src/toil/test/src/jobTest.py
++++ toil/src/toil/test/src/jobTest.py
 @@ -34,7 +34,7 @@
  from toil.lib.misc import FileDescriptorOrPath
  from toil.test import pslow as slow
  
 -from pytest_subtests import SubTests
-+from pytest import SubTests
++from pytest import Subtests as SubTests
  
  
  class TestJob:


=====================================
debian/patches/setting_version.patch
=====================================
@@ -19,17 +19,17 @@ copy/update that field manually
 --- /dev/null
 +++ toil/src/toil/version.py
 @@ -0,0 +1,14 @@
-+baseVersion = '9.0.0'
++baseVersion = '9.1.2'
 +cgcloudVersion = '1.6.0a1.dev393'
-+version = '9.0.0-fa1e35a17670e1927036914ca624bfd591f8349c'
++version = '9.1.2-355b72ba0e425619c0367562caf2a337078dba65'
 +cacheTag = 'cache-local-py3.13'
 +mainCacheTag = 'cache-master-py3.13'
-+distVersion = '9.0.0'
++distVersion = '9.1.2'
 +exactPython = 'python3.13'
 +python = 'python3.13'
-+dockerTag = '9.0.0-fa1e35a17670e1927036914ca624bfd591f8349c-py3.13'
-+currentCommit = 'fa1e35a17670e1927036914ca624bfd591f8349c'
++dockerTag = '9.1.2-355b72ba0e425619c0367562caf2a337078dba65-py3.13'
++currentCommit = '355b72ba0e425619c0367562caf2a337078dba65'
 +dockerRegistry = 'quay.io/ucsc_cgl'
 +dockerName = 'toil'
 +dirty = False
-+cwltool_version = '3.1.20250110105449'
++cwltool_version = '3.1.20250715140722'


=====================================
src/toil/leader.py
=====================================
@@ -349,14 +349,9 @@ class Leader:
     def create_status_sentinel_file(self, fail: bool) -> None:
         """Create a file in the jobstore indicating failure or success."""
         logName = "failed.log" if fail else "succeeded.log"
-        localLog = os.path.join(os.getcwd(), logName)
-        open(localLog, "w").close()
-        self.jobStore.import_file("file://" + localLog, logName, hardlink=True)
-
-        if os.path.exists(
-            localLog
-        ):  # Bandaid for Jenkins tests failing stochastically and unexplainably.
-            os.remove(localLog)
+        with self.jobStore.write_shared_file_stream(logName) as file_handle:
+            # We just need an empty file, so don't write any content
+            pass
 
     def _handledFailedSuccessor(self, successor_id: str, predecessor_id: str) -> bool:
         """


=====================================
src/toil/test/wdl/testfiles/gather.wdl
=====================================
@@ -0,0 +1,52 @@
+version 1.1
+
+workflow gather {
+    input {
+    }
+
+    scatter(number in [1, 2, 3]) {
+        call task1 {
+            input:
+                number=number
+        }
+    }
+
+    call task2 {
+        input:
+            files = task1.foo
+    }
+
+    output {
+        File outfile = task2.outfile
+    }
+}
+
+task task1 {
+
+    input {
+        Int number
+    }
+
+    command <<<
+        echo ~{number} > foo.txt
+    >>>
+
+    output {
+        File foo = "foo.txt"
+    }
+}
+
+task task2 {
+    input {
+        Array[File] files
+    }
+
+    command <<<
+        cat ~{sep=" " files} >out.txt
+    >>>
+
+    output {
+        File outfile = "out.txt"
+    }
+}
+


=====================================
src/toil/test/wdl/wdltoil_test.py
=====================================
@@ -321,6 +321,28 @@ class TestWDL:
 
                 assert "StringFileCoercion.output_file" in result
 
+    @needs_docker
+    def test_gather(self, tmp_path: Path) -> None:
+        """
+        Test files with the same name from different scatter tasks.
+        """
+        with get_data("test/wdl/testfiles/gather.wdl") as wdl:
+            result_json = subprocess.check_output(
+                self.base_command
+                + [
+                    str(wdl),
+                    "-o",
+                    str(tmp_path),
+                    "--logInfo",
+                    "--retryCount=0"
+                ]
+            )
+            result = json.loads(result_json)
+
+            assert "gather.outfile" in result
+            assert isinstance(result["gather.outfile"], str)
+            assert open(result["gather.outfile"]).read() == "1\n2\n3\n"
+
     @needs_docker
     def test_wait(self, tmp_path: Path) -> None:
         """


=====================================
src/toil/wdl/wdltoil.py
=====================================
@@ -5048,6 +5048,9 @@ class WDLSectionJob(WDLBaseJob):
         if subscript is not None:
             # We need to include a scatter loop number.
             task_path += f".{subscript}"
+        # TODO: MyPy can't tell this dict copy will have the same type
+        child_wdl_options = cast(WDLContext, dict(self._wdl_options))
+        child_wdl_options["task_path"] = task_path
 
         if local_environment is not None:
             # Bring local environment into scope
@@ -5115,7 +5118,7 @@ class WDLSectionJob(WDLBaseJob):
                 job: WDLBaseJob = WDLWorkflowNodeJob(
                     section_graph.get(node_ids[0]),
                     rvs,
-                    wdl_options=self._wdl_options,
+                    wdl_options=child_wdl_options,
                     local=True,
                 )
             else:
@@ -5123,7 +5126,7 @@ class WDLSectionJob(WDLBaseJob):
                 job = WDLWorkflowNodeListJob(
                     [section_graph.get(node_id) for node_id in node_ids],
                     rvs,
-                    wdl_options=self._wdl_options,
+                    wdl_options=child_wdl_options,
                     local=True,
                 )
             for prev_job in prev_jobs:
@@ -5158,7 +5161,7 @@ class WDLSectionJob(WDLBaseJob):
             # And to fill in bindings from code not executed in this instantiation
             # with Null, and filter out stuff that should leave scope.
             sink = WDLCombineBindingsJob(
-                leaf_rvs, wdl_options=self._wdl_options, local=True
+                leaf_rvs, wdl_options=child_wdl_options, local=True
             )
             # It runs inside us
             self.addChild(sink)


=====================================
version_template.py
=====================================
@@ -28,7 +28,7 @@ import the expand_ function and invoke it directly with either no or exactly one
 #  - don't import even standard modules at global scope without renaming them
 #    to have leading/trailing underscores
 
-baseVersion = "9.1.0"
+baseVersion = "9.1.2"
 cgcloudVersion = "1.6.0a1.dev393"
 
 



View it on GitLab: https://salsa.debian.org/med-team/toil/-/compare/f9a0d0726c2bf7a725ec8c0dd4259d77ad2228fd...328bbc2e298d6f0911255ed296baac5cbc060c60

-- 
View it on GitLab: https://salsa.debian.org/med-team/toil/-/compare/f9a0d0726c2bf7a725ec8c0dd4259d77ad2228fd...328bbc2e298d6f0911255ed296baac5cbc060c60
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20260107/fe6156d6/attachment-0001.htm>


More information about the debian-med-commit mailing list