swiftrail 0.1.5 → 0.1.6
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/README.md +15 -4
- data/lib/swiftrail/cli.rb +3 -1
- data/lib/swiftrail/config/reader.rb +1 -0
- data/lib/swiftrail/swift/parser.rb +1 -1
- data/lib/swiftrail/testrail/api/test_rail_test.rb +5 -3
- data/lib/swiftrail/testrail/reporter.rb +19 -7
- data/lib/swiftrail/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24b9beb85d5c05e2b80e40dc6e5cfcc29c7d24571162d5003fb69f8bbb681937
|
4
|
+
data.tar.gz: 717bd96b5e4a2fd1b26e7d8a8e4c47da06aa297cd4fb41bef39826531cfe0189
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca865e1bd7b0174b409bdbecd6d285e201fd38e0c7ca63444842dacf169be5477fe66df85db5dcb67adba7e3d2060df8fef546619f02e5ad8c426db6fedba52f
|
7
|
+
data.tar.gz: 2a58d682fd847f8335a051998054198916d4e2694d3e9d66ce38097eb8703fb557ab1857aa1186802a41ff5203093f31e55f51b984f99c87538abf8dcd936202
|
data/README.md
CHANGED
@@ -20,16 +20,13 @@ $ bundle
|
|
20
20
|
### Options
|
21
21
|
|
22
22
|
Mandatory options for all of the commands are
|
23
|
-
|
23
|
+
|
24
24
|
- `--test_classes=''` - regex for the path to swift tests
|
25
25
|
- `--test_rail_username=''` - username for TestRail account
|
26
26
|
- `--test_rail_password=''` - password for TestRail account
|
27
27
|
- `--test_rail_url=''` - url for TestRail account
|
28
28
|
- `--run_id=''` - run_id for which you want to run the command
|
29
29
|
|
30
|
-
When running report you additionaly have to pass location of the test_reports
|
31
|
-
- `--test-reports=''`
|
32
|
-
|
33
30
|
### Marking test cases
|
34
31
|
|
35
32
|
In your `swift` projects you can mark any test class or specific test with any number of TestRail test cases. To mark them
|
@@ -67,14 +64,25 @@ class MyOtherTests: XCTestCase {
|
|
67
64
|
```
|
68
65
|
### Report
|
69
66
|
|
67
|
+
When running report you additionaly have to pass location of the test_reports, and if you want strict mode
|
68
|
+
- `--test-reports=''`
|
69
|
+
- `--strict` (default is `false`)
|
70
|
+
|
70
71
|
To be able to report the results of the tests, you need to first generate xml junit reports. Once you have those, running
|
71
72
|
```
|
72
73
|
swiftrail report --test-reports='path/to/test/reports' --run_id:123 (all the other options should also be included)
|
73
74
|
```
|
74
75
|
will report the results to TestRail. Dependent on success/failure the tests on TestRail will be marked accordingly.
|
75
76
|
|
77
|
+
|
78
|
+
If the strict mode is enabled, the upload will fail if you have test cases that are not present in the test run.
|
79
|
+
|
76
80
|
### Coverage
|
77
81
|
|
82
|
+
When running coverage you additionaly can pass output folder, where the report will be generated (if not passed it will print out to terminal)
|
83
|
+
- `--output_folder=''`
|
84
|
+
|
85
|
+
|
78
86
|
Coverage report will give you the percentage of test cases covered by your ui/unit/... tests.
|
79
87
|
|
80
88
|
```
|
@@ -83,6 +91,9 @@ swiftrail coverage --run_id:123 (all the other options should also be included)
|
|
83
91
|
|
84
92
|
### Lint
|
85
93
|
|
94
|
+
When running lint you additionaly can pass output folder, where the report will be generated (if not passed it will print out to terminal)
|
95
|
+
- `--output_folder=''`
|
96
|
+
|
86
97
|
Lint will give you outadet case_ids that you have marked on your ui/unit tests, but no longer exist as test cases on TestRail.
|
87
98
|
|
88
99
|
```
|
data/lib/swiftrail/cli.rb
CHANGED
@@ -21,6 +21,7 @@ module Swiftrail
|
|
21
21
|
|
22
22
|
desc 'report', 'Reports success/failure to test rail, based on the results of your tests'
|
23
23
|
method_option :test_reports, type: :string, aliases: '-reports', default: defaults['reports'], desc: 'Regex to match your junit report files.'
|
24
|
+
method_option :strict, type: :boolean, aliases: '-strict', default: defaults['reports'], desc: 'Fail if there you are trying to report missing test case id'
|
24
25
|
def report
|
25
26
|
if swiftrail_reporter.report_results(options[:run_id])
|
26
27
|
puts 'Successfully reported the results'
|
@@ -60,7 +61,8 @@ module Swiftrail
|
|
60
61
|
[options['test_classes']],
|
61
62
|
options['test_rail_username'],
|
62
63
|
options['test_rail_password'],
|
63
|
-
options['test_rail_url']
|
64
|
+
options['test_rail_url'],
|
65
|
+
options['strict']
|
64
66
|
)
|
65
67
|
end
|
66
68
|
|
@@ -42,7 +42,7 @@ module Swiftrail
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def cases_regex
|
45
|
-
%r{(//\s*TESTRAIL\s*([(C(0-9)*)|\s|,]*)$\s*)*(func |class )\s*(\w*)\s*(\(\)|:\s*XCTestCase)}im
|
45
|
+
%r{(//\s*TESTRAIL\s*([(C(0-9)*)|\s|,]*)$\s*)*^[\w ]*(func |class )\s*(\w*)\s*(\(\)|:\s*XCTestCase)}im
|
46
46
|
end
|
47
47
|
|
48
48
|
def sanitize(case_ids)
|
@@ -1,16 +1,18 @@
|
|
1
1
|
module Swiftrail
|
2
2
|
module Testrail
|
3
3
|
module Api
|
4
|
-
TestRailTest = Struct.new(:case_id, :id, :title) do
|
4
|
+
TestRailTest = Struct.new(:case_id, :id, :title, :automated) do
|
5
5
|
def self.from_json(json)
|
6
|
-
|
6
|
+
automated = json['custom_automated'] == 3 || json['custom_automated'] == 4
|
7
|
+
TestRailTest.new(json['case_id'], json['id'], json['title'], automated)
|
7
8
|
end
|
8
9
|
|
9
10
|
def to_json(*_args)
|
10
11
|
{
|
11
12
|
id: id,
|
12
13
|
case_id: case_id,
|
13
|
-
title: title
|
14
|
+
title: title,
|
15
|
+
automated: automated
|
14
16
|
}
|
15
17
|
end
|
16
18
|
end
|
@@ -6,30 +6,33 @@ require 'swiftrail/testrail/api/client'
|
|
6
6
|
module Swiftrail
|
7
7
|
module Testrail
|
8
8
|
class Reporter
|
9
|
-
def initialize(test_report_patterns, tests_patterns, test_rail_username, test_rail_password, test_rail_base_url)
|
9
|
+
def initialize(test_report_patterns, tests_patterns, test_rail_username, test_rail_password, test_rail_base_url, strict)
|
10
10
|
@test_report_patterns = test_report_patterns
|
11
11
|
@tests_patterns = tests_patterns
|
12
12
|
@test_rail_username = test_rail_username
|
13
13
|
@test_rail_password = test_rail_password
|
14
14
|
@test_rail_base_url = test_rail_base_url
|
15
|
+
@strict = strict
|
15
16
|
end
|
16
17
|
|
17
18
|
def report_results(run_id)
|
18
|
-
test_rail_client(run_id).publish_results(assembler(swift_test_parser.parse, junit_parser.parse).assemble)
|
19
|
+
test_rail_client(run_id).publish_results(purge(assembler(swift_test_parser.parse, junit_parser.parse).assemble, run_id))
|
19
20
|
end
|
20
21
|
|
21
22
|
private
|
22
23
|
|
23
|
-
attr_reader :test_report_patterns, :tests_patterns, :test_rail_username, :test_rail_password, :test_rail_base_url
|
24
|
-
|
25
|
-
def test_rail_client(run_id)
|
26
|
-
Api::Client.new(test_rail_base_url, test_rail_username, test_rail_password, run_id)
|
27
|
-
end
|
24
|
+
attr_reader :test_report_patterns, :tests_patterns, :test_rail_username, :test_rail_password, :test_rail_base_url, :strict
|
28
25
|
|
29
26
|
def assembler(swift_tests, junit_test_suites)
|
30
27
|
Assembler.new(swift_tests, junit_test_suites)
|
31
28
|
end
|
32
29
|
|
30
|
+
def purge(test_cases, run_id)
|
31
|
+
test_cases.select do |test_case|
|
32
|
+
!strict || test_rail_test_cases(run_id).include?(test_case.case_id)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
33
36
|
def swift_test_parser
|
34
37
|
Swiftrail::Swift::Parser.new(tests_patterns)
|
35
38
|
end
|
@@ -37,6 +40,15 @@ module Swiftrail
|
|
37
40
|
def junit_parser
|
38
41
|
Swiftrail::Junit::Parser.new(test_report_patterns)
|
39
42
|
end
|
43
|
+
|
44
|
+
def test_rail_test_cases(run_id)
|
45
|
+
@test_cases ||= test_rail_client(run_id).all_tests.map(&:case_id).map(&:to_s)
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_rail_client(run_id)
|
49
|
+
Api::Client.new(test_rail_base_url, test_rail_username, test_rail_password, run_id)
|
50
|
+
end
|
51
|
+
|
40
52
|
end
|
41
53
|
end
|
42
54
|
end
|
data/lib/swiftrail/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: swiftrail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Slavko Krucaj
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|