Skip to content
Snippets Groups Projects
Commit e3832540 authored by Lin Jen-Shin's avatar Lin Jen-Shin
Browse files

Add all the tests and fix stuffs along the way:

It turns out they are different:

    builds.success.latest.first

and

    builds.latest.success.first

If we put success first, that latest would also filter via success,
and which is what we want here.
parent a96e9aa0
No related branches found
No related tags found
1 merge request!5142Add a download buttons for Build Artifacts
Pipeline #
Loading
@@ -63,7 +63,7 @@ class Projects::ArtifactsController < Projects::ApplicationController
Loading
@@ -63,7 +63,7 @@ class Projects::ArtifactsController < Projects::ApplicationController
if params[:ref] if params[:ref]
builds = project.builds_for(params[:build_name], params[:ref]) builds = project.builds_for(params[:build_name], params[:ref])
   
builds.latest.success.first builds.success.latest.first
end end
end end
   
Loading
Loading
Loading
@@ -736,7 +736,7 @@ Rails.application.routes.draw do
Loading
@@ -736,7 +736,7 @@ Rails.application.routes.draw do
resources :artifacts, only: [] do resources :artifacts, only: [] do
collection do collection do
get :search, path: ':ref/:build_name/*path', format: false, get :search, path: ':ref/:build_name/*path', format: false,
constraints: { ref: %r{.+(?=/)} } # ref could have / constraints: { ref: /.+/ } # ref could have /
end end
end end
   
Loading
Loading
require 'spec_helper'
describe Projects::ArtifactsController do
let(:user) { create(:user) }
let(:project) { create(:project) }
let(:pipeline) do
create(:ci_pipeline, project: project, sha: project.commit('fix').sha)
end
let(:build) { create(:ci_build, :success, :artifacts, pipeline: pipeline) }
before do
login_as(user)
project.team << [user, :developer]
end
describe 'GET /:project/artifacts/:ref/:build_name/browse' do
context '404' do
it 'has no such ref' do
path = search_namespace_project_artifacts_path(
project.namespace,
project,
'TAIL',
build.name,
'browse')
get path
expect(response.status).to eq(404)
end
it 'has no such build' do
get search_namespace_project_artifacts_path(
project.namespace,
project,
pipeline.sha,
'NOBUILD',
'browse')
expect(response.status).to eq(404)
end
it 'has no path' do
get search_namespace_project_artifacts_path(
project.namespace,
project,
pipeline.sha,
build.name,
'')
expect(response.status).to eq(404)
end
end
context '302' do
def path_from_sha
search_namespace_project_artifacts_path(
project.namespace,
project,
pipeline.sha,
build.name,
'browse')
end
shared_examples 'redirect to the build' do
it 'redirects' do
path = browse_namespace_project_build_artifacts_path(
project.namespace,
project,
build)
expect(response).to redirect_to(path)
end
end
context 'with sha' do
before do
get path_from_sha
end
it_behaves_like 'redirect to the build'
end
context 'with regular branch' do
before do
pipeline.update(sha: project.commit('master').sha)
end
before do
get search_namespace_project_artifacts_path(
project.namespace,
project,
'master',
build.name,
'browse')
end
it_behaves_like 'redirect to the build'
end
context 'with branch name containing slash' do
before do
pipeline.update(sha: project.commit('improve/awesome').sha)
end
before do
get search_namespace_project_artifacts_path(
project.namespace,
project,
'improve/awesome',
build.name,
'browse')
end
it_behaves_like 'redirect to the build'
end
context 'with latest build' do
before do
3.times do # creating some old builds
create(:ci_build, :success, :artifacts, pipeline: pipeline)
end
end
before do
get path_from_sha
end
it_behaves_like 'redirect to the build'
end
context 'with success build' do
before do
build # make sure build was old, but still the latest success one
create(:ci_build, :pending, :artifacts, pipeline: pipeline)
end
before do
get path_from_sha
end
it_behaves_like 'redirect to the build'
end
end
end
end
Loading
@@ -28,9 +28,9 @@ RSpec.configure do |config|
Loading
@@ -28,9 +28,9 @@ RSpec.configure do |config|
config.verbose_retry = true config.verbose_retry = true
config.display_try_failure_messages = true config.display_try_failure_messages = true
   
config.include Devise::TestHelpers, type: :controller config.include Devise::TestHelpers, type: :controller
config.include LoginHelpers, type: :feature config.include Warden::Test::Helpers, type: :request
config.include LoginHelpers, type: :request config.include LoginHelpers, type: :feature
config.include StubConfiguration config.include StubConfiguration
config.include EmailHelpers config.include EmailHelpers
config.include RelativeUrl, type: feature config.include RelativeUrl, type: feature
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment