test_file_finder 0.1.1 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitlab-ci.yml +10 -0
- data/.gitlab/merge_request_templates/Release.md +35 -0
- data/Gemfile.lock +16 -2
- data/README.md +19 -0
- data/docs/release_process.md +34 -0
- data/exe/tff +3 -0
- data/fixtures/test_reports.json +194 -0
- data/lib/test_file_finder.rb +1 -0
- data/lib/test_file_finder/mapping_strategies.rb +1 -0
- data/lib/test_file_finder/mapping_strategies/gitlab_merge_request_rspec_failure.rb +78 -0
- data/lib/test_file_finder/option_parser.rb +9 -1
- data/lib/test_file_finder/version.rb +1 -1
- data/test_file_finder.gemspec +4 -1
- metadata +43 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 395e0c675e1c2f892395a6706c5c0505f8bf53a28416b3d60f424613b6eaefd1
|
4
|
+
data.tar.gz: 7d574bfda0a48abce40083fbaed0ab007e56ea051bcb1a056dfee1ef6dc2f052
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f15af7348a90fd1f3eb13b48359f57db714e7f4badce355544b35fe1a261fe7881555f6852415fdcdc4544f49341efb8ffac968675c36a355530a6d4c86cb20f
|
7
|
+
data.tar.gz: 2e7592eb12c547e5346362cdef16e3356d75b2cee3156390e720c55a0c45428b4a8f004dfe4750c9429b89d6fef9ca2b2a134d27493c3d3e15104b049586d0e6
|
data/.gitlab-ci.yml
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
image: ruby:2.7.2
|
2
|
+
|
3
|
+
stages:
|
4
|
+
- test
|
5
|
+
- deploy
|
6
|
+
|
1
7
|
rspec:
|
2
8
|
script: bundle; bundle exec rspec
|
3
9
|
rules:
|
@@ -7,3 +13,7 @@ check-executable:
|
|
7
13
|
script: bundle; bundle exec rspec feature
|
8
14
|
rules:
|
9
15
|
- if: $CI
|
16
|
+
|
17
|
+
include:
|
18
|
+
- project: 'gitlab-org/quality/pipeline-common'
|
19
|
+
file: '/ci/gem-release.yml'
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<!-- Replace `v4.5.0` with the previous release here, and `e18d76b309e42888759c1effe96767f13e34ae55`
|
2
|
+
with the latest commit from https://gitlab.com/gitlab-org/ci-cd/test_file_finder/commits/master that will be included in the release. -->
|
3
|
+
- Diff: https://gitlab.com/gitlab-org/ci-cd/test_file_finder/compare/v4.5.0...e18d76b309e42888759c1effe96767f13e34ae55
|
4
|
+
|
5
|
+
- Release notes:
|
6
|
+
|
7
|
+
<!-- Keep the sections order but remove the empty sections -->
|
8
|
+
|
9
|
+
```markdown
|
10
|
+
### New features and features updates
|
11
|
+
|
12
|
+
- !aaa <Title of the aaa MR>.
|
13
|
+
|
14
|
+
### Fixes
|
15
|
+
|
16
|
+
- !bbb <Title of the bbb MR>.
|
17
|
+
|
18
|
+
### Doc changes
|
19
|
+
|
20
|
+
- !ccc <Title of the ccc MR>.
|
21
|
+
|
22
|
+
### Other changes (tooling, technical debt)
|
23
|
+
|
24
|
+
- !ddd <Title of the ddd MR>.
|
25
|
+
```
|
26
|
+
|
27
|
+
- Checklist before merging:
|
28
|
+
- [ ] Diff link is up-to-date.
|
29
|
+
- [ ] Based on the diff, `lib/test_file_finder/version.rb` is updated, according to [SemVer](https://semver.org).
|
30
|
+
- [ ] Release notes are accurate.
|
31
|
+
|
32
|
+
- Checklist after merging:
|
33
|
+
- [ ] [Update the release notes for the newly created tag](docs/release_process.md#how-to).
|
34
|
+
|
35
|
+
/label ~tooling ~"tooling::workflow"
|
data/Gemfile.lock
CHANGED
@@ -1,13 +1,22 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
test_file_finder (0.1.
|
4
|
+
test_file_finder (0.1.3)
|
5
|
+
faraday (~> 1.0.1)
|
5
6
|
|
6
7
|
GEM
|
7
8
|
remote: https://rubygems.org/
|
8
9
|
specs:
|
10
|
+
addressable (2.7.0)
|
11
|
+
public_suffix (>= 2.0.2, < 5.0)
|
9
12
|
byebug (11.1.3)
|
13
|
+
crack (0.4.4)
|
10
14
|
diff-lcs (1.3)
|
15
|
+
faraday (1.0.1)
|
16
|
+
multipart-post (>= 1.2, < 3)
|
17
|
+
hashdiff (1.0.1)
|
18
|
+
multipart-post (2.1.1)
|
19
|
+
public_suffix (4.0.6)
|
11
20
|
rake (10.5.0)
|
12
21
|
rspec (3.9.0)
|
13
22
|
rspec-core (~> 3.9.0)
|
@@ -22,6 +31,10 @@ GEM
|
|
22
31
|
diff-lcs (>= 1.2.0, < 2.0)
|
23
32
|
rspec-support (~> 3.9.0)
|
24
33
|
rspec-support (3.9.3)
|
34
|
+
webmock (3.12.1)
|
35
|
+
addressable (>= 2.3.6)
|
36
|
+
crack (>= 0.3.2)
|
37
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
25
38
|
|
26
39
|
PLATFORMS
|
27
40
|
ruby
|
@@ -32,6 +45,7 @@ DEPENDENCIES
|
|
32
45
|
rake (~> 10.0)
|
33
46
|
rspec (~> 3.0)
|
34
47
|
test_file_finder!
|
48
|
+
webmock (~> 3.12)
|
35
49
|
|
36
50
|
BUNDLED WITH
|
37
|
-
1.
|
51
|
+
2.1.4
|
data/README.md
CHANGED
@@ -119,6 +119,25 @@ tff.test_files
|
|
119
119
|
|
120
120
|
An example mapping file is available in `fixtures/mapping.json`.
|
121
121
|
|
122
|
+
##### `--project-path project_path` and `--merge-request-iid merge_request_iid`
|
123
|
+
|
124
|
+
`TestFileFinder` can be used with both GitLab project path and merge request IID to get the test files that failed in the project merge request.
|
125
|
+
|
126
|
+
Command line example:
|
127
|
+
|
128
|
+
```bash
|
129
|
+
$ tff --project-path project/path --merge-request-iid 123
|
130
|
+
spec/models/widget_spec.rb
|
131
|
+
```
|
132
|
+
|
133
|
+
Ruby example:
|
134
|
+
|
135
|
+
```ruby
|
136
|
+
tff = TestFileFinder::FileFinder.new(paths: file_paths)
|
137
|
+
tff.use TestFileFinder::MappingStrategies::GitlabMergeRequestRspecFailure.new(project_path: 'project/path', merge_request_iid: 123)
|
138
|
+
tff.test_files
|
139
|
+
```
|
140
|
+
|
122
141
|
## Development
|
123
142
|
|
124
143
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# Release Process
|
2
|
+
|
3
|
+
## Versioning
|
4
|
+
|
5
|
+
We follow [Semantic Versioning](https://semver.org). In short, this means that the new version should reflect the types of changes that are about to be released.
|
6
|
+
|
7
|
+
*summary from semver.org*
|
8
|
+
|
9
|
+
MAJOR.MINOR.PATCH
|
10
|
+
|
11
|
+
- MAJOR version when you make incompatible API changes,
|
12
|
+
- MINOR version when you add functionality in a backwards compatible manner, and
|
13
|
+
- PATCH version when you make backwards compatible bug fixes.
|
14
|
+
|
15
|
+
## When we release
|
16
|
+
|
17
|
+
We release `gitlab-triage` on an ad-hoc basis. There is no regularity to when we release, we just release
|
18
|
+
when we make a change - no matter the size of the change.
|
19
|
+
|
20
|
+
## How-to
|
21
|
+
|
22
|
+
- Check if there is an [open merge request to bump the version](https://gitlab.com/gitlab-org/ci-cd/test_file_finder/merge_requests?scope=all&utf8=%E2%9C%93&state=opened&search=bump+version) (to avoid creating a duplicate).
|
23
|
+
- If there is one, update it if necessary.
|
24
|
+
- If not, update [`lib/test_file_finder/version.rb`] to an appropriate [semantic version](https://semver.org) in a new merge request using the [release template](https://gitlab.com/gitlab-org/ci-cd/test_file_finder/blob/master/.gitlab/merge_request_templates/Release.md)
|
25
|
+
and title the MR like `"Bump version to <version>"`.
|
26
|
+
- Merge the merge request.
|
27
|
+
- The new version should automatically be tagged and pushed to Rubygems by the `release` job in the merge commit pipeline.
|
28
|
+
- Update the release notes for the newly created tag (https://gitlab.com/gitlab-org/ci-cd/test_file_finder/-/tags):
|
29
|
+
* **Release notes**: Copy the release notes from the merge request.
|
30
|
+
|
31
|
+
Note: The `bundle exec release` command uses the `GEM_HOST_API_KEY` environment variable to authenticate against the
|
32
|
+
`rubygems.org`.
|
33
|
+
|
34
|
+
[`lib/test_file_finder/version.rb`]: https://gitlab.com/gitlab-org/ci-cd/test_file_finder/blob/master/lib/test_file_finder/version.rb#L2
|
data/exe/tff
CHANGED
@@ -10,6 +10,9 @@ TestFileFinder::FileFinder.new(paths: ARGV).tap do |file_finder|
|
|
10
10
|
if options.mapping_file
|
11
11
|
file_finder.use TestFileFinder::MappingStrategies::PatternMatching.load(options.mapping_file)
|
12
12
|
end
|
13
|
+
if options.project_path && options.merge_request_iid
|
14
|
+
file_finder.use TestFileFinder::MappingStrategies::GitlabMergeRequestRspecFailure.new(project_path: options.project_path, merge_request_iid: options.merge_request_iid)
|
15
|
+
end
|
13
16
|
|
14
17
|
if file_finder.strategies.empty?
|
15
18
|
file_finder.use TestFileFinder::MappingStrategies::PatternMatching.default_rails_mapping
|
@@ -0,0 +1,194 @@
|
|
1
|
+
{
|
2
|
+
"status": "failed",
|
3
|
+
"summary": {
|
4
|
+
"total": 262819,
|
5
|
+
"resolved": 0,
|
6
|
+
"failed": 1,
|
7
|
+
"errored": 0
|
8
|
+
},
|
9
|
+
"suites": [
|
10
|
+
{
|
11
|
+
"name": "jest",
|
12
|
+
"status": "success",
|
13
|
+
"summary": {
|
14
|
+
"total": 27913,
|
15
|
+
"resolved": 0,
|
16
|
+
"failed": 0,
|
17
|
+
"errored": 0
|
18
|
+
},
|
19
|
+
"new_failures": [
|
20
|
+
{
|
21
|
+
"status": "failed",
|
22
|
+
"name": "javascript test",
|
23
|
+
"classname": "javascript.test",
|
24
|
+
"file": "./spec/frontend/javascript_spec.js",
|
25
|
+
"execution_time": 0.1,
|
26
|
+
"system_output": "Test failure",
|
27
|
+
"stack_trace": null,
|
28
|
+
"recent_failures": {
|
29
|
+
"count": 1,
|
30
|
+
"base_branch": "master"
|
31
|
+
}
|
32
|
+
}
|
33
|
+
],
|
34
|
+
"existing_failures": [],
|
35
|
+
"resolved_failures": [],
|
36
|
+
"new_errors": [],
|
37
|
+
"existing_errors": [],
|
38
|
+
"resolved_errors": [],
|
39
|
+
"suite_errors": null
|
40
|
+
},
|
41
|
+
{
|
42
|
+
"name": "rspec unit pg11",
|
43
|
+
"status": "success",
|
44
|
+
"summary": {
|
45
|
+
"total": 70649,
|
46
|
+
"resolved": 0,
|
47
|
+
"failed": 0,
|
48
|
+
"errored": 0
|
49
|
+
},
|
50
|
+
"new_failures": [
|
51
|
+
{
|
52
|
+
"status": "failed",
|
53
|
+
"name": "rspec unit pg 11 test",
|
54
|
+
"classname": "rspec.unit.pg.11.test",
|
55
|
+
"file": "./spec/app/rspec_unit_pg11_spec.rb",
|
56
|
+
"execution_time": 0.534931,
|
57
|
+
"system_output": "Failure/Error",
|
58
|
+
"stack_trace": null,
|
59
|
+
"recent_failures": {
|
60
|
+
"count": 6,
|
61
|
+
"base_branch": "master"
|
62
|
+
}
|
63
|
+
}
|
64
|
+
],
|
65
|
+
"existing_failures": [],
|
66
|
+
"resolved_failures": [
|
67
|
+
{
|
68
|
+
"status": "success",
|
69
|
+
"name": "resolved rspec unit pg 11 test",
|
70
|
+
"classname": "resolved.rspec.unit.pg.11.test",
|
71
|
+
"file": "./spec/resolved/rspec_unit_pg11_spec.rb",
|
72
|
+
"execution_time": 0.534931,
|
73
|
+
"system_output": "Failure/Error",
|
74
|
+
"stack_trace": null,
|
75
|
+
"recent_failures": {
|
76
|
+
"count": 6,
|
77
|
+
"base_branch": "master"
|
78
|
+
}
|
79
|
+
}
|
80
|
+
],
|
81
|
+
"new_errors": [],
|
82
|
+
"existing_errors": [],
|
83
|
+
"resolved_errors": [],
|
84
|
+
"suite_errors": null
|
85
|
+
},
|
86
|
+
{
|
87
|
+
"name": "rspec system pg11-as-if-foss",
|
88
|
+
"status": "success",
|
89
|
+
"summary": {
|
90
|
+
"total": 6735,
|
91
|
+
"resolved": 0,
|
92
|
+
"failed": 0,
|
93
|
+
"errored": 0
|
94
|
+
},
|
95
|
+
"new_failures": [],
|
96
|
+
"existing_failures": [
|
97
|
+
{
|
98
|
+
"status": "failed",
|
99
|
+
"name": "rspec system pg 11 as if foss test",
|
100
|
+
"classname": "rspec.system.pg.11.as.if.foss.test",
|
101
|
+
"file": "./spec/features/rspec_system_pg11_as_if_foss_spec.rb",
|
102
|
+
"execution_time": 0.534931,
|
103
|
+
"system_output": "Failure/Error",
|
104
|
+
"stack_trace": null,
|
105
|
+
"recent_failures": {
|
106
|
+
"count": 6,
|
107
|
+
"base_branch": "master"
|
108
|
+
}
|
109
|
+
}
|
110
|
+
],
|
111
|
+
"resolved_failures": [],
|
112
|
+
"new_errors": [],
|
113
|
+
"existing_errors": [],
|
114
|
+
"resolved_errors": [],
|
115
|
+
"suite_errors": null
|
116
|
+
},
|
117
|
+
{
|
118
|
+
"name": "rspec-ee integration pg11",
|
119
|
+
"status": "failed",
|
120
|
+
"summary": {
|
121
|
+
"total": 5713,
|
122
|
+
"resolved": 0,
|
123
|
+
"failed": 1,
|
124
|
+
"errored": 0
|
125
|
+
},
|
126
|
+
"new_failures": [
|
127
|
+
{
|
128
|
+
"status": "failed",
|
129
|
+
"name": "rspec-ee integration pg 11 test",
|
130
|
+
"classname": "rspec-ee.integration.pg.11.test",
|
131
|
+
"file": "./ee/spec/rspec_integration_pg11_spec.rb",
|
132
|
+
"execution_time": 0.534931,
|
133
|
+
"system_output": "Failure/Error",
|
134
|
+
"stack_trace": null,
|
135
|
+
"recent_failures": {
|
136
|
+
"count": 6,
|
137
|
+
"base_branch": "master"
|
138
|
+
}
|
139
|
+
}
|
140
|
+
],
|
141
|
+
"existing_failures": [],
|
142
|
+
"resolved_failures": [],
|
143
|
+
"new_errors": [],
|
144
|
+
"existing_errors": [],
|
145
|
+
"resolved_errors": [],
|
146
|
+
"suite_errors": null
|
147
|
+
},
|
148
|
+
{
|
149
|
+
"name": "rspec-ee system pg11",
|
150
|
+
"status": "success",
|
151
|
+
"summary": {
|
152
|
+
"total": 1993,
|
153
|
+
"resolved": 0,
|
154
|
+
"failed": 0,
|
155
|
+
"errored": 0
|
156
|
+
},
|
157
|
+
"new_failures": [],
|
158
|
+
"existing_failures": [
|
159
|
+
{
|
160
|
+
"status": "failed",
|
161
|
+
"name": "rspec-ee system pg 11 test",
|
162
|
+
"classname": "rspec-ee.system.pg.11.test",
|
163
|
+
"file": "./ee/spec/features/rspec_system_pg11_spec.rb",
|
164
|
+
"execution_time": 0.534931,
|
165
|
+
"system_output": "Failure/Error",
|
166
|
+
"stack_trace": null,
|
167
|
+
"recent_failures": {
|
168
|
+
"count": 6,
|
169
|
+
"base_branch": "master"
|
170
|
+
}
|
171
|
+
}
|
172
|
+
],
|
173
|
+
"resolved_failures": [
|
174
|
+
{
|
175
|
+
"status": "success",
|
176
|
+
"name": "resolved rspec system pg 11 test",
|
177
|
+
"classname": "resolved.rspec.system.pg.11.test",
|
178
|
+
"file": "./ee/spec/features/resolved/rspec_system_pg11_spec.rb",
|
179
|
+
"execution_time": 0.534931,
|
180
|
+
"system_output": "Failure/Error",
|
181
|
+
"stack_trace": null,
|
182
|
+
"recent_failures": {
|
183
|
+
"count": 6,
|
184
|
+
"base_branch": "master"
|
185
|
+
}
|
186
|
+
}
|
187
|
+
],
|
188
|
+
"new_errors": [],
|
189
|
+
"existing_errors": [],
|
190
|
+
"resolved_errors": [],
|
191
|
+
"suite_errors": null
|
192
|
+
}
|
193
|
+
]
|
194
|
+
}
|
data/lib/test_file_finder.rb
CHANGED
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'json'
|
3
|
+
require 'set'
|
4
|
+
|
5
|
+
module TestFileFinder
|
6
|
+
module MappingStrategies
|
7
|
+
##
|
8
|
+
# GitlabMergeRequestRSpecFailure strategy finds test files that failed
|
9
|
+
# in a GitLab merge request, using the Unit Test Reports feature
|
10
|
+
# https://docs.gitlab.com/ee/ci/unit_test_reports.html
|
11
|
+
#
|
12
|
+
# It uses the project path and merge request iid to fetch
|
13
|
+
# the test report of the merge request, which contains the test suites
|
14
|
+
# that ran in the CI pipeline.
|
15
|
+
#
|
16
|
+
# It returns file names of rspec failures in the pipeline.
|
17
|
+
class GitlabMergeRequestRspecFailure
|
18
|
+
TEST_REPORTS_URL_TEMPLATE = 'https://gitlab.com/%{project_path}/-/merge_requests/%{merge_request_iid}/test_reports.json'.freeze
|
19
|
+
|
20
|
+
attr_reader :project_path, :merge_request_iid
|
21
|
+
|
22
|
+
def initialize(project_path:, merge_request_iid:)
|
23
|
+
@project_path = project_path
|
24
|
+
@merge_request_iid = merge_request_iid
|
25
|
+
end
|
26
|
+
|
27
|
+
def match(_files = nil)
|
28
|
+
test_suites.each_with_object(Set.new) do |suite, result|
|
29
|
+
unresolved_failures(suite).each do |failure|
|
30
|
+
rspec_file(failure) do |spec|
|
31
|
+
result << spec
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end.to_a
|
35
|
+
end
|
36
|
+
|
37
|
+
private
|
38
|
+
|
39
|
+
def test_suites
|
40
|
+
return to_enum(__method__) unless block_given?
|
41
|
+
|
42
|
+
@test_suites ||= merge_request_test_reports['suites']
|
43
|
+
@test_suites.each { |suite| yield suite }
|
44
|
+
end
|
45
|
+
|
46
|
+
def unresolved_failures(suite)
|
47
|
+
return to_enum(__method__, suite) unless block_given?
|
48
|
+
|
49
|
+
suite['new_failures'].each { |failure| yield failure }
|
50
|
+
suite['existing_failures'].each { |failure| yield failure }
|
51
|
+
end
|
52
|
+
|
53
|
+
def rspec_file(failure)
|
54
|
+
file = failure['file'].sub('./', '')
|
55
|
+
|
56
|
+
if file.end_with?('spec.rb')
|
57
|
+
yield file
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def merge_request_test_reports
|
62
|
+
test_reports_url = format(TEST_REPORTS_URL_TEMPLATE, { project_path: project_path, merge_request_iid: merge_request_iid })
|
63
|
+
|
64
|
+
response = Faraday.get(test_reports_url, {}, {'Accept' => 'application/json'})
|
65
|
+
|
66
|
+
if response.status == 204
|
67
|
+
raise TestFileFinder::TestReportError, "Test report for merge request #{merge_request_iid} is not ready, please try again later."
|
68
|
+
elsif response.status == 400
|
69
|
+
raise TestFileFinder::TestReportError, "The project #{project_path} does not have test reports configured."
|
70
|
+
elsif response.status == 500
|
71
|
+
raise TestFileFinder::TestReportError, 'Unable to retrieve test report, please try again later.'
|
72
|
+
end
|
73
|
+
|
74
|
+
JSON.parse(response.body)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'optparse'
|
2
2
|
|
3
3
|
module TestFileFinder
|
4
|
-
Options = Struct.new(:mapping_file, :json)
|
4
|
+
Options = Struct.new(:mapping_file, :json, :project_path, :merge_request_iid)
|
5
5
|
|
6
6
|
class OptionParser
|
7
7
|
def self.parse!(argv)
|
@@ -20,6 +20,14 @@ module TestFileFinder
|
|
20
20
|
opts.on('--json FILE', String, 'Use a JSON mapping file') do |json|
|
21
21
|
options.json = json
|
22
22
|
end
|
23
|
+
|
24
|
+
opts.on('--project-path PROJECT_PATH', String, 'Path of GitLab project, e.g `gitlab-org/gitlab`') do |project_path|
|
25
|
+
options.project_path = project_path
|
26
|
+
end
|
27
|
+
|
28
|
+
opts.on('--merge-request-iid MERGE_REQUEST_IID', Integer, 'Merge request internal id') do |merge_request_iid|
|
29
|
+
options.merge_request_iid = merge_request_iid
|
30
|
+
end
|
23
31
|
end.parse!(argv)
|
24
32
|
end
|
25
33
|
end
|
data/test_file_finder.gemspec
CHANGED
@@ -33,8 +33,11 @@ Gem::Specification.new do |spec|
|
|
33
33
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
34
34
|
spec.require_paths = ['lib']
|
35
35
|
|
36
|
+
spec.add_runtime_dependency 'faraday', '~> 1.0.1'
|
37
|
+
|
36
38
|
spec.add_development_dependency 'bundler', '~> 1.17'
|
39
|
+
spec.add_development_dependency 'byebug'
|
37
40
|
spec.add_development_dependency 'rake', '~> 10.0'
|
38
41
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
39
|
-
spec.add_development_dependency '
|
42
|
+
spec.add_development_dependency 'webmock', '~> 3.12'
|
40
43
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test_file_finder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GitLab
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-04-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.0.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.0.1
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -24,6 +38,20 @@ dependencies:
|
|
24
38
|
- - "~>"
|
25
39
|
- !ruby/object:Gem::Version
|
26
40
|
version: '1.17'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: byebug
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: rake
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,19 +81,19 @@ dependencies:
|
|
53
81
|
- !ruby/object:Gem::Version
|
54
82
|
version: '3.0'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
84
|
+
name: webmock
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
58
86
|
requirements:
|
59
|
-
- - "
|
87
|
+
- - "~>"
|
60
88
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
89
|
+
version: '3.12'
|
62
90
|
type: :development
|
63
91
|
prerelease: false
|
64
92
|
version_requirements: !ruby/object:Gem::Requirement
|
65
93
|
requirements:
|
66
|
-
- - "
|
94
|
+
- - "~>"
|
67
95
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
96
|
+
version: '3.12'
|
69
97
|
description: A command-line tool for guessing which spec files are relavant to a passed-in
|
70
98
|
set of file paths.
|
71
99
|
email:
|
@@ -77,6 +105,7 @@ extra_rdoc_files: []
|
|
77
105
|
files:
|
78
106
|
- ".gitignore"
|
79
107
|
- ".gitlab-ci.yml"
|
108
|
+
- ".gitlab/merge_request_templates/Release.md"
|
80
109
|
- ".rspec"
|
81
110
|
- Gemfile
|
82
111
|
- Gemfile.lock
|
@@ -84,6 +113,7 @@ files:
|
|
84
113
|
- Rakefile
|
85
114
|
- bin/console
|
86
115
|
- bin/setup
|
116
|
+
- docs/release_process.md
|
87
117
|
- exe/tff
|
88
118
|
- feature/tff_exe_spec.rb
|
89
119
|
- fixtures/mapping.json
|
@@ -92,11 +122,13 @@ files:
|
|
92
122
|
- fixtures/spec/db/schema_spec.rb
|
93
123
|
- fixtures/spec/models/project_spec.rb
|
94
124
|
- fixtures/spec/models/test_file_finder_gem_executable_widget_spec.rb
|
125
|
+
- fixtures/test_reports.json
|
95
126
|
- lib/test_file_finder.rb
|
96
127
|
- lib/test_file_finder/file_finder.rb
|
97
128
|
- lib/test_file_finder/mapping.rb
|
98
129
|
- lib/test_file_finder/mapping_strategies.rb
|
99
130
|
- lib/test_file_finder/mapping_strategies/direct_matching.rb
|
131
|
+
- lib/test_file_finder/mapping_strategies/gitlab_merge_request_rspec_failure.rb
|
100
132
|
- lib/test_file_finder/mapping_strategies/pattern_matching.rb
|
101
133
|
- lib/test_file_finder/option_parser.rb
|
102
134
|
- lib/test_file_finder/version.rb
|
@@ -109,7 +141,7 @@ metadata:
|
|
109
141
|
homepage_uri: https://gitlab.com/gitlab-org/ci-cd/test_file_finder
|
110
142
|
source_code_uri: https://gitlab.com/gitlab-org/ci-cd/test_file_finder
|
111
143
|
changelog_uri: https://gitlab.com/gitlab-org/ci-cd/test_file_finder/-/blob/master/CHANGELOG.md
|
112
|
-
post_install_message:
|
144
|
+
post_install_message:
|
113
145
|
rdoc_options: []
|
114
146
|
require_paths:
|
115
147
|
- lib
|
@@ -124,8 +156,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
156
|
- !ruby/object:Gem::Version
|
125
157
|
version: '0'
|
126
158
|
requirements: []
|
127
|
-
rubygems_version: 3.
|
128
|
-
signing_key:
|
159
|
+
rubygems_version: 3.1.4
|
160
|
+
signing_key:
|
129
161
|
specification_version: 4
|
130
162
|
summary: Guesses spec file paths given input file paths.
|
131
163
|
test_files: []
|