summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLin Jen-Shin <godfat@godfat.org>2016-06-29 17:44:39 +0800
committerLin Jen-Shin <godfat@godfat.org>2016-06-29 17:44:39 +0800
commit9d8dca08e440ccb730f20dcd79b3b47aef8aeb2e (patch)
tree0941c709655e72f6671e7408b72f83416c785203
parent1bc0d732f604d7a4a616ba34b8ccbb1987038951 (diff)
downloadgitlab-ce-9d8dca08e440ccb730f20dcd79b3b47aef8aeb2e.tar.gz
Use AR callbacks as suggested by:
https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/4964#note_12744656
-rw-r--r--app/models/ci/build.rb6
-rw-r--r--lib/ci/api/builds.rb1
-rw-r--r--spec/requests/ci/api/builds_spec.rb8
3 files changed, 11 insertions, 4 deletions
diff --git a/app/models/ci/build.rb b/app/models/ci/build.rb
index 0f8c9511ce1..2079d5a2178 100644
--- a/app/models/ci/build.rb
+++ b/app/models/ci/build.rb
@@ -19,6 +19,7 @@ module Ci
acts_as_taggable
+ before_save :update_artifacts_size, if: :artifacts_file_changed?
before_destroy { project }
after_create :execute_hooks
@@ -340,7 +341,6 @@ module Ci
def erase_artifacts!
remove_artifacts_file!
remove_artifacts_metadata!
- self.artifacts_size = nil
save
end
@@ -381,6 +381,10 @@ module Ci
private
+ def update_artifacts_size
+ self.artifacts_size = artifacts_file.size
+ end
+
def erase_trace!
self.trace = nil
end
diff --git a/lib/ci/api/builds.rb b/lib/ci/api/builds.rb
index f6a8d907066..260ac81f5fa 100644
--- a/lib/ci/api/builds.rb
+++ b/lib/ci/api/builds.rb
@@ -147,7 +147,6 @@ module Ci
build.artifacts_file = artifacts
build.artifacts_metadata = metadata
build.artifacts_expire_in = params['expire_in']
- build.artifacts_size = artifacts.size
if build.save
present(build, with: Entities::BuildDetails)
diff --git a/spec/requests/ci/api/builds_spec.rb b/spec/requests/ci/api/builds_spec.rb
index de1ec8fd40d..64cb7dd12d0 100644
--- a/spec/requests/ci/api/builds_spec.rb
+++ b/spec/requests/ci/api/builds_spec.rb
@@ -476,13 +476,17 @@ describe Ci::API::API do
describe 'DELETE /builds/:id/artifacts' do
let(:build) { create(:ci_build, :artifacts) }
- before { delete delete_url, token: build.token }
+
+ before do
+ delete delete_url, token: build.token
+ build.reload
+ end
it 'should remove build artifacts' do
expect(response).to have_http_status(200)
expect(build.artifacts_file.exists?).to be_falsy
expect(build.artifacts_metadata.exists?).to be_falsy
- expect(build.artifacts_size).to be_falsy
+ expect(build.artifacts_size).to eq(0)
end
end