Use with_artifacts_archive name. Add spec
This commit is contained in:
parent
c13887a1c2
commit
8b0b8e3bc4
|
@ -41,12 +41,12 @@ module Ci
|
||||||
|
|
||||||
scope :unstarted, ->() { where(runner_id: nil) }
|
scope :unstarted, ->() { where(runner_id: nil) }
|
||||||
scope :ignore_failures, ->() { where(allow_failure: false) }
|
scope :ignore_failures, ->() { where(allow_failure: false) }
|
||||||
scope :with_artifacts, ->(file_type) do
|
scope :with_artifacts_archive, ->() do
|
||||||
where('(artifacts_file IS NOT NULL AND artifacts_file <> ?) OR EXISTS (?)',
|
where('(artifacts_file IS NOT NULL AND artifacts_file <> ?) OR EXISTS (?)',
|
||||||
'', Ci::JobArtifact.select(1).where('ci_builds.id = ci_job_artifacts.job_id').public_send(file_type)) # rubocop:disable GitlabSecurity/PublicSend
|
'', Ci::JobArtifact.select(1).where('ci_builds.id = ci_job_artifacts.job_id').archive)
|
||||||
end
|
end
|
||||||
scope :with_artifacts_not_expired, ->() { with_artifacts(:archive).where('artifacts_expire_at IS NULL OR artifacts_expire_at > ?', Time.now) }
|
scope :with_artifacts_not_expired, ->() { with_artifacts_archive.where('artifacts_expire_at IS NULL OR artifacts_expire_at > ?', Time.now) }
|
||||||
scope :with_expired_artifacts, ->() { with_artifacts(:archive).where('artifacts_expire_at < ?', Time.now) }
|
scope :with_expired_artifacts, ->() { with_artifacts_archive.where('artifacts_expire_at < ?', Time.now) }
|
||||||
scope :last_month, ->() { where('created_at > ?', Date.today - 1.month) }
|
scope :last_month, ->() { where('created_at > ?', Date.today - 1.month) }
|
||||||
scope :manual_actions, ->() { where(when: :manual, status: COMPLETED_STATUSES + [:manual]) }
|
scope :manual_actions, ->() { where(when: :manual, status: COMPLETED_STATUSES + [:manual]) }
|
||||||
scope :ref_protected, -> { where(protected: true) }
|
scope :ref_protected, -> { where(protected: true) }
|
||||||
|
|
|
@ -514,7 +514,7 @@ module Ci
|
||||||
# We purposely cast the builds to an Array here. Because we always use the
|
# We purposely cast the builds to an Array here. Because we always use the
|
||||||
# rows if there are more than 0 this prevents us from having to run two
|
# rows if there are more than 0 this prevents us from having to run two
|
||||||
# queries: one to get the count and one to get the rows.
|
# queries: one to get the count and one to get the rows.
|
||||||
@latest_builds_with_artifacts ||= builds.latest.with_artifacts(:archive).to_a
|
@latest_builds_with_artifacts ||= builds.latest.with_artifacts_archive.to_a
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -542,7 +542,7 @@ class Project < ActiveRecord::Base
|
||||||
latest_pipeline = pipelines.latest_successful_for(ref)
|
latest_pipeline = pipelines.latest_successful_for(ref)
|
||||||
|
|
||||||
if latest_pipeline
|
if latest_pipeline
|
||||||
latest_pipeline.builds.latest.with_artifacts(:archive)
|
latest_pipeline.builds.latest.with_artifacts_archive
|
||||||
else
|
else
|
||||||
builds.none
|
builds.none
|
||||||
end
|
end
|
||||||
|
|
|
@ -80,6 +80,42 @@ describe Ci::Build do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '.with_artifacts_archive' do
|
||||||
|
subject { described_class.with_artifacts_archive }
|
||||||
|
|
||||||
|
context 'when job does not have an archive' do
|
||||||
|
let!(:job) { create(:ci_build) }
|
||||||
|
|
||||||
|
it 'does not return the job' do
|
||||||
|
is_expected.not_to include(job)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when job has a legacy archive' do
|
||||||
|
let!(:job) { create(:ci_build, :legacy_artifacts) }
|
||||||
|
|
||||||
|
it 'returns the job' do
|
||||||
|
is_expected.to include(job)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when job has a job artifact archive' do
|
||||||
|
let!(:job) { create(:ci_build, :artifacts) }
|
||||||
|
|
||||||
|
it 'returns the job' do
|
||||||
|
is_expected.to include(job)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when job has a job artifact trace' do
|
||||||
|
let!(:job) { create(:ci_build, :trace_artifact) }
|
||||||
|
|
||||||
|
it 'does not return the job' do
|
||||||
|
is_expected.not_to include(job)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '#actionize' do
|
describe '#actionize' do
|
||||||
context 'when build is a created' do
|
context 'when build is a created' do
|
||||||
before do
|
before do
|
||||||
|
|
Loading…
Reference in New Issue