From c9502a43c7adeaec79d7278d703ebd450e219bf2 Mon Sep 17 00:00:00 2001 From: Marcel Loose Date: Wed, 15 Jun 2022 09:03:33 +0200 Subject: [PATCH] Add test for filename conflict resolution Added a test that verifies that the fix in #4101 avoids incorrect filename conflict resolution. --- src/toil/test/cwl/cwlTest.py | 19 ++++++++++++ .../cwl/test_filename_conflict_resolution.cwl | 31 +++++++++++++++++++ .../table.dat | 0 .../table.f0 | 0 .../table.f1 | 0 .../table.f1i | 0 .../table.f2 | 0 .../table.f2_TSM0 | 0 .../table.f3 | 0 .../table.f3_TSM0 | 0 .../table.f4 | 0 .../table.f4_TSM0 | 0 .../table.f5 | 0 .../table.info | 0 .../table.lock | 0 15 files changed, 50 insertions(+) create mode 100644 src/toil/test/cwl/test_filename_conflict_resolution.cwl create mode 100644 src/toil/test/cwl/test_filename_conflict_resolution.ms/table.dat create mode 100644 src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f0 create mode 100644 src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f1 create mode 100644 src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f1i create mode 100644 src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f2 create mode 100644 src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f2_TSM0 create mode 100644 src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f3 create mode 100644 src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f3_TSM0 create mode 100644 src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f4 create mode 100644 src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f4_TSM0 create mode 100644 src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f5 create mode 100644 src/toil/test/cwl/test_filename_conflict_resolution.ms/table.info create mode 100644 src/toil/test/cwl/test_filename_conflict_resolution.ms/table.lock diff --git a/src/toil/test/cwl/cwlTest.py b/src/toil/test/cwl/cwlTest.py index b7384667c3..13bfd128f0 100644 --- a/src/toil/test/cwl/cwlTest.py +++ b/src/toil/test/cwl/cwlTest.py @@ -996,6 +996,25 @@ def test_log_dir_echo_stderr(self) -> None: output = open(result).read() assert output == "hello\n" + def test_filename_conflict_resolution(self): + toil = "toil-cwl-runner" + options = [ + f"--outdir={self.out_dir}", + "--clean=always", + ] + cwl = os.path.join( + os.path.dirname(__file__), "test_filename_conflict_resolution.cwl" + ) + input = os.path.join(os.path.dirname(__file__), "test_filename_conflict_resolution.ms") + output = input + '.sector_*' + cwl_inputs = [ + "--msin", input + ] + cmd = [toil] + options + [cwl] + cwl_inputs + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + stdout, stderr = p.communicate() + assert b"Finished toil run successfully" in stderr + assert p.returncode == 0 @needs_cwl class CWLSmallTests(ToilTest): diff --git a/src/toil/test/cwl/test_filename_conflict_resolution.cwl b/src/toil/test/cwl/test_filename_conflict_resolution.cwl new file mode 100644 index 0000000000..6cc0558722 --- /dev/null +++ b/src/toil/test/cwl/test_filename_conflict_resolution.cwl @@ -0,0 +1,31 @@ +cwlVersion: v1.2 +class: CommandLineTool +baseCommand: + - python + - copier.py + +requirements: + - class: InlineJavascriptRequirement + - class: InitialWorkDirRequirement + listing: + - entryname: copier.py + entry: | + import os, subprocess, sys + msin = sys.argv[1] + root = os.path.basename(msin) + '.sector' + for i in range(2): + msout = f"{root}_{i}" + print(f"Copying: {msin} -> {msout}") + subprocess.check_call(['cp', '-r', '-L', '--no-preserve=mode', msin, msout]) + +inputs: + - id: msin + type: Directory + inputBinding: + position: 0 + +outputs: + - id: msout + type: Directory[] + outputBinding: + glob: ['$(inputs.msin.basename).sector_*'] diff --git a/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.dat b/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.dat new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f0 b/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f0 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f1 b/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f1 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f1i b/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f1i new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f2 b/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f2 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f2_TSM0 b/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f2_TSM0 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f3 b/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f3 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f3_TSM0 b/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f3_TSM0 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f4 b/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f4 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f4_TSM0 b/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f4_TSM0 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f5 b/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f5 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.info b/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.info new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.lock b/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.lock new file mode 100644 index 0000000000..e69de29bb2