diff options
-rw-r--r-- | app/controllers/projects/pipelines_controller.rb | 6 | ||||
-rw-r--r-- | app/views/projects/pipelines/_with_tabs.html.haml | 31 | ||||
-rw-r--r-- | spec/features/projects/pipelines/pipeline_spec.rb | 15 |
3 files changed, 37 insertions, 15 deletions
diff --git a/app/controllers/projects/pipelines_controller.rb b/app/controllers/projects/pipelines_controller.rb index 915f0bc63f7..3a56be2735a 100644 --- a/app/controllers/projects/pipelines_controller.rb +++ b/app/controllers/projects/pipelines_controller.rb @@ -71,7 +71,11 @@ class Projects::PipelinesController < Projects::ApplicationController end def failures - render_show + if @pipeline.statuses.latest.failed.present? + render_show + else + redirect_to pipeline_path(@pipeline) + end end def status diff --git a/app/views/projects/pipelines/_with_tabs.html.haml b/app/views/projects/pipelines/_with_tabs.html.haml index 76eb8533cc3..ba2c71cfd88 100644 --- a/app/views/projects/pipelines/_with_tabs.html.haml +++ b/app/views/projects/pipelines/_with_tabs.html.haml @@ -1,3 +1,5 @@ +- failed_builds = @pipeline.statuses.latest.failed + .tabs-holder %ul.pipelines-tabs.nav-links.no-top.no-bottom %li.js-pipeline-tab-link @@ -7,10 +9,11 @@ = link_to builds_namespace_project_pipeline_path(@project.namespace, @project, @pipeline), data: {target: 'div#js-tab-builds', action: 'builds', toggle: 'tab' }, class: 'builds-tab' do Jobs %span.badge.js-builds-counter= pipeline.statuses.count - %li.js-failures-tab-link - = link_to failures_namespace_project_pipeline_path(@project.namespace, @project, @pipeline), data: {target: 'div#js-tab-failures', action: 'failures', toggle: 'tab' }, class: 'failures-tab' do - Failures - %span.badge.js-failures-counter= pipeline.statuses.latest.failed.count + - if failed_builds.present? + %li.js-failures-tab-link + = link_to failures_namespace_project_pipeline_path(@project.namespace, @project, @pipeline), data: {target: 'div#js-tab-failures', action: 'failures', toggle: 'tab' }, class: 'failures-tab' do + Failed Jobs + %span.badge.js-failures-counter= failed_builds.count .tab-content #js-tab-pipeline.tab-pane @@ -41,13 +44,13 @@ %th Coverage %th = render partial: "projects/stage/stage", collection: pipeline.stages, as: :stage - #js-tab-failures.build-failures.tab-pane - - failed = @pipeline.statuses.latest.failed - - failed.each do |build| - .build-state - %span.ci-status-icon-failed= custom_icon('icon_status_failed') - %span.stage - = build.stage.titleize - %span.build-name - = render "notify/links/#{build.to_partial_path}", pipeline: @pipeline, build: build - %pre.build-log= build_summary(build) + - if failed_builds.present? + #js-tab-failures.build-failures.tab-pane + - failed_builds.each do |build| + .build-state + %span.ci-status-icon-failed= custom_icon('icon_status_failed') + %span.stage + = build.stage.titleize + %span.build-name + = render "notify/links/#{build.to_partial_path}", pipeline: @pipeline, build: build + %pre.build-log= build_summary(build) diff --git a/spec/features/projects/pipelines/pipeline_spec.rb b/spec/features/projects/pipelines/pipeline_spec.rb index ab7c002704d..cfac54ef259 100644 --- a/spec/features/projects/pipelines/pipeline_spec.rb +++ b/spec/features/projects/pipelines/pipeline_spec.rb @@ -269,6 +269,7 @@ describe 'Pipeline', :feature, :js do end it 'shows jobs tab pane as active' do + expect(page).to have_content('Failed Jobs') expect(page).to have_css('#js-tab-failures.active') end @@ -291,5 +292,19 @@ describe 'Pipeline', :feature, :js do expect(page).to have_content('No job trace') end end + + context 'without failures' do + before do + failed_build.update!(status: :success) + + visit pipeline_failures_page + end + + it 'displays the pipeline graph' do + expect(current_path).to eq(pipeline_path(pipeline)) + expect(page).not_to have_content('Failed Jobs') + expect(page).to have_selector('.pipeline-visualization') + end + end end end |