diff --git a/apps/cli/executables/vulture/test/missing_arguments.condor b/apps/cli/executables/vulture/test/missing_arguments.condor new file mode 100644 index 0000000000000000000000000000000000000000..ec7ef09309218d292772a93d21b61d2c1b9b1127 --- /dev/null +++ b/apps/cli/executables/vulture/test/missing_arguments.condor @@ -0,0 +1,4 @@ +executable = echo +arguments = + +queue diff --git a/apps/cli/executables/vulture/test/test_vulture.py b/apps/cli/executables/vulture/test/test_vulture.py index c987b2d789e38e250e93f705c27c3f2b0995641a..0d28946ef9dfbabc27719273c0fb841b2e59fc47 100644 --- a/apps/cli/executables/vulture/test/test_vulture.py +++ b/apps/cli/executables/vulture/test/test_vulture.py @@ -56,6 +56,20 @@ def test_job_stdout(): os.remove("null.error") +def test_missing_arguments(): + """ + Test that vulture can handle a blank arguments + """ + test_job = Job("test/missing_arguments.condor") + test_job.execute() + with open("echo.out", "r") as f: + contents = f.read() + assert contents == "\n\n" + # Clean up output files + os.remove("echo.out") + os.remove("echo.error") + + def test_shell_script_in_working_directory(caplog): test_job = Job("test/localscript.condor") test_job.execute() diff --git a/apps/cli/executables/vulture/vulture/condorlite.py b/apps/cli/executables/vulture/vulture/condorlite.py index ab37247355bd0e1bd4f8d16678db378090fe7f98..8ea4a880bfce444d70b624e95f6dd42e75cf55a4 100644 --- a/apps/cli/executables/vulture/vulture/condorlite.py +++ b/apps/cli/executables/vulture/vulture/condorlite.py @@ -170,10 +170,10 @@ class Job: with open(file, "r") as f: # Split file into fields and command for line in f.readlines(): - if re.search(r" = ", line): - fields.append(line.rstrip()) + if re.search(r"=", line): + fields.append(line.strip()) else: - command = line.rstrip() + command = line.strip() except IOError as e: print(f"ERROR: Could not open/read '{file}'.") sys.exit(1) @@ -196,8 +196,11 @@ class Job: """ field_dict = {} for field in fields: - key, value = field.split(" = ") - field_dict[key] = value + # Sometimes there is no value on the other side of the equals sign + # e.g.: arguments = + # This is legal for HTCondor + parts = field.split("=") + field_dict[parts[0].strip()] = parts[1].strip() if len(parts) > 1 else "" return field_dict def execute(self):