diff --git a/lib/concerns/environment_writer.rb b/lib/concerns/environment_writer.rb index 1bacce3..0d7f0c6 100644 --- a/lib/concerns/environment_writer.rb +++ b/lib/concerns/environment_writer.rb @@ -14,6 +14,8 @@ module EnvironmentWriter def modify_env(file, name, value) return if value.nil? + raise ArgumentError, "Invalid input: #{name}=#{value}" if value.include?("\n") + File.open(ENV[file], "a") do |f| f.puts "#{name}=#{value}" end diff --git a/spec/concerns/environment_writer_spec.rb b/spec/concerns/environment_writer_spec.rb index 1f0bc5a..dc89f63 100644 --- a/spec/concerns/environment_writer_spec.rb +++ b/spec/concerns/environment_writer_spec.rb @@ -23,6 +23,12 @@ RSpec.describe EnvironmentWriter do it { expect { subject }.not_to change { File.read(ENV["GITHUB_OUTPUT"], chomp: true).last } } end + + context "when value contains a newline" do + let(:value) { "var_value\n" } + + it { expect { subject }.to raise_error(ArgumentError) } + end end describe "#set_environment" do @@ -39,5 +45,11 @@ RSpec.describe EnvironmentWriter do it { expect { subject }.not_to change { File.read(ENV["GITHUB_ENV"], chomp: true).last } } end + + context "when value contains a newline" do + let(:value) { "env_var_value\n" } + + it { expect { subject }.to raise_error(ArgumentError) } + end end end