fastlane-plugin-test_center 3.2.6 → 3.3.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
  SHA1:
3
- metadata.gz: 979f6d96d1cdb22dc92053f3a47baa48dce9572c
4
- data.tar.gz: 5a0c8b22ffae814e74d983d926d4d31b815cab29
3
+ metadata.gz: 893544a3b0cd2e53515d862eb0fda5c3e55f6894
4
+ data.tar.gz: 4fb54967fc84179a6de35c8314d7018396b5170a
5
5
  SHA512:
6
- metadata.gz: 8e23bf8de429edee92f642f227a1d5beea919f8befb4173c09ce0e5731165d168d661235479dc52a3a21bc5599b5aaddf0499f32f69b7b52af4a1bcc6bf38afe
7
- data.tar.gz: b459630434e7b4696a98f0cf1345edff9a520579d7b2d06bc011c973aceae4ffb3ab54ae4ce4de21b83990c8ef6e4c4ca0fae03edcc9283c5da0d3f920e8c282
6
+ metadata.gz: 888c640ec758d5916be8414d1f7a5940c51c28736bdd172e3ceda86fbbf6b50ea74071c07397b4bae3ca2e5ddc9f18f853f3fd11b074eb9b26db894e1f9b67e3
7
+ data.tar.gz: 3b65a9bb1175eaedd4ba0fb937ea62538a037ff785f3837cd6f1061f22a52d2ac06633691ad85021fe43f6b30e7586ffce4ac14cb662fb489032c4923fe24163
@@ -29,12 +29,16 @@ module Fastlane
29
29
  def self.opened_reports(report_filepaths)
30
30
  report_filepaths.map do |report_filepath|
31
31
  report = nil
32
- repair_attempt = 0
32
+ repair_attempted = false
33
33
  begin
34
34
  report = REXML::Document.new(File.new(report_filepath))
35
- rescue REXML::ParseException
36
- repair_attempt += 1
37
- if repair_attempt < 2
35
+ rescue REXML::ParseException => e
36
+ if repair_attempted
37
+ UI.important("'#{report_filepath}' is malformed and :collate_html_reports cannot repair it")
38
+ raise e
39
+ else
40
+ UI.important("'#{report_filepath}' is malformed. Attempting to repair it")
41
+ repair_attempted = true
38
42
  repair_malformed_html(report_filepath)
39
43
  retry
40
44
  end
@@ -258,7 +258,8 @@ module Fastlane
258
258
  skip_build: true,
259
259
  clean: true,
260
260
  try_count: 3,
261
- result_bundle: true
261
+ result_bundle: true,
262
+ fail_build: false
262
263
  )
263
264
  ",
264
265
  "
@@ -4,14 +4,14 @@ module Fastlane
4
4
  require 'xcodeproj'
5
5
 
6
6
  def self.run(params)
7
- project_path = params[:xcodeproj]
8
7
  all_tests_to_skip = params[:tests]
9
8
  scheme = params[:scheme]
10
9
 
11
- scheme_filepaths = Dir.glob("#{project_path}/{xcshareddata,xcuserdata}/**/xcschemes/#{scheme || '*'}.xcscheme")
10
+ scheme_filepaths = schemes_from_project(params[:xcodeproj], scheme) || schemes_from_workspace(params[:workspace], scheme)
12
11
  if scheme_filepaths.length.zero?
13
12
  UI.user_error!("Error: cannot find any scheme named #{scheme}") unless scheme.nil?
14
- UI.user_error!("Error: cannot find any schemes in the Xcode project")
13
+ UI.user_error!("Error: cannot find any schemes in the Xcode project") if params[:xcodeproj]
14
+ UI.user_error!("Error: cannot find any schemes in the Xcode workspace") if params[:workspace]
15
15
  end
16
16
 
17
17
  scheme_filepaths.each do |scheme_filepath|
@@ -35,6 +35,26 @@ module Fastlane
35
35
  nil
36
36
  end
37
37
 
38
+ def self.schemes_from_project(project_path, scheme)
39
+ return nil unless project_path
40
+
41
+ Dir.glob("#{project_path}/{xcshareddata,xcuserdata}/**/xcschemes/#{scheme || '*'}.xcscheme")
42
+ end
43
+
44
+ def self.schemes_from_workspace(workspace_path, scheme)
45
+ return nil unless workspace_path
46
+
47
+ xcworkspace = Xcodeproj::Workspace.new_from_xcworkspace(workspace_path)
48
+ scheme_filepaths = []
49
+ xcworkspace.file_references.each do |file_reference|
50
+ next if file_reference.path.include?('Pods/Pods.xcodeproj')
51
+
52
+ project_path = file_reference.absolute_path(File.dirname(workspace_path))
53
+ scheme_filepaths.concat(schemes_from_project(project_path, scheme))
54
+ end
55
+ scheme_filepaths
56
+ end
57
+
38
58
  #####################################################
39
59
  # @!group Documentation
40
60
  #####################################################
@@ -48,12 +68,25 @@ module Fastlane
48
68
  FastlaneCore::ConfigItem.new(
49
69
  key: :xcodeproj,
50
70
  env_name: "FL_SUPPRESS_TESTS_XCODE_PROJECT",
71
+ optional: true,
51
72
  description: "The file path to the Xcode project file to modify",
52
73
  verify_block: proc do |path|
53
74
  UI.user_error!("Error: Xcode project file path not given!") unless path and !path.empty?
54
75
  UI.user_error!("Error: Xcode project '#{path}' not found!") unless Dir.exist?(path)
55
76
  end
56
77
  ),
78
+ FastlaneCore::ConfigItem.new(
79
+ key: :workspace,
80
+ env_name: "FL_SUPPRESS_TESTS_XCODE_WORKSPACE",
81
+ optional: true,
82
+ description: "The file path to the Xcode workspace file to modify",
83
+ verify_block: proc do |value|
84
+ v = File.expand_path(value.to_s)
85
+ UI.user_error!("Workspace file not found at path '#{v}'") unless Dir.exist?(v)
86
+ UI.user_error!("Workspace file invalid") unless File.directory?(v)
87
+ UI.user_error!("Workspace file is not a workspace, must end with .xcworkspace") unless v.include?(".xcworkspace")
88
+ end
89
+ ),
57
90
  FastlaneCore::ConfigItem.new(
58
91
  key: :tests,
59
92
  env_name: "FL_SUPPRESS_TESTS_TESTS_TO_SUPPRESS",
@@ -109,6 +142,20 @@ module Fastlane
109
142
  ],
110
143
  scheme: 'Professor'
111
144
  )
145
+ ",
146
+ "
147
+ UI.important(
148
+ 'example: ' \\
149
+ 'suppress some tests in one Scheme from a workspace'
150
+ )
151
+ suppress_tests(
152
+ workspace: 'AtomicBoy/AtomicBoy.xcworkspace',
153
+ tests: [
154
+ 'AtomicBoyUITests/HappyNapperTests/testBeepingNonExistentFriendDisplaysError',
155
+ 'AtomicBoyUITests/GrumpyWorkerTests'
156
+ ],
157
+ scheme: 'Professor'
158
+ )
112
159
  "
113
160
  ]
114
161
  end
@@ -4,13 +4,12 @@ module Fastlane
4
4
  require 'set'
5
5
 
6
6
  def self.run(params)
7
- project_path = params[:xcodeproj]
8
7
  scheme = params[:scheme]
9
-
10
- scheme_filepaths = Dir.glob("#{project_path}/{xcshareddata,xcuserdata}/**/xcschemes/#{scheme || '*'}.xcscheme")
8
+ scheme_filepaths = schemes_from_project(params[:xcodeproj], scheme) || schemes_from_workspace(params[:workspace], scheme)
11
9
  if scheme_filepaths.length.zero?
12
10
  UI.user_error!("Error: cannot find any scheme named #{scheme}") unless scheme.nil?
13
- UI.user_error!("Error: cannot find any schemes in the Xcode project")
11
+ UI.user_error!("Error: cannot find any schemes in the Xcode project") if params[:xcodeproj]
12
+ UI.user_error!("Error: cannot find any schemes in the Xcode workspace") if params[:workspace]
14
13
  end
15
14
 
16
15
  skipped_tests = Set.new
@@ -29,6 +28,26 @@ module Fastlane
29
28
  skipped_tests.to_a
30
29
  end
31
30
 
31
+ def self.schemes_from_project(project_path, scheme)
32
+ return nil unless project_path
33
+
34
+ Dir.glob("#{project_path}/{xcshareddata,xcuserdata}/**/xcschemes/#{scheme || '*'}.xcscheme")
35
+ end
36
+
37
+ def self.schemes_from_workspace(workspace_path, scheme)
38
+ return nil unless workspace_path
39
+
40
+ xcworkspace = Xcodeproj::Workspace.new_from_xcworkspace(workspace_path)
41
+ scheme_filepaths = []
42
+ xcworkspace.file_references.each do |file_reference|
43
+ next if file_reference.path.include?('Pods/Pods.xcodeproj')
44
+
45
+ project_path = file_reference.absolute_path(File.dirname(workspace_path))
46
+ scheme_filepaths.concat(schemes_from_project(project_path, scheme))
47
+ end
48
+ scheme_filepaths
49
+ end
50
+
32
51
  #####################################################
33
52
  # @!group Documentation
34
53
  #####################################################
@@ -42,12 +61,25 @@ module Fastlane
42
61
  FastlaneCore::ConfigItem.new(
43
62
  key: :xcodeproj,
44
63
  env_name: "FL_SUPPRESSED_TESTS_XCODE_PROJECT",
64
+ optional: true,
45
65
  description: "The file path to the Xcode project file to read the skipped tests from",
46
66
  verify_block: proc do |path|
47
67
  UI.user_error!("Error: Xcode project file path not given!") unless path and !path.empty?
48
68
  UI.user_error!("Error: Xcode project '#{path}' not found!") unless Dir.exist?(path)
49
69
  end
50
70
  ),
71
+ FastlaneCore::ConfigItem.new(
72
+ key: :workspace,
73
+ env_name: "FL_SUPPRESSED_TESTS_XCODE_WORKSPACE",
74
+ optional: true,
75
+ description: "The file path to the Xcode workspace file to read the skipped tests from",
76
+ verify_block: proc do |value|
77
+ v = File.expand_path(value.to_s)
78
+ UI.user_error!("Workspace file not found at path '#{v}'") unless Dir.exist?(v)
79
+ UI.user_error!("Workspace file invalid") unless File.directory?(v)
80
+ UI.user_error!("Workspace file is not a workspace, must end with .xcworkspace") unless v.include?(".xcworkspace")
81
+ end
82
+ ),
51
83
  FastlaneCore::ConfigItem.new(
52
84
  key: :scheme,
53
85
  optional: true,
@@ -81,6 +113,17 @@ module Fastlane
81
113
  UI.message(
82
114
  \"Suppressed tests for project: \#{suppressed_tests(xcodeproj: 'AtomicBoy/AtomicBoy.xcodeproj')}\"
83
115
  )
116
+ ",
117
+ "
118
+ UI.important(
119
+ 'example: ' \\
120
+ 'get the tests that are suppressed in all Schemes in a workspace'
121
+ )
122
+ tests = suppressed_tests(
123
+ workspace: File.absolute_path('../AtomicBoy/AtomicBoy.xcworkspace'),
124
+ scheme: 'Professor'
125
+ )
126
+ UI.message(\"tests: \#{tests}\")
84
127
  "
85
128
  ]
86
129
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module TestCenter
3
- VERSION = "3.2.6"
3
+ VERSION = "3.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-test_center
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.6
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lyndsey Ferguson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-04 00:00:00.000000000 Z
11
+ date: 2018-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: plist