summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2018-08-03 18:41:19 +0900
committerShinya Maeda <shinya@gitlab.com>2018-08-03 18:41:19 +0900
commit63b74d52057ded6740fc0167a359a099990463fb (patch)
tree31751b71e8d82351c48fd9f471b5cc1be63d14e7
parent06b8f47cf3b8ce65012fe905f6d3953ff175fa85 (diff)
downloadgitlab-ce-artifact-format-v2-with-parser-1.tar.gz
Remove change of comparing test reportsartifact-format-v2-with-parser-1
-rw-r--r--app/controllers/projects/merge_requests_controller.rb17
-rw-r--r--app/models/merge_request.rb35
-rw-r--r--app/serializers/merge_request_widget_entity.rb6
-rw-r--r--app/serializers/test_case_entity.rb7
-rw-r--r--app/serializers/test_reports_comparer_entity.rb11
-rw-r--r--app/serializers/test_reports_comparer_serializer.rb3
-rw-r--r--app/serializers/test_suite_comparer_entity.rb14
-rw-r--r--app/services/ci/compare_test_reports_service.rb24
-rw-r--r--changelogs/unreleased/artifact-format-v2-with-parser.yml5
-rw-r--r--config/routes/project.rb1
-rw-r--r--spec/controllers/projects/merge_requests_controller_spec.rb58
-rw-r--r--spec/factories/merge_requests.rb13
-rw-r--r--spec/fixtures/api/schemas/entities/merge_request_widget.json3
-rw-r--r--spec/fixtures/api/schemas/entities/test_case.json11
-rw-r--r--spec/fixtures/api/schemas/entities/test_reports_comparer.json13
-rw-r--r--spec/fixtures/api/schemas/entities/test_suite_comparer.json16
-rw-r--r--spec/models/merge_request_spec.rb100
-rw-r--r--spec/serializers/test_case_entity_spec.rb31
-rw-r--r--spec/serializers/test_reports_comparer_entity_spec.rb76
-rw-r--r--spec/serializers/test_reports_comparer_serializer_spec.rb62
-rw-r--r--spec/serializers/test_suite_comparer_entity_spec.rb86
-rw-r--r--spec/services/ci/compare_test_reports_service_spec.rb55
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