Commit 91117452 authored by Shinya Maeda's avatar Shinya Maeda

Raise an error if conditions are not fulfilled in archive method

parent 9ca8a5d4
...@@ -94,7 +94,8 @@ module Gitlab ...@@ -94,7 +94,8 @@ module Gitlab
end end
def archive! def archive!
return if trace_artifact raise 'Already archived' if trace_artifact
raise 'Job is not finished yet' unless job.complete?
if current_path if current_path
File.open(current_path) do |stream| File.open(current_path) do |stream|
......
...@@ -455,7 +455,7 @@ describe Gitlab::Ci::Trace do ...@@ -455,7 +455,7 @@ describe Gitlab::Ci::Trace do
context 'when job does not have trace artifact' do context 'when job does not have trace artifact' do
context 'when trace file stored in default path' do context 'when trace file stored in default path' do
let!(:build) { create(:ci_build, :trace_live) } let!(:build) { create(:ci_build, :success, :trace_live) }
let!(:src_path) { trace.read { |s| return s.path } } let!(:src_path) { trace.read { |s| return s.path } }
let!(:src_checksum) { Digest::SHA256.file(src_path).digest } let!(:src_checksum) { Digest::SHA256.file(src_path).digest }
...@@ -481,7 +481,8 @@ describe Gitlab::Ci::Trace do ...@@ -481,7 +481,8 @@ describe Gitlab::Ci::Trace do
end end
end end
context 'when trace stored in database' do context 'when trace is stored in database' do
let(:build) { create(:ci_build, :success) }
let(:trace_content) { IO.read(expand_fixture_path('trace/sample_trace')) } let(:trace_content) { IO.read(expand_fixture_path('trace/sample_trace')) }
let!(:src_checksum) { Digest::SHA256.digest(trace_content) } let!(:src_checksum) { Digest::SHA256.digest(trace_content) }
...@@ -519,9 +520,19 @@ describe Gitlab::Ci::Trace do ...@@ -519,9 +520,19 @@ describe Gitlab::Ci::Trace do
it 'does not archive' do it 'does not archive' do
expect_any_instance_of(Gitlab::Ci::Trace).not_to receive(:archive_stream!) expect_any_instance_of(Gitlab::Ci::Trace).not_to receive(:archive_stream!)
expect { subject }.not_to change { Ci::JobArtifact.count } expect { subject }.to raise_error('Already archived')
expect(build.job_artifacts_trace.file.exists?).to be_truthy expect(build.job_artifacts_trace.file.exists?).to be_truthy
end end
end end
context 'when job is not finished yet' do
let!(:build) { create(:ci_build, :running, :trace_live) }
it 'does not archive' do
expect_any_instance_of(Gitlab::Ci::Trace).not_to receive(:archive_stream!)
expect { subject }.to raise_error('Job is not finished yet')
expect(build.trace.exist?).to be_truthy
end
end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment