Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/tooling/danger/outdated_todo_spec.rb')
-rw-r--r--spec/tooling/danger/outdated_todo_spec.rb135
1 files changed, 72 insertions, 63 deletions
diff --git a/spec/tooling/danger/outdated_todo_spec.rb b/spec/tooling/danger/outdated_todo_spec.rb
index 3a3909c69ac..3079c26bafc 100644
--- a/spec/tooling/danger/outdated_todo_spec.rb
+++ b/spec/tooling/danger/outdated_todo_spec.rb
@@ -15,69 +15,78 @@ RSpec.describe Tooling::Danger::OutdatedTodo, feature_category: :tooling do
]
end
- subject(:plugin) { described_class.new(filenames, context: fake_danger, todos: todos) }
-
- context 'when the filenames are mentioned in single todo' do
- let(:filenames) { ['app/controllers/acme_challenges_controller.rb'] }
-
- it 'warns about mentions' do
- expect(fake_danger)
- .to receive(:warn)
- .with <<~MESSAGE
- `app/controllers/acme_challenges_controller.rb` was removed but is mentioned in:
- - `spec/fixtures/tooling/danger/rubocop_todo/cop1.yml:5`
- MESSAGE
-
- plugin.check
- end
- end
-
- context 'when the filenames are mentioned in multiple todos' do
- let(:filenames) do
- [
- 'app/controllers/application_controller.rb',
- 'app/controllers/acme_challenges_controller.rb'
- ]
- end
-
- it 'warns about mentions' do
- expect(fake_danger)
- .to receive(:warn)
- .with(<<~FIRSTMESSAGE)
- `app/controllers/application_controller.rb` was removed but is mentioned in:
- - `spec/fixtures/tooling/danger/rubocop_todo/cop1.yml:4`
- - `spec/fixtures/tooling/danger/rubocop_todo/cop2.yml:4`
- FIRSTMESSAGE
-
- expect(fake_danger)
- .to receive(:warn)
- .with(<<~SECONDMESSAGE)
- `app/controllers/acme_challenges_controller.rb` was removed but is mentioned in:
- - `spec/fixtures/tooling/danger/rubocop_todo/cop1.yml:5`
- SECONDMESSAGE
-
- plugin.check
- end
- end
-
- context 'when the filenames are not mentioned in todos' do
- let(:filenames) { ['any/inexisting/file.rb'] }
-
- it 'does not warn' do
- expect(fake_danger).not_to receive(:warn)
-
- plugin.check
- end
- end
-
- context 'when there is no todos' do
- let(:filenames) { ['app/controllers/acme_challenges_controller.rb'] }
- let(:todos) { [] }
-
- it 'does not warn' do
- expect(fake_danger).not_to receive(:warn)
-
- plugin.check
+ subject(:plugin) { described_class.new(filenames, context: fake_danger, todos: todos, allow_fail: allow_fail) }
+
+ [true, false].each do |allow_failure|
+ context "with allow_fail set to #{allow_failure}" do
+ let(:allow_fail) { allow_failure }
+ let(:expected_method) do
+ allow_failure ? :fail : :warn
+ end
+
+ context 'when the filenames are mentioned in single todo' do
+ let(:filenames) { ['app/controllers/acme_challenges_controller.rb'] }
+
+ it 'warns about mentions' do
+ expect(fake_danger)
+ .to receive(expected_method)
+ .with <<~MESSAGE
+ `app/controllers/acme_challenges_controller.rb` was removed but is mentioned in:
+ - `spec/fixtures/tooling/danger/rubocop_todo/cop1.yml:5`
+ MESSAGE
+
+ plugin.check
+ end
+ end
+
+ context 'when the filenames are mentioned in multiple todos' do
+ let(:filenames) do
+ [
+ 'app/controllers/application_controller.rb',
+ 'app/controllers/acme_challenges_controller.rb'
+ ]
+ end
+
+ it 'warns about mentions' do
+ expect(fake_danger)
+ .to receive(expected_method)
+ .with(<<~FIRSTMESSAGE)
+ `app/controllers/application_controller.rb` was removed but is mentioned in:
+ - `spec/fixtures/tooling/danger/rubocop_todo/cop1.yml:4`
+ - `spec/fixtures/tooling/danger/rubocop_todo/cop2.yml:4`
+ FIRSTMESSAGE
+
+ expect(fake_danger)
+ .to receive(expected_method)
+ .with(<<~SECONDMESSAGE)
+ `app/controllers/acme_challenges_controller.rb` was removed but is mentioned in:
+ - `spec/fixtures/tooling/danger/rubocop_todo/cop1.yml:5`
+ SECONDMESSAGE
+
+ plugin.check
+ end
+ end
+
+ context 'when the filenames are not mentioned in todos' do
+ let(:filenames) { ['any/inexisting/file.rb'] }
+
+ it 'does not warn' do
+ expect(fake_danger).not_to receive(expected_method)
+
+ plugin.check
+ end
+ end
+
+ context 'when there is no todos' do
+ let(:filenames) { ['app/controllers/acme_challenges_controller.rb'] }
+ let(:todos) { [] }
+
+ it 'does not warn' do
+ expect(fake_danger).not_to receive(expected_method)
+
+ plugin.check
+ end
+ end
end
end
end