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:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-06-24 15:09:24 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-06-24 15:09:24 +0300
commitd081e00aa79079792b040af3323883f1f43830c5 (patch)
tree54b5d43035030bf1eb44eee8a010ef3a21ebf97c /tooling
parentd6348d22dd0c78e11d56855cb5f1fb71be437901 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'tooling')
-rw-r--r--tooling/lib/tooling/test_file_finder.rb43
1 files changed, 29 insertions, 14 deletions
diff --git a/tooling/lib/tooling/test_file_finder.rb b/tooling/lib/tooling/test_file_finder.rb
index 4cf7ad35922..36ace67caa3 100644
--- a/tooling/lib/tooling/test_file_finder.rb
+++ b/tooling/lib/tooling/test_file_finder.rb
@@ -12,7 +12,7 @@ module Tooling
end
def test_files
- impacted_tests = ee_impact | non_ee_impact
+ impacted_tests = ee_impact | non_ee_impact | either_impact
impacted_tests.impact(@file)
end
@@ -23,20 +23,22 @@ module Tooling
class ImpactedTestFile
attr_reader :pattern_matchers
- def initialize
+ def initialize(prefix: nil)
@pattern_matchers = {}
+ @prefix = prefix
yield self if block_given?
end
def associate(pattern, &block)
- @pattern_matchers[pattern] = block
+ @pattern_matchers[%r{^#{@prefix}#{pattern}}] = block
end
def impact(file)
@pattern_matchers.each_with_object(Set.new) do |(pattern, block), result|
if (match = pattern.match(file))
- result << block.call(match)
+ test_files = block.call(match)
+ result.merge(Array(test_files))
end
end.to_a
end
@@ -54,24 +56,37 @@ module Tooling
end
def ee_impact
- ImpactedTestFile.new do |impact|
+ ImpactedTestFile.new(prefix: EE_PREFIX) do |impact|
unless foss_test_only
- impact.associate(%r{^#{EE_PREFIX}app/(.+)\.rb$}) { |match| "#{EE_PREFIX}spec/#{match[1]}_spec.rb" }
- impact.associate(%r{^#{EE_PREFIX}app/(.*/)ee/(.+)\.rb$}) { |match| "#{EE_PREFIX}spec/#{match[1]}#{match[2]}_spec.rb" }
- impact.associate(%r{^#{EE_PREFIX}lib/(.+)\.rb$}) { |match| "#{EE_PREFIX}spec/lib/#{match[1]}_spec.rb" }
- impact.associate(%r{^#{EE_PREFIX}spec/(.+)_spec.rb$}) { |match| match[0] }
+ impact.associate(%r{app/(.+)\.rb$}) { |match| "#{EE_PREFIX}spec/#{match[1]}_spec.rb" }
+ impact.associate(%r{app/(.*/)ee/(.+)\.rb$}) { |match| "#{EE_PREFIX}spec/#{match[1]}#{match[2]}_spec.rb" }
+ impact.associate(%r{lib/(.+)\.rb$}) { |match| "#{EE_PREFIX}spec/lib/#{match[1]}_spec.rb" }
end
- impact.associate(%r{^#{EE_PREFIX}(?!spec)(.*/)ee/(.+)\.rb$}) { |match| "spec/#{match[1]}#{match[2]}_spec.rb" }
- impact.associate(%r{^#{EE_PREFIX}spec/(.*/)ee/(.+)\.rb$}) { |match| "spec/#{match[1]}#{match[2]}.rb" }
+ impact.associate(%r{(?!spec)(.*/)ee/(.+)\.rb$}) { |match| "spec/#{match[1]}#{match[2]}_spec.rb" }
+ impact.associate(%r{spec/(.*/)ee/(.+)\.rb$}) { |match| "spec/#{match[1]}#{match[2]}.rb" }
end
end
def non_ee_impact
ImpactedTestFile.new do |impact|
- impact.associate(%r{^app/(.+)\.rb$}) { |match| "spec/#{match[1]}_spec.rb" }
- impact.associate(%r{^(tooling/)?lib/(.+)\.rb$}) { |match| "spec/#{match[1]}lib/#{match[2]}_spec.rb" }
- impact.associate(%r{^spec/(.+)_spec.rb$}) { |match| match[0] }
+ impact.associate(%r{app/(.+)\.rb$}) { |match| "spec/#{match[1]}_spec.rb" }
+ impact.associate(%r{(tooling/)?lib/(.+)\.rb$}) { |match| "spec/#{match[1]}lib/#{match[2]}_spec.rb" }
+ impact.associate(%r{config/initializers/(.+).rb$}) { |match| "spec/initializers/#{match[1]}_spec.rb" }
+ impact.associate('db/structure.sql') { 'spec/db/schema_spec.rb' }
+ impact.associate(%r{db/(?:post_)?migrate/([0-9]+)_(.+).rb$}) do |match|
+ [
+ "spec/migrations/#{match[2]}_spec.rb",
+ "spec/migrations/#{match[1]}_#{match[2]}_spec.rb"
+ ]
+ end
+ end
+ end
+
+ def either_impact
+ ImpactedTestFile.new(prefix: %r{^(#{EE_PREFIX})?}) do |impact|
+ impact.associate(%r{spec/(.+)_spec.rb$}) { |match| match[0] }
+ impact.associate(%r{spec/factories/.+\.rb$}) { 'spec/factories_spec.rb' }
end
end
end