fastlane-plugin-test_center 3.2.6 → 3.3.0

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
  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