diff options
author | Shinya Maeda <shinya@gitlab.com> | 2018-08-03 12:41:19 +0300 |
---|---|---|
committer | Shinya Maeda <shinya@gitlab.com> | 2018-08-03 12:41:19 +0300 |
commit | 63b74d52057ded6740fc0167a359a099990463fb (patch) | |
tree | 31751b71e8d82351c48fd9f471b5cc1be63d14e7 | |
parent | 06b8f47cf3b8ce65012fe905f6d3953ff175fa85 (diff) |
Remove change of comparing test reportsartifact-format-v2-with-parser-1
22 files changed, 1 insertions, 646 deletions
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index eaf4434f913..dc6551fc761 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -99,23 +99,6 @@ class Projects::MergeRequestsController < Projects::MergeRequests::ApplicationCo } end - def test_reports - result = @merge_request.compare_test_reports - - Gitlab::PollingInterval.set_header(response, interval: 10_000) - - case result[:status] - when :parsing - render json: '', status: :no_content - when :parsed - render json: result[:data].to_json, status: :ok - when :error - render json: { status_reason: result[:status_reason] }, status: :bad_request - else - render json: { status_reason: 'Unknown error' }, status: :internal_server_error - end - end - def edit define_edit_vars end diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 6de44751f1b..06642c15585 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -13,11 +13,6 @@ class MergeRequest < ActiveRecord::Base include ThrottledTouch include Gitlab::Utils::StrongMemoize include LabelEventable - include ReactiveCaching - - self.reactive_cache_key = ->(model) { [model.project.id, model.iid] } - self.reactive_cache_refresh_interval = 1.hour - self.reactive_cache_lifetime = 1.hour ignore_column :locked_at, :ref_fetched, @@ -1017,30 +1012,6 @@ class MergeRequest < ActiveRecord::Base .order(id: :desc) end - def has_test_reports? - actual_head_pipeline&.has_test_reports? - end - - def compare_test_reports - unless has_test_reports? - return { status: :error, status_reason: 'This merge request does not have test reports' } - end - - with_reactive_cache( - :compare_test_results, - base_pipeline&.iid, - actual_head_pipeline.iid) { |data| data } || { status: :parsing } - end - - def calculate_reactive_cache(identifier, *args) - case identifier.to_sym - when :compare_test_results - Ci::CompareTestReportsService.new(project).execute(*args) - else - raise NotImplementedError, "Unknown identifier: #{identifier}" - end - end - def all_commits # MySQL doesn't support LIMIT in a subquery. diffs_relation = if Gitlab::Database.postgresql? @@ -1153,12 +1124,6 @@ class MergeRequest < ActiveRecord::Base true end - def base_pipeline - @base_pipeline ||= project.pipelines - .order(id: :desc) - .find_by(sha: diff_base_sha) - end - def discussions_rendered_on_frontend? true end diff --git a/app/serializers/merge_request_widget_entity.rb b/app/serializers/merge_request_widget_entity.rb index f55d448235a..63fd9d63ec4 100644 --- a/app/serializers/merge_request_widget_entity.rb +++ b/app/serializers/merge_request_widget_entity.rb @@ -231,12 +231,6 @@ class MergeRequestWidgetEntity < IssuableEntity end end - expose :test_reports_path do |merge_request| - if merge_request.has_test_reports? - test_reports_project_merge_request_path(merge_request.project, merge_request, format: :json) - end - end - private delegate :current_user, to: :request diff --git a/app/serializers/test_case_entity.rb b/app/serializers/test_case_entity.rb deleted file mode 100644 index 5c1cbf37182..00000000000 --- a/app/serializers/test_case_entity.rb +++ /dev/null @@ -1,7 +0,0 @@ -class TestCaseEntity < Grape::Entity - expose :status - expose :name - expose :execution_time - expose :system_output - expose :stack_trace -end diff --git a/app/serializers/test_reports_comparer_entity.rb b/app/serializers/test_reports_comparer_entity.rb deleted file mode 100644 index b95d820d093..00000000000 --- a/app/serializers/test_reports_comparer_entity.rb +++ /dev/null @@ -1,11 +0,0 @@ -class TestReportsComparerEntity < Grape::Entity - expose :total_status, as: :status - - expose :summary do - expose :total_count, as: :total - expose :resolved_count, as: :resolved - expose :failed_count, as: :failed - end - - expose :suite_comparers, as: :suites, using: TestSuiteComparerEntity -end diff --git a/app/serializers/test_reports_comparer_serializer.rb b/app/serializers/test_reports_comparer_serializer.rb deleted file mode 100644 index a739858efb2..00000000000 --- a/app/serializers/test_reports_comparer_serializer.rb +++ /dev/null @@ -1,3 +0,0 @@ -class TestReportsComparerSerializer < BaseSerializer - entity TestReportsComparerEntity -end diff --git a/app/serializers/test_suite_comparer_entity.rb b/app/serializers/test_suite_comparer_entity.rb deleted file mode 100644 index a3965ba3930..00000000000 --- a/app/serializers/test_suite_comparer_entity.rb +++ /dev/null @@ -1,14 +0,0 @@ -class TestSuiteComparerEntity < Grape::Entity - expose :name - expose :total_status, as: :status - - expose :summary do - expose :total_count, as: :total - expose :resolved_count, as: :resolved - expose :failed_count, as: :failed - end - - expose :new_failures, using: TestCaseEntity - expose :resolved_failures, using: TestCaseEntity - expose :existing_failures, using: TestCaseEntity -end diff --git a/app/services/ci/compare_test_reports_service.rb b/app/services/ci/compare_test_reports_service.rb deleted file mode 100644 index 7a112211d94..00000000000 --- a/app/services/ci/compare_test_reports_service.rb +++ /dev/null @@ -1,24 +0,0 @@ -# frozen_string_literal: true - -module Ci - class CompareTestReportsService < ::BaseService - def execute(base_pipeline_iid, head_pipeline_iid) - base_pipeline = project.pipelines.find_by_iid(base_pipeline_iid) if base_pipeline_iid - head_pipeline = project.pipelines.find_by_iid(head_pipeline_iid) - - begin - comparer = Gitlab::Ci::Reports::TestReportsComparer - .new(base_pipeline&.test_reports, head_pipeline.test_reports) - - { - status: :parsed, - data: TestReportsComparerSerializer - .new(project: project) - .represent(comparer).as_json - } - rescue => e - { status: :error, status_reason: e.message } - end - end - end -end diff --git a/changelogs/unreleased/artifact-format-v2-with-parser.yml b/changelogs/unreleased/artifact-format-v2-with-parser.yml deleted file mode 100644 index e1a779cf6dd..00000000000 --- a/changelogs/unreleased/artifact-format-v2-with-parser.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: JUnit XML Test Summary In MR widget -merge_request: 20576 -author: -type: added diff --git a/config/routes/project.rb b/config/routes/project.rb index 0220e88c819..8e019f8c8bb 100644 --- a/config/routes/project.rb +++ b/config/routes/project.rb @@ -109,7 +109,6 @@ constraints(::Constraints::ProjectUrlConstrainer.new) do post :assign_related_issues get :discussions, format: :json post :rebase - get :test_reports scope constraints: { format: nil }, action: :show do get :commits, defaults: { tab: 'commits' } diff --git a/spec/controllers/projects/merge_requests_controller_spec.rb b/spec/controllers/projects/merge_requests_controller_spec.rb index 375018e2229..1692f299552 100644 --- a/spec/controllers/projects/merge_requests_controller_spec.rb +++ b/spec/controllers/projects/merge_requests_controller_spec.rb @@ -580,64 +580,6 @@ describe Projects::MergeRequestsController do end end - describe 'GET test_reports' do - subject do - get :test_reports, - namespace_id: project.namespace.to_param, - project_id: project, - id: merge_request.iid, - format: :json - end - - before do - allow_any_instance_of(MergeRequest) - .to receive(:compare_test_reports).and_return(comparison_status) - end - - context 'when comparison is being processed' do - let(:comparison_status) { { status: :parsing } } - - it 'returns 204 HTTP status' do - subject - - expect(response).to have_gitlab_http_status(:no_content) - end - end - - context 'when comparison is done' do - let(:comparison_status) { { status: :parsed, data: { summary: 1 } } } - - it 'returns 200 HTTP status' do - subject - - expect(response).to have_gitlab_http_status(:ok) - expect(json_response).to eq({ 'summary' => 1 }) - end - end - - context 'when user created corrupted test reports' do - let(:comparison_status) { { status: :error, status_reason: 'Failed to parse test reports' } } - - it 'returns 400 HTTP status' do - subject - - expect(response).to have_gitlab_http_status(:bad_request) - expect(json_response).to eq({ 'status_reason' => 'Failed to parse test reports' }) - end - end - - context 'when something went wrong on our system' do - let(:comparison_status) { {} } - - it 'returns 500 HTTP status' do - subject - - expect(response).to have_gitlab_http_status(:internal_server_error) - expect(json_response).to eq({ 'status_reason' => 'Unknown error' }) - end - end - end - describe 'POST remove_wip' do before do merge_request.title = merge_request.wip_title diff --git a/spec/factories/merge_requests.rb b/spec/factories/merge_requests.rb index 4c36ec8ec58..f722bb9cb0d 100644 --- a/spec/factories/merge_requests.rb +++ b/spec/factories/merge_requests.rb @@ -89,19 +89,6 @@ FactoryBot.define do end end - trait :with_test_reports do - after(:create) do |merge_request| - create(:ci_pipeline, - :success, - :test_reports, - project: merge_request.source_project, - ref: merge_request.source_branch, - sha: merge_request.diff_head_sha).tap do |pipeline| - merge_request.update!(head_pipeline_id: pipeline.id) - end - end - end - after(:build) do |merge_request| target_project = merge_request.target_project source_project = merge_request.source_project diff --git a/spec/fixtures/api/schemas/entities/merge_request_widget.json b/spec/fixtures/api/schemas/entities/merge_request_widget.json index c40977bc4ee..a2ac4d238c7 100644 --- a/spec/fixtures/api/schemas/entities/merge_request_widget.json +++ b/spec/fixtures/api/schemas/entities/merge_request_widget.json @@ -117,8 +117,7 @@ "rebase_in_progress": { "type": "boolean" }, "can_push_to_source_branch": { "type": "boolean" }, "rebase_path": { "type": ["string", "null"] }, - "squash": { "type": "boolean" }, - "test_reports_path": { "type": ["string", "null"] } + "squash": { "type": "boolean" } }, "additionalProperties": false } diff --git a/spec/fixtures/api/schemas/entities/test_case.json b/spec/fixtures/api/schemas/entities/test_case.json deleted file mode 100644 index 9b08d6c2302..00000000000 --- a/spec/fixtures/api/schemas/entities/test_case.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "type": "object", - "properties": { - "status": { "type": "string" }, - "name": { "type": "string" }, - "execution_time": { "type": "float" }, - "system_output": { "type": ["string", "null"] }, - "stack_trace": { "type": ["string", "null"] } - }, - "additionalProperties": false -} diff --git a/spec/fixtures/api/schemas/entities/test_reports_comparer.json b/spec/fixtures/api/schemas/entities/test_reports_comparer.json deleted file mode 100644 index a7cd934069a..00000000000 --- a/spec/fixtures/api/schemas/entities/test_reports_comparer.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "object", - "properties": { - "status": { "type": "string" }, - "summary": { - "total": { "type": "integer" }, - "resolved": { "type": "integer" }, - "failed": { "type": "integer" } - }, - "suites": { "type": "array", "items": { "$ref": "test_suite_comparer.json" } } - }, - "additionalProperties": false -} diff --git a/spec/fixtures/api/schemas/entities/test_suite_comparer.json b/spec/fixtures/api/schemas/entities/test_suite_comparer.json deleted file mode 100644 index 192a8f3fd71..00000000000 --- a/spec/fixtures/api/schemas/entities/test_suite_comparer.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "object", - "properties": { - "name": { "type": "string" }, - "status": { "type": "string" }, - "summary": { - "total": { "type": "integer" }, - "resolved": { "type": "integer" }, - "failed": { "type": "integer" } - }, - "new_failures": { "type": "array", "items": { "$ref": "test_case.json" } }, - "resolved_failures": { "type": "array", "items": { "$ref": "test_case.json" } }, - "existing_failures": { "type": "array", "items": { "$ref": "test_case.json" } } - }, - "additionalProperties": false -} diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index d28250dbab7..b0d9d03bf6c 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -3,7 +3,6 @@ require 'spec_helper' describe MergeRequest do include RepoHelpers include ProjectForksHelper - include ReactiveCachingHelpers subject { create(:merge_request) } @@ -1080,85 +1079,6 @@ describe MergeRequest do end end - describe '#has_test_reports?' do - subject { merge_request.has_test_reports? } - - let(:project) { create(:project, :repository) } - - context 'when head pipeline has test reports' do - let(:merge_request) { create(:merge_request, :with_test_reports, source_project: project) } - - it { is_expected.to be_truthy } - end - - context 'when head pipeline does not have test reports' do - let(:merge_request) { create(:merge_request, source_project: project) } - - it { is_expected.to be_falsey } - end - end - - describe '#compare_test_reports' do - subject { merge_request.compare_test_reports } - - let(:project) { create(:project, :repository) } - let(:merge_request) { create(:merge_request, source_project: project) } - - let!(:base_pipeline) do - create(:ci_pipeline, - :success, - project: merge_request.source_project, - ref: merge_request.source_branch, - sha: merge_request.diff_base_sha).tap do |pipeline| - merge_request.update!(head_pipeline_id: pipeline.id) - create(:ci_build, name: 'rspec', pipeline: pipeline, project: project) - end - end - - let!(:head_pipeline) do - create(:ci_pipeline, - :success, - project: merge_request.source_project, - ref: merge_request.source_branch, - sha: merge_request.diff_head_sha).tap do |pipeline| - merge_request.update!(head_pipeline_id: pipeline.id) - create(:ci_build, name: 'rspec', pipeline: pipeline, project: project) - end - end - - context 'when head pipeline has test reports' do - before do - create(:ci_job_artifact, :junit, job: head_pipeline.builds.first, project: project) - end - - context 'when reactive cache worker is parsing asynchronously' do - it 'returns status' do - expect(subject[:status]).to eq(:parsing) - end - end - - context 'when reactive cache worker is inline' do - before do - synchronous_reactive_cache(merge_request) - end - - it 'returns status and data' do - expect_any_instance_of(Ci::CompareTestReportsService) - .to receive(:execute).with(base_pipeline.iid, head_pipeline.iid) - - subject - end - end - end - - context 'when head pipeline does not have test reports' do - it 'returns status and error message' do - expect(subject[:status]).to eq(:error) - expect(subject[:status_reason]).to eq('This merge request does not have test reports') - end - end - end - describe '#all_commit_shas' do context 'when merge request is persisted' do let(:all_commit_shas) do @@ -2090,26 +2010,6 @@ describe MergeRequest do end end - describe '#base_pipeline' do - let(:pipeline_arguments) do - { - project: project, - ref: merge_request.target_branch, - sha: merge_request.diff_base_sha - } - end - - let(:project) { create(:project, :public, :repository) } - let(:merge_request) { create(:merge_request, source_project: project) } - - let!(:first_pipeline) { create(:ci_pipeline_without_jobs, pipeline_arguments) } - let!(:last_pipeline) { create(:ci_pipeline_without_jobs, pipeline_arguments) } - - it 'returns latest pipeline' do - expect(merge_request.base_pipeline).to eq(last_pipeline) - end - end - describe '#has_commits?' do before do allow(subject.merge_request_diff).to receive(:commits_count) diff --git a/spec/serializers/test_case_entity_spec.rb b/spec/serializers/test_case_entity_spec.rb deleted file mode 100644 index a55910f98bb..00000000000 --- a/spec/serializers/test_case_entity_spec.rb +++ /dev/null @@ -1,31 +0,0 @@ -require 'spec_helper' - -describe TestCaseEntity do - include TestReportsHelper - - let(:entity) { described_class.new(test_case) } - - describe '#as_json' do - subject { entity.as_json } - - context 'when test case is success' do - let(:test_case) { create_test_case_rspec_success } - - it 'contains correct test case details' do - expect(subject[:status]).to eq('success') - expect(subject[:name]).to eq('Test#sum when a is 1 and b is 3 returns summary') - expect(subject[:execution_time]).to eq(1.11) - end - end - - context 'when test case is failed' do - let(:test_case) { create_test_case_rspec_failed } - - it 'contains correct test case details' do - expect(subject[:status]).to eq('failed') - expect(subject[:name]).to eq('Test#sum when a is 2 and b is 2 returns summary') - expect(subject[:execution_time]).to eq(2.22) - end - end - end -end diff --git a/spec/serializers/test_reports_comparer_entity_spec.rb b/spec/serializers/test_reports_comparer_entity_spec.rb deleted file mode 100644 index 59c058fe368..00000000000 --- a/spec/serializers/test_reports_comparer_entity_spec.rb +++ /dev/null @@ -1,76 +0,0 @@ -require 'spec_helper' - -describe TestReportsComparerEntity do - include TestReportsHelper - - let(:entity) { described_class.new(comparer) } - let(:comparer) { Gitlab::Ci::Reports::TestReportsComparer.new(base_reports, head_reports) } - let(:base_reports) { Gitlab::Ci::Reports::TestReports.new } - let(:head_reports) { Gitlab::Ci::Reports::TestReports.new } - - describe '#as_json' do - subject { entity.as_json } - - context 'when head and base reports include two test suites' do - context 'when the status of head report is success' do - before do - base_reports.get_suite('rspec').add_test_case(create_test_case_rspec_success) - base_reports.get_suite('junit').add_test_case(create_test_case_java_success) - head_reports.get_suite('rspec').add_test_case(create_test_case_rspec_success) - head_reports.get_suite('junit').add_test_case(create_test_case_java_success) - end - - it 'contains correct compared test reports details' do - expect(subject[:status]).to eq('success') - expect(subject[:summary]).to include(total: 2, resolved: 0, failed: 0) - expect(subject[:suites].first[:name]).to eq('rspec') - expect(subject[:suites].first[:status]).to eq('success') - expect(subject[:suites].second[:name]).to eq('junit') - expect(subject[:suites].second[:status]).to eq('success') - end - end - - context 'when the status of head report is failed' do - before do - base_reports.get_suite('rspec').add_test_case(create_test_case_rspec_success) - base_reports.get_suite('junit').add_test_case(create_test_case_java_success) - head_reports.get_suite('rspec').add_test_case(create_test_case_rspec_success) - head_reports.get_suite('junit').add_test_case(create_test_case_java_failed) - end - - it 'contains correct compared test reports details' do - expect(subject[:status]).to eq('failed') - expect(subject[:summary]).to include(total: 2, resolved: 0, failed: 1) - expect(subject[:suites].first[:name]).to eq('rspec') - expect(subject[:suites].first[:status]).to eq('success') - expect(subject[:suites].second[:name]).to eq('junit') - expect(subject[:suites].second[:status]).to eq('failed') - end - end - - context 'when the status of head report is resolved' do - before do - base_reports.get_suite('rspec').add_test_case(create_test_case_rspec_success) - base_reports.get_suite('junit').add_test_case(create_test_case_java_failed) - head_reports.get_suite('rspec').add_test_case(create_test_case_rspec_success) - head_reports.get_suite('junit').add_test_case(create_test_case_java_resolved) - end - - let(:create_test_case_java_resolved) do - create_test_case_java_failed.tap do |test_case| - test_case.instance_variable_set("@status", Gitlab::Ci::Reports::TestCase::STATUS_SUCCESS) - end - end - - it 'contains correct compared test reports details' do - expect(subject[:status]).to eq('success') - expect(subject[:summary]).to include(total: 2, resolved: 1, failed: 0) - expect(subject[:suites].first[:name]).to eq('rspec') - expect(subject[:suites].first[:status]).to eq('success') - expect(subject[:suites].second[:name]).to eq('junit') - expect(subject[:suites].second[:status]).to eq('success') - end - end - end - end -end diff --git a/spec/serializers/test_reports_comparer_serializer_spec.rb b/spec/serializers/test_reports_comparer_serializer_spec.rb deleted file mode 100644 index 9ea86c0dd83..00000000000 --- a/spec/serializers/test_reports_comparer_serializer_spec.rb +++ /dev/null @@ -1,62 +0,0 @@ -require 'spec_helper' - -describe TestReportsComparerSerializer do - include TestReportsHelper - - let(:project) { double(:project) } - let(:serializer) { described_class.new(project: project).represent(comparer) } - let(:comparer) { Gitlab::Ci::Reports::TestReportsComparer.new(base_reports, head_reports) } - let(:base_reports) { Gitlab::Ci::Reports::TestReports.new } - let(:head_reports) { Gitlab::Ci::Reports::TestReports.new } - - describe '#to_json' do - subject { serializer.to_json } - - context 'when head and base reports include two test suites' do - context 'when the status of head report is success' do - before do - base_reports.get_suite('rspec').add_test_case(create_test_case_rspec_success) - base_reports.get_suite('junit').add_test_case(create_test_case_java_success) - head_reports.get_suite('rspec').add_test_case(create_test_case_rspec_success) - head_reports.get_suite('junit').add_test_case(create_test_case_java_success) - end - - it 'matches the schema' do - expect(subject).to match_schema('entities/test_reports_comparer') - end - end - - context 'when the status of head report is failed' do - before do - base_reports.get_suite('rspec').add_test_case(create_test_case_rspec_success) - base_reports.get_suite('junit').add_test_case(create_test_case_java_success) - head_reports.get_suite('rspec').add_test_case(create_test_case_rspec_success) - head_reports.get_suite('junit').add_test_case(create_test_case_java_failed) - end - - it 'matches the schema' do - expect(subject).to match_schema('entities/test_reports_comparer') - end - end - - context 'when the status of head report is resolved' do - before do - base_reports.get_suite('rspec').add_test_case(create_test_case_rspec_success) - base_reports.get_suite('junit').add_test_case(create_test_case_java_failed) - head_reports.get_suite('rspec').add_test_case(create_test_case_rspec_success) - head_reports.get_suite('junit').add_test_case(create_test_case_java_resolved) - end - - let(:create_test_case_java_resolved) do - create_test_case_java_failed.tap do |test_case| - test_case.instance_variable_set("@status", Gitlab::Ci::Reports::TestCase::STATUS_SUCCESS) - end - end - - it 'matches the schema' do - expect(subject).to match_schema('entities/test_reports_comparer') - end - end - end - end -end diff --git a/spec/serializers/test_suite_comparer_entity_spec.rb b/spec/serializers/test_suite_comparer_entity_spec.rb deleted file mode 100644 index f61331f53a0..00000000000 --- a/spec/serializers/test_suite_comparer_entity_spec.rb +++ /dev/null @@ -1,86 +0,0 @@ -require 'spec_helper' - -describe TestSuiteComparerEntity do - include TestReportsHelper - - let(:entity) { described_class.new(comparer) } - let(:comparer) { Gitlab::Ci::Reports::TestSuiteComparer.new(name, base_suite, head_suite) } - let(:name) { 'rpsec' } - let(:base_suite) { Gitlab::Ci::Reports::TestSuite.new(name) } - let(:head_suite) { Gitlab::Ci::Reports::TestSuite.new(name) } - let(:test_case_success) { create_test_case_rspec_success } - let(:test_case_failed) { create_test_case_rspec_failed } - - let(:test_case_resolved) do - create_test_case_rspec_failed.tap do |test_case| - test_case.instance_variable_set("@status", Gitlab::Ci::Reports::TestCase::STATUS_SUCCESS) - end - end - - describe '#as_json' do - subject { entity.as_json } - - context 'when head sutie has a newly failed test case which does not exist in base' do - before do - base_suite.add_test_case(test_case_success) - head_suite.add_test_case(test_case_failed) - end - - it 'contains correct compared test suite details' do - expect(subject[:name]).to eq(name) - expect(subject[:status]).to eq('failed') - expect(subject[:summary]).to include(total: 1, resolved: 0, failed: 1) - subject[:new_failures].first.tap do |new_failure| - expect(new_failure[:status]).to eq(test_case_failed.status) - expect(new_failure[:name]).to eq(test_case_failed.name) - expect(new_failure[:execution_time]).to eq(test_case_failed.execution_time) - expect(new_failure[:system_output]).to eq(test_case_failed.system_output) - end - expect(subject[:resolved_failures]).to be_empty - expect(subject[:existing_failures]).to be_empty - end - end - - context 'when head sutie still has a failed test case which failed in base' do - before do - base_suite.add_test_case(test_case_failed) - head_suite.add_test_case(test_case_failed) - end - - it 'contains correct compared test suite details' do - expect(subject[:name]).to eq(name) - expect(subject[:status]).to eq('failed') - expect(subject[:summary]).to include(total: 1, resolved: 0, failed: 1) - expect(subject[:new_failures]).to be_empty - expect(subject[:resolved_failures]).to be_empty - subject[:existing_failures].first.tap do |existing_failure| - expect(existing_failure[:status]).to eq(test_case_failed.status) - expect(existing_failure[:name]).to eq(test_case_failed.name) - expect(existing_failure[:execution_time]).to eq(test_case_failed.execution_time) - expect(existing_failure[:system_output]).to eq(test_case_failed.system_output) - end - end - end - - context 'when head sutie has a success test case which failed in base' do - before do - base_suite.add_test_case(test_case_failed) - head_suite.add_test_case(test_case_resolved) - end - - it 'contains correct compared test suite details' do - expect(subject[:name]).to eq(name) - expect(subject[:status]).to eq('success') - expect(subject[:summary]).to include(total: 1, resolved: 1, failed: 0) - expect(subject[:new_failures]).to be_empty - subject[:resolved_failures].first.tap do |resolved_failure| - expect(resolved_failure[:status]).to eq(test_case_resolved.status) - expect(resolved_failure[:name]).to eq(test_case_resolved.name) - expect(resolved_failure[:execution_time]).to eq(test_case_resolved.execution_time) - expect(resolved_failure[:system_output]).to eq(test_case_resolved.system_output) - end - expect(subject[:existing_failures]).to be_empty - end - end - end -end diff --git a/spec/services/ci/compare_test_reports_service_spec.rb b/spec/services/ci/compare_test_reports_service_spec.rb deleted file mode 100644 index 6278774f446..00000000000 --- a/spec/services/ci/compare_test_reports_service_spec.rb +++ /dev/null @@ -1,55 +0,0 @@ -require 'spec_helper' - -describe Ci::CompareTestReportsService do - let(:service) { described_class.new(project) } - let(:project) { create(:project, :repository) } - let(:merge_request) { create(:merge_request, source_project: project) } - - describe '#execute' do - subject { service.execute(base_pipeline.iid, head_pipeline.iid) } - - let!(:base_pipeline) do - create(:ci_pipeline, - :success, - project: merge_request.source_project, - ref: merge_request.source_branch, - sha: merge_request.diff_base_sha).tap do |pipeline| - merge_request.update!(head_pipeline_id: pipeline.id) - create(:ci_build, name: 'rspec', pipeline: pipeline, project: project) - end - end - - let!(:head_pipeline) do - create(:ci_pipeline, - :success, - project: merge_request.source_project, - ref: merge_request.source_branch, - sha: merge_request.diff_head_sha).tap do |pipeline| - merge_request.update!(head_pipeline_id: pipeline.id) - create(:ci_build, name: 'rspec', pipeline: pipeline, project: project) - end - end - - context 'when head pipeline has test reports' do - before do - create(:ci_job_artifact, :junit, job: head_pipeline.builds.first, project: project) - end - - it 'returns status and data' do - expect(subject[:status]).to eq(:parsed) - expect(subject[:data]).to match_schema('entities/test_reports_comparer') - end - end - - context 'when head pipeline has corrupted test reports' do - before do - create(:ci_job_artifact, :junit_with_corrupted_data, job: head_pipeline.builds.first, project: project) - end - - it 'returns status and error message' do - expect(subject[:status]).to eq(:error) - expect(subject[:status_reason]).to eq('Failed to parse XML') - end - end - end -end |