swiftrail 0.1.17 → 0.1.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a678a2541859e84a128663760ea14eca235e8937fc32e53d859432bbab1a126
4
- data.tar.gz: 1cacbf8751bd4ffffa614a95e79133bda45355abef8f23417b4861245c0622f3
3
+ metadata.gz: 344334b9380d8f1077901a2901818f36d06bcb5348ec3f41377d3f7b28498136
4
+ data.tar.gz: 5e2722b3f7e33717962be3c7e35148557bb0492be43f435dc1a4758abeb9ff8c
5
5
  SHA512:
6
- metadata.gz: 408a74b5894568091bd65e9908c33c7fc5a373d1e87da9c1bede34340c8139123698bf719f13ea6879c71aabc5bc0cafc4e144a17385de501a4fc6346ec4b736
7
- data.tar.gz: 42a3ba703525ec4285d5356a82adb94a637548edf53110cb271717266d69fc6b68fe5e524b2a84d534cd30cb231cf8d107ce921dcc0085157d5919f10a8fe74c
6
+ metadata.gz: 19b27fd47f8cd0ef552443c377e3ff2f0504031c471949b55d7b87a8417c58f100cda114048d3e09eca1305f2b1c7be611685a60bdcbe53248c1bbf50d542e4c
7
+ data.tar.gz: 36ccecbbb3c633c5a1c050205817a05a37995755128f19f669d1dc1f9bd9c5dd546518f96690d5beeb2d206a92f89cd56913d6c285ff9a9a1f5e7fe0134d8f7a
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- swiftrail (0.1.17)
4
+ swiftrail (0.1.18)
5
5
  nokogiri (>= 1.10.4)
6
6
  thor (~> 0.20)
7
7
 
@@ -13,19 +13,19 @@ GEM
13
13
  nokogiri (1.10.7)
14
14
  mini_portile2 (~> 2.4.0)
15
15
  rake (10.5.0)
16
- rspec (3.8.0)
17
- rspec-core (~> 3.8.0)
18
- rspec-expectations (~> 3.8.0)
19
- rspec-mocks (~> 3.8.0)
20
- rspec-core (3.8.2)
21
- rspec-support (~> 3.8.0)
22
- rspec-expectations (3.8.4)
16
+ rspec (3.9.0)
17
+ rspec-core (~> 3.9.0)
18
+ rspec-expectations (~> 3.9.0)
19
+ rspec-mocks (~> 3.9.0)
20
+ rspec-core (3.9.1)
21
+ rspec-support (~> 3.9.1)
22
+ rspec-expectations (3.9.0)
23
23
  diff-lcs (>= 1.2.0, < 2.0)
24
- rspec-support (~> 3.8.0)
25
- rspec-mocks (3.8.1)
24
+ rspec-support (~> 3.9.0)
25
+ rspec-mocks (3.9.1)
26
26
  diff-lcs (>= 1.2.0, < 2.0)
27
- rspec-support (~> 3.8.0)
28
- rspec-support (3.8.2)
27
+ rspec-support (~> 3.9.0)
28
+ rspec-support (3.9.2)
29
29
  thor (0.20.3)
30
30
 
31
31
  PLATFORMS
data/README.md CHANGED
@@ -62,6 +62,45 @@ class MyOtherTests: XCTestCase {
62
62
  }
63
63
  }
64
64
  ```
65
+
66
+ #### QuickNimble support
67
+ If Quick/Nimble is used for generating tests, the above examples can't be used.
68
+
69
+ In order for SwiftRail to detect which tests are linked to which cases ids, you need to add this custom context in your project:
70
+
71
+ ```swift
72
+ public func testRail(_ ids: Int..., flags: FilterFlags = [:], closure: () -> Void) {
73
+ let formattedTestrailCases = ids
74
+ .map({ "C\($0)" })
75
+ .joined(separator: " ")
76
+ context(formattedTestrailCases, flags: flags, closure: closure)
77
+ }
78
+ ```
79
+
80
+ and then you can use it this way in your tests:
81
+
82
+ ```swift
83
+ class MyControllerTests: QuickSpec {
84
+ override func spec() {
85
+ describe("MyControllerTests") {
86
+ testRail(12345, 22222, 33333) { // Add this new custom context
87
+ context("when creating it") {
88
+ let sut = "short string"
89
+ it("no output value") {
90
+ expect(sut).to(equal("short string")
91
+ }
92
+ }
93
+ }
94
+ }
95
+ }
96
+
97
+ ```
98
+
99
+ It will generate test with the following name:
100
+ `MyControllerTests__C12345_C22222_C33333__when_creating_it__no_output_value`
101
+
102
+ And this test will be picked up by swiftrail and report it to testrail for the linked testrail cases!
103
+
65
104
  ### Report
66
105
 
67
106
  When running report you additionaly have to pass location of the test_reports, and if you want strict mode
@@ -0,0 +1,26 @@
1
+ require 'swiftrail/testrail/intermediate_result'
2
+
3
+ module Swiftrail
4
+ module QuickNimble
5
+ class Parser
6
+
7
+ RegexMatch = Struct.new(:case_ids, :test_name)
8
+
9
+ # return RegexMatch result
10
+ def extractInformation(test_case)
11
+ extracted_cases = test_case.scan(case_regex)[0]
12
+ if !extracted_cases.nil?
13
+ case_ids = extracted_cases.split('_').reject { |c| c.empty? }
14
+ RegexMatch.new(case_ids, test_case)
15
+ else
16
+ RegexMatch.new([], test_case)
17
+ end
18
+ end
19
+
20
+ # find all occurences in string like this example: "C12345"
21
+ def case_regex
22
+ %r{_(?:_(?:C\d+)+)+__}i
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,6 +1,7 @@
1
1
  require 'swiftrail/testrail/errors'
2
2
  require 'swiftrail/testrail/api/test_case_result'
3
3
  require 'swiftrail/testrail/intermediate_result'
4
+ require 'swiftrail/quicknimble/parser'
4
5
 
5
6
  module Swiftrail
6
7
  module Testrail
@@ -28,7 +29,7 @@ module Swiftrail
28
29
  test_suite.test_cases.map do |test_case|
29
30
  swift_test = swift_test_for(test_case)
30
31
  if swift_test.nil?
31
- []
32
+ search_cases_ids(test_case)
32
33
  else
33
34
  swift_test.case_ids.map do |case_id|
34
35
  IntermediateResult.new(swift_test.file_name, swift_test.class_name, swift_test.test_name, test_case.success?, test_case.duration, test_case.failures, case_id)
@@ -37,6 +38,18 @@ module Swiftrail
37
38
  end
38
39
  end
39
40
 
41
+ # lookup case ids in test_case name
42
+ def search_cases_ids(test_case)
43
+ result = extractInformation(test_case)
44
+ if result.case_ids.empty?
45
+ []
46
+ else
47
+ result.case_ids.map do |case_id|
48
+ IntermediateResult.new(result.test_name, result.test_name, result.test_name, test_case.success?, test_case.duration, test_case.failures, case_id)
49
+ end
50
+ end
51
+ end
52
+
40
53
  def swift_test_for(junit_test_case)
41
54
  tests = swift_tests.select do |test|
42
55
  test.class_name == junit_test_case.class_name &&
@@ -1,3 +1,3 @@
1
1
  module Swiftrail
2
- VERSION = '0.1.17'.freeze
2
+ VERSION = '0.1.18'.freeze
3
3
  end
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.17
4
+ version: 0.1.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Slavko Krucaj
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-09 00:00:00.000000000 Z
11
+ date: 2020-01-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -107,6 +107,7 @@ files:
107
107
  - lib/swiftrail/errors/error.rb
108
108
  - lib/swiftrail/junit/parser.rb
109
109
  - lib/swiftrail/junit/report.rb
110
+ - lib/swiftrail/quicknimble/parser.rb
110
111
  - lib/swiftrail/swift/lint.rb
111
112
  - lib/swiftrail/swift/parser.rb
112
113
  - lib/swiftrail/swift/test.rb