fastlane-plugin-xcresult_to_junit 0.1.0 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f5757e2a9823c97cfa45d23ac665ed098c7cae0736484b9f6c3467b9c6d94aa2
4
- data.tar.gz: 591790faba5cd45cbf2d4611ed8a7b7fe9218a98bbf277e21a7cad294b542871
3
+ metadata.gz: 1532fc3a5078d597ebdbb5e41a5bd038f38d9e3481ffe0b22b4dca0766f0a079
4
+ data.tar.gz: 81d441aec6f1bf6c8b0034a54f569fdf6164bc74c0533db42bbc51daf0503d84
5
5
  SHA512:
6
- metadata.gz: 50ff098a3dfa44f066d477985fedf2e138b1007648b618911c2b4c1681d7134d13d0f10524882ab17687662c370c01c282ffd356070232ea8c539c8161234859
7
- data.tar.gz: c8a5783667857c1cc03e25e48df679b9e1721ff00f90d710250daea7debdb82e68b613397f0dd48e273e237a2bc1d168c62f35345f4084a0b653bd23da110bbf
6
+ metadata.gz: e69e4ee036d1ad1158438cd65f01fc0fe04b5284a1dc57510a85b73744add7014dbaf141f44f6291510bfbdc166133bd7896a82a226cfc23dd6cbbaa74211627
7
+ data.tar.gz: 77e4e345da4c1b667805f9e1c66fb0db02fc96c412b04c417651a60aab0ae68df28201ec2964dd7fd691fb56d35e804f6dc472e995afb58b079475bdda1469cc
data/README.md CHANGED
@@ -38,7 +38,7 @@ Ensure you specify the following when you call scan
38
38
 
39
39
  After scan you can call the plugin, which will look something like this
40
40
  ```ruby
41
- xcresult_to_junit(xcresult_path: './test_output/MyScheme.test_result.xcresult', output_path: './test_output/')
41
+ xcresult_to_junit(xcresult_path: './fastlane/test_output/MyScheme.test_result.xcresult', output_path: './fastlane/test_output/')
42
42
  ```
43
43
 
44
44
  We can get a list of the junit reports generated by doing something like so
@@ -9,6 +9,7 @@ module Fastlane
9
9
  all_results = Helper::XcresultToJunitHelper.load_results(params[:xcresult_path])['actions']['_values']
10
10
  all_results.each do |test_run|
11
11
  if test_run['actionResult']['testsRef'] # Skip if section has no testRef data as this means its not a test run
12
+ junit_folder = Helper::XcresultToJunitHelper.save_device_details_to_file(params[:output_path], test_run['runDestination'])
12
13
  test_run_id = test_run['actionResult']['testsRef']['id']['_value']
13
14
  all_tests = Helper::XcresultToJunitHelper.load_object(params[:xcresult_path], test_run_id)['summaries']['_values'][0]['testableSummaries']['_values']
14
15
  test_suites = []
@@ -21,12 +22,26 @@ module Fastlane
21
22
  end
22
23
  test_classes = target['tests']['_values'][0]['subtests']['_values'][0]['subtests']['_values']
23
24
  test_classes.each do |test_class|
24
- suite = { name: "#{target_name}.#{test_class['name']['_value']}", cases: [] }
25
+ suite_name = "#{target_name}.#{test_class['name']['_value']}"
26
+ suite = { name: suite_name, cases: [] }
25
27
  if test_class['subtests']
26
28
  test_class['subtests']['_values'].each do |test|
27
29
  duration = 0
28
30
  duration = test['duration']['_value'] if test['duration']
29
- testcase = { name: test['name']['_value'], time: duration }
31
+ testcase_name = test['name']['_value'].tr('()', '')
32
+ testcase = { name: testcase_name, time: duration }
33
+
34
+ summaryRef = test['summaryRef']['id']['_value']
35
+ ref = Helper::XcresultToJunitHelper.load_object(params[:xcresult_path], summaryRef)['activitySummaries']['_values']
36
+ ref.each do |summary|
37
+ if summary['attachments']
38
+ summary['attachments']['_values'].each do |attachment|
39
+ id = attachment['payloadRef']['id']['_value']
40
+ Helper::XcresultToJunitHelper.fetch_screenshot(params[:xcresult_path], "#{junit_folder}/attachments/#{suite_name}.#{testcase_name}", "#{id}.png", id)
41
+ end
42
+ end
43
+ end
44
+
30
45
  if test['testStatus']['_value'] == 'Failure'
31
46
  failure = Helper::XcresultToJunitHelper.load_object(params[:xcresult_path], test['summaryRef']['id']['_value'])['failureSummaries']['_values'][0]
32
47
  filename = failure['fileName']['_value']
@@ -47,7 +62,6 @@ module Fastlane
47
62
  test_suites << suite
48
63
  end
49
64
  end
50
- junit_folder = Helper::XcresultToJunitHelper.save_device_details_to_file(params[:output_path], test_run['runDestination'])
51
65
  Helper::XcresultToJunitHelper.generate_junit(junit_folder, test_suites)
52
66
  end
53
67
  end
@@ -15,6 +15,13 @@ module Fastlane
15
15
  JSON.load FastlaneCore::CommandExecutor.execute(command: "xcrun xcresulttool get --format json --path #{xcresult_path}")
16
16
  end
17
17
 
18
+ def self.fetch_screenshot(xcresult_path, output_path, file_name, id)
19
+ if !File.directory?(output_path)
20
+ FileUtils.mkdir output_path
21
+ end
22
+ JSON.load FastlaneCore::CommandExecutor.execute(command: "xcrun xcresulttool export --path #{xcresult_path} --output-path #{output_path}/#{file_name} --id #{id} --type file")
23
+ end
24
+
18
25
  def self.save_device_details_to_file(output_path, device_destination)
19
26
  device_udid = device_destination['targetDeviceRecord']['identifier']['_value']
20
27
  device_details = {
@@ -26,6 +33,7 @@ module Fastlane
26
33
  junit_folder = "#{output_path}/ios-#{device_udid}.junit"
27
34
  FileUtils.rm_rf junit_folder
28
35
  FileUtils.mkdir junit_folder
36
+ FileUtils.mkdir "#{junit_folder}/attachments"
29
37
  File.open("#{junit_folder}/device.json", 'w') do |f|
30
38
  f << device_details
31
39
  end
@@ -55,7 +63,7 @@ module Fastlane
55
63
  end
56
64
 
57
65
  def self.junit_testcase_start(suite, testcase)
58
- print "<testcase classname=#{suite[:name].encode xml: :attr} name=#{testcase[:name].encode xml: :attr} time='#{testcase[:time]}'"
66
+ print "<testcase name=#{testcase[:name].encode xml: :attr} classname=#{suite[:name].encode xml: :attr} time='#{testcase[:time]}'"
59
67
  end
60
68
 
61
69
  def self.junit_testcase_success
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module XcresultToJunit
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-xcresult_to_junit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane Birdsall
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-13 00:00:00.000000000 Z
11
+ date: 2019-11-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry