xcjobs 0.8.1 → 0.9.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 +4 -4
- data/lib/xcjobs/version.rb +1 -1
- data/lib/xcjobs/xcodebuild.rb +50 -64
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 694d4c8a53b9a099ff689a38bb163e0d225f7327
|
4
|
+
data.tar.gz: d05a32b42325bc2887be5c5b7319608bfc37220e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea48a6001664419ebcecb65db4916711f43b781db685fccbfddda5dc1b60b51deeb6759f2b4ccef3d6d1b0d5dfd06c720c3e66315ff67af1cd7a364fa9e69750
|
7
|
+
data.tar.gz: 8f2966ae904065af2080c47771305ca6757e5f71a48c6278016561b12c8bb6be600cc9ed440fa5a6173fd87363ec7f901da9a00f0fd29244d100c4fab069489c
|
data/lib/xcjobs/version.rb
CHANGED
data/lib/xcjobs/xcodebuild.rb
CHANGED
@@ -31,7 +31,7 @@ module XCJobs
|
|
31
31
|
|
32
32
|
def initialize(name)
|
33
33
|
$stdout.sync = $stderr.sync = true
|
34
|
-
|
34
|
+
|
35
35
|
@name = name
|
36
36
|
@destinations = []
|
37
37
|
@only_testings = []
|
@@ -39,6 +39,7 @@ module XCJobs
|
|
39
39
|
@build_options = {}
|
40
40
|
@build_settings = {}
|
41
41
|
@unsetenv_others = false
|
42
|
+
@description = Rake.application.last_description # nil or given from "desc"
|
42
43
|
end
|
43
44
|
|
44
45
|
def project
|
@@ -174,7 +175,7 @@ module XCJobs
|
|
174
175
|
|
175
176
|
def initialize(name = :test)
|
176
177
|
super
|
177
|
-
@description
|
178
|
+
@description ||= 'test application'
|
178
179
|
@without_building = false
|
179
180
|
yield self if block_given?
|
180
181
|
define
|
@@ -185,66 +186,30 @@ module XCJobs
|
|
185
186
|
end
|
186
187
|
|
187
188
|
private
|
188
|
-
|
189
|
-
def
|
189
|
+
|
190
|
+
def show_coverage_report(profdata_path, target_path)
|
190
191
|
cmd = ['xcrun', 'llvm-cov', 'report']
|
191
192
|
opts = ['-instr-profile', profdata_path, target_path, '-use-color=0']
|
192
|
-
|
193
|
-
out, status = Open3.capture2(*(cmd + opts))
|
194
|
-
out.lines.each do |line|
|
195
|
-
puts line
|
196
|
-
end
|
193
|
+
sh *(cmd + opts)
|
197
194
|
end
|
198
|
-
|
199
|
-
def
|
200
|
-
puts 'Generage gcov file...'
|
195
|
+
|
196
|
+
def build_coverage_report(profdata_path, target_path)
|
201
197
|
gcov_file = {}
|
202
198
|
source_path = ''
|
203
|
-
|
199
|
+
|
204
200
|
cmd = ['xcrun', 'llvm-cov', 'show']
|
205
201
|
opts = ['-instr-profile', profdata_path, target_path, '-use-color=0']
|
206
|
-
|
207
|
-
|
208
|
-
out.lines.each do |line|
|
209
|
-
match = /^(['"]?(?:\/[^\/]+)*['"]?):$/.match(line)
|
210
|
-
if match.to_a.count > 0
|
211
|
-
source_path = match.to_a[1]
|
212
|
-
gcov_file[source_path] = []
|
213
|
-
next
|
214
|
-
end
|
215
|
-
|
216
|
-
match = /^[ ]*([0-9]+|[ ]+)\|[ ]*([0-9]+)\|(.*)$/.match(line)
|
217
|
-
next unless match.to_a.count == 4
|
218
|
-
count, number, text = match.to_a[1..3]
|
219
|
-
|
220
|
-
execution_count = case count.strip
|
221
|
-
when ''
|
222
|
-
'-'.rjust(5)
|
223
|
-
when '0'
|
224
|
-
'#####'
|
225
|
-
else count
|
226
|
-
end
|
227
|
-
gcov_file[source_path] << "#{execution_count.rjust(5)}:#{number.rjust(5)}:#{text}"
|
228
|
-
end
|
229
|
-
|
230
|
-
gcov_file.each do |key, value|
|
231
|
-
gcon_path = File.join(File.dirname(profdata_path), "#{SecureRandom.urlsafe_base64(6)}-#{File.basename(target_path)}.gcov")
|
232
|
-
file = File::open(gcon_path, "w")
|
233
|
-
file.puts("#{'-'.rjust(5)}:#{'0'.rjust(5)}:Source:#{key}")
|
234
|
-
file.puts(value)
|
235
|
-
file.flush
|
236
|
-
end
|
202
|
+
|
203
|
+
sh *(cmd + opts)
|
237
204
|
end
|
238
|
-
|
205
|
+
|
239
206
|
def coverage_report(options)
|
240
207
|
settings = build_settings(options)
|
241
|
-
|
242
|
-
xcode_version = `xcodebuild -version`.split("\n").first.scan(/\d+/).join('.')
|
243
|
-
|
208
|
+
|
244
209
|
targetSettings = settings.select { |key, _| settings[key]['PRODUCT_TYPE'] != 'com.apple.product-type.bundle.unit-test' }
|
245
210
|
targetSettings.each do |target, settings|
|
246
211
|
objroot = settings['OBJROOT']
|
247
|
-
|
212
|
+
|
248
213
|
product_type = settings['PRODUCT_TYPE']
|
249
214
|
if product_type == 'com.apple.product-type.framework' || product_type == 'com.apple.product-type.application'
|
250
215
|
if sdk.start_with?('iphone') && settings['ONLY_ACTIVE_ARCH'] == 'NO'
|
@@ -256,17 +221,17 @@ module XCJobs
|
|
256
221
|
elsif
|
257
222
|
raise %[Product type (PRODUCT_TYPE) '#{product_type}' is unsupported.]
|
258
223
|
end
|
259
|
-
|
224
|
+
|
260
225
|
profdata_path = Dir.glob(File.join(objroot, '/**/Coverage.profdata')).first
|
261
|
-
|
262
|
-
|
263
|
-
|
226
|
+
|
227
|
+
show_coverage_report(profdata_path, target_path)
|
228
|
+
build_coverage_report(profdata_path, target_path)
|
264
229
|
end
|
265
230
|
end
|
266
|
-
|
231
|
+
|
267
232
|
def build_settings(options)
|
268
233
|
out, status = Open3.capture2(*(['xcodebuild', 'test'] + options + ['-showBuildSettings']))
|
269
|
-
|
234
|
+
|
270
235
|
settings, target = {}, nil
|
271
236
|
out.lines.each do |line|
|
272
237
|
case line
|
@@ -286,25 +251,26 @@ module XCJobs
|
|
286
251
|
raise 'cannot specify both a scheme and targets' if scheme && target
|
287
252
|
|
288
253
|
desc @description
|
289
|
-
task @name do
|
254
|
+
task @name do
|
290
255
|
add_build_setting('GCC_SYMBOLS_PRIVATE_EXTERN', 'NO')
|
291
256
|
|
292
|
-
run(['xcodebuild',
|
257
|
+
run(['xcodebuild', command] + options)
|
293
258
|
|
294
259
|
if coverage_enabled
|
295
260
|
coverage_report(options)
|
296
261
|
end
|
297
262
|
end
|
298
263
|
end
|
264
|
+
|
265
|
+
def command
|
266
|
+
'test'
|
267
|
+
end
|
299
268
|
end
|
300
269
|
|
301
270
|
class Build < Xcodebuild
|
302
|
-
attr_accessor :for_testing
|
303
|
-
|
304
271
|
def initialize(name = :build)
|
305
272
|
super
|
306
|
-
@description
|
307
|
-
@for_testing = false
|
273
|
+
@description ||= 'build application'
|
308
274
|
yield self if block_given?
|
309
275
|
define
|
310
276
|
end
|
@@ -324,9 +290,29 @@ module XCJobs
|
|
324
290
|
add_build_setting('CODE_SIGN_IDENTITY', signing_identity) if signing_identity
|
325
291
|
add_build_setting('PROVISIONING_PROFILE', provisioning_profile_uuid) if provisioning_profile_uuid
|
326
292
|
|
327
|
-
run(['xcodebuild',
|
293
|
+
run(['xcodebuild', command] + options)
|
328
294
|
end
|
329
295
|
end
|
296
|
+
|
297
|
+
def command
|
298
|
+
'build'
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
class TestWithoutBuilding < Build
|
303
|
+
private
|
304
|
+
|
305
|
+
def command
|
306
|
+
'test-without-building'
|
307
|
+
end
|
308
|
+
end
|
309
|
+
|
310
|
+
class BuildForTesting < Build
|
311
|
+
private
|
312
|
+
|
313
|
+
def command
|
314
|
+
'build-for-testing'
|
315
|
+
end
|
330
316
|
end
|
331
317
|
|
332
318
|
class Archive < Xcodebuild
|
@@ -334,7 +320,7 @@ module XCJobs
|
|
334
320
|
|
335
321
|
def initialize(name = :archive)
|
336
322
|
super
|
337
|
-
@description
|
323
|
+
@description ||= 'make xcarchive'
|
338
324
|
yield self if block_given?
|
339
325
|
define
|
340
326
|
end
|
@@ -393,7 +379,7 @@ module XCJobs
|
|
393
379
|
def initialize(name = :export)
|
394
380
|
super
|
395
381
|
self.unsetenv_others = true
|
396
|
-
@description
|
382
|
+
@description ||= 'export from an archive'
|
397
383
|
@export_format = 'IPA'
|
398
384
|
yield self if block_given?
|
399
385
|
define
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xcjobs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kishikawa katsumi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -119,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
119
119
|
version: '0'
|
120
120
|
requirements: []
|
121
121
|
rubyforge_project:
|
122
|
-
rubygems_version: 2.
|
122
|
+
rubygems_version: 2.6.11
|
123
123
|
signing_key:
|
124
124
|
specification_version: 4
|
125
125
|
summary: Support the automation of release process of iOS/OSX apps with CI
|