From: "Michael R. Crusoe" <crusoe@debian.org>
Date: Mon, 7 Jan 2019 05:08:12 -0800
Subject: Make tests more independent

Forwarded: https://github.com/DataBiosphere/toil/pull/5305
Last-Update: 2025-05-05
---
 MANIFEST.in                                    |  9 +++++++++
 src/toil/test/docs/scripts/tutorial_staging.py | 10 ++++------
 2 files changed, 13 insertions(+), 6 deletions(-)

--- toil.orig/MANIFEST.in
+++ toil/MANIFEST.in
@@ -8,3 +8,12 @@
 include src/toil/test/utils/ABCWorkflowDebug/*
 recursive-include src/toil/test/ *.cwl
 recursive-include src/toil/test/ *.txt
+include src/toil/server/api_spec/workflow_execution_service.swagger.yaml
+include src/toil/test/cwl/colon_test_output_job.yaml
+include src/toil/test/cwl/conditional_wf.yaml
+include src/toil/test/cwl/mock_mpi/fake_mpi.yml
+include src/toil/test/docs/scripts/*
+include src/toil/test/utils/ABCWorkflowDebug/sleep.yaml
+include src/toil/test/utils/ABCWorkflowDebug/*
+recursive-include src/toil/test/ *.cwl
+recursive-include src/toil/test/ *.txt
--- toil.orig/src/toil/test/docs/scripts/tutorial_staging.py
+++ toil/src/toil/test/docs/scripts/tutorial_staging.py
@@ -3,7 +3,7 @@
 from toil.common import Toil
 from toil.job import Job
 from toil.lib.io import mkdtemp
-
+from toil.test import get_data
 
 class HelloWorld(Job):
     def __init__(self, id):
@@ -22,6 +22,7 @@
 
 if __name__ == "__main__":
     jobstore: str = mkdtemp("tutorial_staging")
+    tmp: str = mkdtemp("tutorial_staging_tmp")
     os.rmdir(jobstore)
     options = Job.Runner.getDefaultOptions(jobstore)
     options.logLevel = "INFO"
@@ -29,17 +30,13 @@
 
     with Toil(options) as toil:
         if not toil.options.restart:
-            ioFileDirectory = os.path.join(
-                os.path.dirname(os.path.abspath(__file__)), "stagingExampleFiles"
-            )
-            inputFileID = toil.importFile(
-                "file://" + os.path.abspath(os.path.join(ioFileDirectory, "in.txt"))
-            )
-            outputFileID = toil.start(HelloWorld(inputFileID))
+            with get_data("test/docs/scripts/stagingExampleFiles/in.txt") as path:
+                inputFileID = toil.importFile(f"file://{path}")
+                outputFileID = toil.start(HelloWorld(inputFileID))
         else:
             outputFileID = toil.restart()
 
         toil.exportFile(
             outputFileID,
-            "file://" + os.path.abspath(os.path.join(ioFileDirectory, "out.txt")),
+            "file://" + os.path.join(tmp, "out.txt"),
         )
--- toil.orig/src/toil/test/utils/toilKillTest.py
+++ toil/src/toil/test/utils/toilKillTest.py
@@ -91,6 +91,7 @@
     """A set of test cases for "toil kill" using the AWS job store."""
 
     @needs_cwl
+    @needs_aws_s3
     def test_cwl_toil_kill(self) -> None:
         """Test "toil kill" on a CWL workflow with a 100 second sleep."""
         self._test_cwl_toil_kill(generate_locator("aws", decoration="testkill"))
--- toil.orig/src/toil/test/src/resourceTest.py
+++ toil/src/toil/test/src/resourceTest.py
@@ -158,8 +158,6 @@
         # Assert basic attributes and properties
         assert module.belongsToToil == shouldBelongToToil
         assert module.name == module_name
-        if shouldBelongToToil:
-            assert module.dirPath.endswith("/src")
 
         # Before the module is saved as a resource, localize() and globalize() are identity
         # methods. This should log.warnings.
--- toil.orig/src/toil/test/__init__.py
+++ toil/src/toil/test/__init__.py
@@ -395,6 +395,8 @@
         boto3_credentials = session.get_credentials()
     except ImportError:
         return False
+    except ProxyConnectionError:
+        return False
     from toil.lib.aws import running_on_ec2
 
     if not (
--- toil.orig/src/toil/test/utils/ABCWorkflowDebug/debugWorkflow.py
+++ toil/src/toil/test/utils/ABCWorkflowDebug/debugWorkflow.py
@@ -158,6 +158,7 @@
 
 if __name__ == "__main__":
     jobStorePath = sys.argv[1] if len(sys.argv) > 1 else mkdtemp("debugWorkflow")
+    tmp: str = mkdtemp("debugWorkflow_tmp")
     options = Job.Runner.getDefaultOptions(jobStorePath)
     options.clean = "never"
     options.stats = True
@@ -178,10 +179,9 @@
         job1 = Job.wrapJobFn(writeA, file_maker)
         job2 = Job.wrapJobFn(writeB, file_maker, B_file)
         job3 = Job.wrapJobFn(writeC)
-        with get_data("test/utils/ABCWorkflowDebug/ABC.txt") as filepath:
-            job4 = Job.wrapJobFn(
-                writeABC, job1.rv(), job2.rv(), job3.rv(), str(filepath)
-            )
+        job4 = Job.wrapJobFn(
+            writeABC, job1.rv(), job2.rv(), job3.rv(), os.path.join(tmp, "ABC.txt")
+        )
         job5 = Job.wrapJobFn(finalize_jobs, 1)
         job6 = Job.wrapJobFn(finalize_jobs, 2)
         job7 = Job.wrapJobFn(finalize_jobs, 3)
