Update specs for CI Build, add `artifacts?` method
`artifacts?` method checks if artifacts archive is available.
This commit is contained in:
parent
9e0e9342a4
commit
8eeed761a9
|
@ -15,6 +15,8 @@ class Projects::ArtifactsController < Projects::ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def browse
|
def browse
|
||||||
|
return render_404 unless build.artifacts?
|
||||||
|
|
||||||
current_path = params[:path] ? "./#{params[:path]}/" : './'
|
current_path = params[:path] ? "./#{params[:path]}/" : './'
|
||||||
artifacts_metadata = build.artifacts_metadata(current_path)
|
artifacts_metadata = build.artifacts_metadata(current_path)
|
||||||
@path = Gitlab::StringPath.new(current_path, artifacts_metadata)
|
@path = Gitlab::StringPath.new(current_path, artifacts_metadata)
|
||||||
|
|
|
@ -319,24 +319,26 @@ module Ci
|
||||||
pending? && !any_runners_online?
|
pending? && !any_runners_online?
|
||||||
end
|
end
|
||||||
|
|
||||||
def artifacts_download_url
|
|
||||||
if artifacts_file.exists?
|
|
||||||
download_namespace_project_build_artifacts_path(project.namespace, project, self)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def artifacts_browse_url
|
|
||||||
if artifacts_file.exists?
|
|
||||||
browse_namespace_project_build_artifacts_path(project.namespace, project, self)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def execute_hooks
|
def execute_hooks
|
||||||
build_data = Gitlab::BuildDataBuilder.build(self)
|
build_data = Gitlab::BuildDataBuilder.build(self)
|
||||||
project.execute_hooks(build_data.dup, :build_hooks)
|
project.execute_hooks(build_data.dup, :build_hooks)
|
||||||
project.execute_services(build_data.dup, :build_hooks)
|
project.execute_services(build_data.dup, :build_hooks)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def artifacts?
|
||||||
|
artifacts_file.exists?
|
||||||
|
end
|
||||||
|
|
||||||
|
def artifacts_download_url
|
||||||
|
download_namespace_project_build_artifacts_path(project.namespace, project, self) if
|
||||||
|
artifacts?
|
||||||
|
end
|
||||||
|
|
||||||
|
def artifacts_browse_url
|
||||||
|
browse_namespace_project_build_artifacts_path(project.namespace, project, self) if
|
||||||
|
artifacts?
|
||||||
|
end
|
||||||
|
|
||||||
def artifacts_metadata(path)
|
def artifacts_metadata(path)
|
||||||
[]
|
[]
|
||||||
end
|
end
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
|
|
||||||
%td
|
%td
|
||||||
.pull-right
|
.pull-right
|
||||||
- if current_user && can?(current_user, :download_build_artifacts, project) && build.artifacts_file.exist?
|
- if current_user && can?(current_user, :download_build_artifacts, project) && build.artifacts?
|
||||||
= link_to build.artifacts_download_url, title: 'Download artifacts' do
|
= link_to build.artifacts_download_url, title: 'Download artifacts' do
|
||||||
%i.fa.fa-download
|
%i.fa.fa-download
|
||||||
- if current_user && can?(current_user, :manage_builds, build.project)
|
- if current_user && can?(current_user, :manage_builds, build.project)
|
||||||
|
|
|
@ -89,7 +89,7 @@
|
||||||
Test coverage
|
Test coverage
|
||||||
%h1 #{@build.coverage}%
|
%h1 #{@build.coverage}%
|
||||||
|
|
||||||
- if current_user && can?(current_user, :download_build_artifacts, @project) && @build.artifacts_file.exist?
|
- if current_user && can?(current_user, :download_build_artifacts, @project) && @build.artifacts?
|
||||||
.build-widget.center
|
.build-widget.center
|
||||||
.panel.panel-default
|
.panel.panel-default
|
||||||
.panel-heading Build artifacts
|
.panel-heading Build artifacts
|
||||||
|
|
|
@ -66,7 +66,7 @@
|
||||||
|
|
||||||
%td
|
%td
|
||||||
.pull-right
|
.pull-right
|
||||||
- if current_user && can?(current_user, :download_build_artifacts, commit_status.project) && commit_status.artifacts_file.exist?
|
- if current_user && can?(current_user, :download_build_artifacts, commit_status.project) && commit_status.artifacts?
|
||||||
= link_to commit_status.artifacts_download_url, title: 'Download artifacts' do
|
= link_to commit_status.artifacts_download_url, title: 'Download artifacts' do
|
||||||
%i.fa.fa-download
|
%i.fa.fa-download
|
||||||
- if current_user && can?(current_user, :manage_builds, commit_status.project)
|
- if current_user && can?(current_user, :manage_builds, commit_status.project)
|
||||||
|
|
|
@ -1,28 +1,3 @@
|
||||||
# == Schema Information
|
|
||||||
#
|
|
||||||
# Table name: builds
|
|
||||||
#
|
|
||||||
# id :integer not null, primary key
|
|
||||||
# project_id :integer
|
|
||||||
# status :string(255)
|
|
||||||
# finished_at :datetime
|
|
||||||
# trace :text
|
|
||||||
# created_at :datetime
|
|
||||||
# updated_at :datetime
|
|
||||||
# started_at :datetime
|
|
||||||
# runner_id :integer
|
|
||||||
# commit_id :integer
|
|
||||||
# coverage :float
|
|
||||||
# commands :text
|
|
||||||
# job_id :integer
|
|
||||||
# name :string(255)
|
|
||||||
# deploy :boolean default(FALSE)
|
|
||||||
# options :text
|
|
||||||
# allow_failure :boolean default(FALSE), not null
|
|
||||||
# stage :string(255)
|
|
||||||
# trigger_request_id :integer
|
|
||||||
#
|
|
||||||
|
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
describe Ci::Build, models: true do
|
describe Ci::Build, models: true do
|
||||||
|
@ -376,13 +351,46 @@ describe Ci::Build, models: true do
|
||||||
is_expected.to be_nil
|
is_expected.to be_nil
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should be nil if artifact exist' do
|
it 'should not be nil if artifact exist' do
|
||||||
gif = fixture_file_upload(Rails.root + 'spec/fixtures/banana_sample.gif', 'image/gif')
|
gif = fixture_file_upload(Rails.root + 'spec/fixtures/banana_sample.gif', 'image/gif')
|
||||||
build.update_attributes(artifacts_file: gif)
|
build.update_attributes(artifacts_file: gif)
|
||||||
is_expected.to_not be_nil
|
is_expected.to_not be_nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe :artifacts_browse_url do
|
||||||
|
subject { build.artifacts_browse_url }
|
||||||
|
|
||||||
|
it "should be nil if artifact doesn't exist" do
|
||||||
|
build.update_attributes(artifacts_file: nil)
|
||||||
|
is_expected.to be_nil
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should not be nil if artifact exist' do
|
||||||
|
gif = fixture_file_upload(Rails.root + 'spec/fixtures/banana_sample.gif', 'image/gif')
|
||||||
|
build.update_attributes(artifacts_file: gif)
|
||||||
|
is_expected.to_not be_nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe :artifacts? do
|
||||||
|
subject { build.artifacts? }
|
||||||
|
|
||||||
|
context 'artifacts archive does not exist' do
|
||||||
|
before { build.update_attributes(artifacts_file: nil) }
|
||||||
|
it { is_expected.to be_falsy }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'artifacts archive exists' do
|
||||||
|
before do
|
||||||
|
gif = fixture_file_upload(Rails.root + 'spec/fixtures/banana_sample.gif', 'image/gif')
|
||||||
|
build.update_attributes(artifacts_file: gif)
|
||||||
|
end
|
||||||
|
|
||||||
|
it { is_expected.to be_truthy }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe :repo_url do
|
describe :repo_url do
|
||||||
let(:build) { FactoryGirl.create :ci_build }
|
let(:build) { FactoryGirl.create :ci_build }
|
||||||
let(:project) { build.project }
|
let(:project) { build.project }
|
||||||
|
|
Loading…
Reference in New Issue