f0a64399c1
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
64 lines
1.2 KiB
Ruby
64 lines
1.2 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe Gitlab::Plugin do
|
|
describe '.execute' do
|
|
let(:data) { Gitlab::DataBuilder::Push::SAMPLE_DATA }
|
|
let(:plugin) { Rails.root.join('plugins', 'test.rb') }
|
|
let(:tmp_file) { Tempfile.new('plugin-dump') }
|
|
|
|
let(:plugin_source) do
|
|
<<~EOS
|
|
#!/usr/bin/env ruby
|
|
x = STDIN.read
|
|
File.write('#{tmp_file.path}', x)
|
|
EOS
|
|
end
|
|
|
|
before do
|
|
File.write(plugin, plugin_source)
|
|
end
|
|
|
|
after do
|
|
FileUtils.rm(plugin)
|
|
end
|
|
|
|
subject { described_class.execute(plugin.to_s, data) }
|
|
|
|
context 'successful execution' do
|
|
before do
|
|
File.chmod(0o777, plugin)
|
|
end
|
|
|
|
after do
|
|
tmp_file.close!
|
|
end
|
|
|
|
it { is_expected.to be true }
|
|
|
|
it 'ensures plugin received data via stdin' do
|
|
subject
|
|
|
|
expect(File.read(tmp_file.path)).to eq(data.to_json)
|
|
end
|
|
end
|
|
|
|
context 'non-executable' do
|
|
it { is_expected.to be false }
|
|
end
|
|
|
|
context 'non-zero exit' do
|
|
let(:plugin_source) do
|
|
<<~EOS
|
|
#!/usr/bin/env ruby
|
|
exit 1
|
|
EOS
|
|
end
|
|
|
|
before do
|
|
File.chmod(0o777, plugin)
|
|
end
|
|
|
|
it { is_expected.to be false }
|
|
end
|
|
end
|
|
end
|