From 9eaf3cfe937657104f7d16b4bf2452be18cbdebc Mon Sep 17 00:00:00 2001 From: matthu017 <56143351+matthu017@users.noreply.github.com> Date: Sat, 20 Jun 2020 14:34:46 -0400 Subject: [PATCH] Fix spaces for envvars in submit.yml.erb (#202) Authored-by: Matthew Hu --- lib/ood_core/job/adapters/torque.rb | 4 ++++ spec/job/adapters/torque_spec.rb | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/lib/ood_core/job/adapters/torque.rb b/lib/ood_core/job/adapters/torque.rb index 536d2ee3b..fae19e6c8 100644 --- a/lib/ood_core/job/adapters/torque.rb +++ b/lib/ood_core/job/adapters/torque.rb @@ -1,5 +1,6 @@ require "ood_core/refinements/hash_extensions" require "ood_core/job/adapters/helper" +require 'shellwords' module OodCore module Job @@ -129,6 +130,9 @@ def submit(script, after: [], afterok: [], afternotok: [], afterany: []) envvars.merge! script.native.fetch(:envvars, {}) end + # Destructively change envvars to shellescape values + envvars.transform_values! { |v| Shellwords.escape(v) } + # Submit job @pbs.submit_string(script.content, queue: script.queue_name, headers: headers, resources: resources, envvars: envvars) else diff --git a/spec/job/adapters/torque_spec.rb b/spec/job/adapters/torque_spec.rb index a1743dc53..715c87cfa 100644 --- a/spec/job/adapters/torque_spec.rb +++ b/spec/job/adapters/torque_spec.rb @@ -317,6 +317,12 @@ def build_script(opts = {}) it { expect(pbs).to have_received(:submit_string).with(content, queue: nil, headers: {Join_Path: "oe"}, resources: {}, envvars: {"key" => "value"}) } end + context "with :job_environment having spaces" do + before { adapter.submit(build_script(job_environment: {"key" => "value value"})) } + + it { expect(pbs).to have_received(:submit_string).with(content, queue: nil, headers: {Join_Path: "oe"}, resources: {}, envvars: {"key" => "value\\ value"}) } + end + context "with :workdir" do before { adapter.submit(build_script(workdir: "/path/to/workdir")) }