summaryrefslogtreecommitdiff
path: root/tooling/lib/tooling/test_map_generator.rb
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-11-19 08:27:35 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-11-19 08:27:35 +0000
commit7e9c479f7de77702622631cff2628a9c8dcbc627 (patch)
treec8f718a08e110ad7e1894510980d2155a6549197 /tooling/lib/tooling/test_map_generator.rb
parente852b0ae16db4052c1c567d9efa4facc81146e88 (diff)
downloadgitlab-ce-13.6.0-rc42.tar.gz
Add latest changes from gitlab-org/gitlab@13-6-stable-eev13.6.0-rc42
Diffstat (limited to 'tooling/lib/tooling/test_map_generator.rb')
-rw-r--r--tooling/lib/tooling/test_map_generator.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/tooling/lib/tooling/test_map_generator.rb b/tooling/lib/tooling/test_map_generator.rb
new file mode 100644
index 00000000000..bd0415f6e67
--- /dev/null
+++ b/tooling/lib/tooling/test_map_generator.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+require 'set'
+require 'yaml'
+
+module Tooling
+ class TestMapGenerator
+ def initialize
+ @mapping = Hash.new { |h, k| h[k] = Set.new }
+ end
+
+ def parse(yaml_files)
+ Array(yaml_files).each do |yaml_file|
+ data = File.read(yaml_file)
+ _metadata, example_groups = data.split("---\n").reject(&:empty?).map { |yml| YAML.safe_load(yml, [Symbol]) }
+
+ example_groups.each do |example_id, files|
+ files.each do |file|
+ spec_file = strip_example_uid(example_id)
+ @mapping[file] << spec_file
+ end
+ end
+ end
+ end
+
+ def mapping
+ @mapping.transform_values { |set| set.to_a }
+ end
+
+ private
+
+ def strip_example_uid(example_id)
+ example_id.gsub(/\[.+\]/, '')
+ end
+ end
+end