slather 2.4.4 → 2.4.5

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
- SHA1:
3
- metadata.gz: f140d82b4571c441455df1b9eb9c247f8f52e310
4
- data.tar.gz: eeaac677b8b341cb92479c16cbdd2bd6254c85de
2
+ SHA256:
3
+ metadata.gz: 10b576bd7bfd395102e3d01454d5f74fdccb560d58b629b5ce88ac7ebcf1aacc
4
+ data.tar.gz: 21c39f7fe553b008f08f882c7192721b6c0574ec728c7e9d7e6343ab6e0b80a5
5
5
  SHA512:
6
- metadata.gz: ebac089dfe9785ab980a86d6f3020a9c700f01edd1d3dcdb170c82faccc553cb5a4d7143a30c6432af7c606de9902fd42737f12233d136240aeb01e0ce415a21
7
- data.tar.gz: e3a00efe762b6062a33ef42d30cbdadc4b03444f3f36538bc23b98988659587aace4a6d9fa346ab8a7d5367072fded337dd600efff2e28d5181fd98b366ff10c
6
+ metadata.gz: 9e8838d258c9570193e9a3d161da02a6ff03f8797c2e85aa3a88c9ff3393d35724da8b66c7a332db543dabec1dd381a6c85821b44e91b4c1796e8c133aed5467
7
+ data.tar.gz: 96b08ba6c91367fe39efba771caa07cad57208ce8cdb6cce11aa60229a864ca044c4978c9d1d58f3779247476440777898c57acd2bf8b1f31ffddb0bf37d1948
@@ -1,20 +1,10 @@
1
1
  language: objective-c
2
2
  script: bundle exec rake
3
- osx_image: xcode8.3
4
-
5
- # Sets Travis to run the Ruby specs on OS X machines which are required to
6
- # build the native extensions of Xcodeproj.
7
-
8
- env:
9
- - RVM_RUBY_VERSION=system
3
+ osx_image: xcode9.2
10
4
 
11
5
  before_install:
12
6
  - curl http://curl.haxx.se/ca/cacert.pem -o /usr/local/share/cacert.pem
13
- - source ~/.rvm/scripts/rvm
14
- - if [[ $RVM_RUBY_VERSION != 'system' ]]; then rvm install $RVM_RUBY_VERSION; fi
15
- - rvm use $RVM_RUBY_VERSION
16
- - if [[ $RVM_RUBY_VERSION == 'system' ]]; then export ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future; fi
17
- - if [[ $RVM_RUBY_VERSION == 'system' ]]; then sudo gem install bundler --no-ri --no-rdoc; else gem install bundler --no-ri --no-rdoc; fi
7
+ - gem install bundler --no-ri --no-rdoc
18
8
 
19
9
  install:
20
10
  - bundle install --without=documentation
@@ -1,9 +1,24 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v2.4.5
4
+
5
+ * Support for specifying a specific binary architecture
6
+ [ksuther](https://github.com/ksuther), [nickolas-pohilets](https://github.com/nickolas-pohilets)
7
+ [#367](https://github.com/SlatherOrg/slather/pull/367)
8
+
9
+ * Added absolute statement count to simple output (instead of showing just a percentage)
10
+ [barrault01](https://github.com/barrault01), [ivanbrunel](https://github.com/ivanbruel)
11
+ [#365](https://github.com/SlatherOrg/slather/pull/365)
12
+
13
+ * Updated nokogiri dependency version
14
+ [#363](https://github.com/SlatherOrg/slather/issues/363), [#366](https://github.com/SlatherOrg/slather/pull/366)
15
+
16
+ * slather now requires ruby 2.1 or later (10.13 ships with 2.3.3)
17
+
3
18
  ## v2.4.4
4
19
 
5
20
  * Added llvm-cov output format
6
- [lampietti](https://github.com/sgtsquiggs) [#354](https://github.com/SlatherOrg/slather/pull/354)
21
+ [sgtsquiggs](https://github.com/sgtsquiggs) [#354](https://github.com/SlatherOrg/slather/pull/354)
7
22
 
8
23
  * Exclude swiftmodule from product search
9
24
  [lampietti](https://github.com/lampietti) [#352](https://github.com/SlatherOrg/slather/pull/352)
data/README.md CHANGED
@@ -61,6 +61,12 @@ If you use a different configuration for your tests:
61
61
  $ slather coverage -s --scheme YourXcodeSchemeName --configuration YourBuildConfigurationName path/to/project.xcodeproj
62
62
  ```
63
63
 
64
+ If your configuration produces a universal binary you need to specify a specific architecture to use:
65
+
66
+ ```sh
67
+ $ slather coverage -s --arch x86_64 --scheme YourXcodeSchemeName --configuration YourBuildConfigurationName path/to/project.xcodeproj
68
+ ```
69
+
64
70
  ### Setup for Xcode 5 and 6
65
71
 
66
72
  Run this command to enable the `Generate Test Coverage` and `Instrument Program Flow` flags for your project:
@@ -30,6 +30,7 @@ class CoverageCommand < Clamp::Command
30
30
  option ["--workspace"], "WORKSPACE", "The workspace that the project was built in"
31
31
  option ["--binary-file"], "BINARY_FILE", "The binary file against the which the coverage will be run", :multivalued => true
32
32
  option ["--binary-basename"], "BINARY_BASENAME", "Basename of the file against which the coverage will be run", :multivalued => true
33
+ option ["--arch"], "ARCH", "Architecture to use from universal binaries"
33
34
  option ["--source-files"], "SOURCE_FILES", "A Dir.glob compatible pattern used to limit the lookup to specific source files. Ignored in gcov mode.", :multivalued => true
34
35
  option ["--decimals"], "DECIMALS", "The amount of decimals to use for % coverage reporting"
35
36
 
@@ -49,6 +50,7 @@ class CoverageCommand < Clamp::Command
49
50
  setup_workspace
50
51
  setup_binary_file
51
52
  setup_binary_basename
53
+ setup_arch
52
54
  setup_source_files
53
55
  setup_decimals
54
56
 
@@ -153,6 +155,10 @@ class CoverageCommand < Clamp::Command
153
155
  project.binary_basename = binary_basename_list if !binary_basename_list.empty?
154
156
  end
155
157
 
158
+ def setup_arch
159
+ project.arch = arch
160
+ end
161
+
156
162
  def setup_source_files
157
163
  project.source_files = source_files_list if !source_files_list.empty?
158
164
  end
@@ -43,6 +43,7 @@ module Slather
43
43
  end
44
44
 
45
45
  total_percentage = decimal_f([(total_project_lines_tested / total_project_lines.to_f) * 100.0])
46
+ puts "Tested #{total_project_lines_tested}/#{total_project_lines} statements"
46
47
  puts "Test Coverage: #{total_percentage}%"
47
48
  end
48
49
 
@@ -44,7 +44,7 @@ module Slather
44
44
  class Project < Xcodeproj::Project
45
45
 
46
46
  attr_accessor :build_directory, :ignore_list, :ci_service, :coverage_service, :coverage_access_token, :source_directory,
47
- :output_directory, :xcodeproj, :show_html, :verbose_mode, :input_format, :scheme, :workspace, :binary_file, :binary_basename, :source_files,
47
+ :output_directory, :xcodeproj, :show_html, :verbose_mode, :input_format, :scheme, :workspace, :binary_file, :binary_basename, :arch, :source_files,
48
48
  :decimals, :llvm_version, :configuration
49
49
 
50
50
  alias_method :setup_for_coverage, :slather_setup_for_coverage
@@ -212,6 +212,9 @@ module Slather
212
212
  end
213
213
 
214
214
  llvm_cov_args = %W(show -instr-profile #{profdata_file_arg} #{binary_path})
215
+ if self.arch
216
+ llvm_cov_args << "--arch" << self.arch
217
+ end
215
218
  `xcrun llvm-cov #{llvm_cov_args.shelljoin} #{source_files.shelljoin}`
216
219
  end
217
220
  private :unsafe_profdata_llvm_cov_output
@@ -248,6 +251,7 @@ module Slather
248
251
  configure_source_directory
249
252
  configure_output_directory
250
253
  configure_input_format
254
+ configure_arch
251
255
  configure_binary_file
252
256
  configure_decimals
253
257
 
@@ -370,6 +374,10 @@ module Slather
370
374
  end
371
375
  end
372
376
 
377
+ def configure_arch
378
+ self.arch ||= self.class.yml["arch"] if self.class.yml["arch"]
379
+ end
380
+
373
381
  def decimal_f decimal_arg
374
382
  configure_decimals unless decimals
375
383
  decimal = "%.#{decimals}f" % decimal_arg
@@ -438,6 +446,12 @@ module Slather
438
446
  }.reject { |path|
439
447
  path.end_with? ".dSYM"
440
448
  path.end_with? ".swiftmodule"
449
+
450
+ if path and File.directory? path
451
+ path = find_binary_file_in_bundle(path)
452
+ end
453
+
454
+ !matches_arch(path)
441
455
  }.first
442
456
 
443
457
  if found_product and File.directory? found_product
@@ -517,6 +531,16 @@ module Slather
517
531
  found_buildable_names.uniq
518
532
  end
519
533
 
534
+ def matches_arch(binary_path)
535
+ if self.arch
536
+ lipo_output = `lipo -info "#{binary_path}"`
537
+ archs_in_binary = lipo_output.split(':').last.split(' ')
538
+ archs_in_binary.include? self.arch
539
+ else
540
+ true
541
+ end
542
+ end
543
+
520
544
  def find_source_files
521
545
  source_files = load_option_array("source_files")
522
546
  return if source_files.nil?
@@ -1,3 +1,3 @@
1
1
  module Slather
2
- VERSION = '2.4.4' unless defined?(Slather::VERSION)
2
+ VERSION = '2.4.5' unless defined?(Slather::VERSION)
3
3
  end
@@ -29,9 +29,8 @@ Gem::Specification.new do |spec|
29
29
 
30
30
  spec.add_dependency 'clamp', '~> 0.6'
31
31
  spec.add_dependency 'xcodeproj', '~> 1.4'
32
- spec.add_dependency 'nokogiri', '>= 1.6', '< 1.7'
32
+ spec.add_dependency 'nokogiri', '~> 1.8.2'
33
33
  spec.add_dependency 'CFPropertyList', '~> 2.2'
34
34
 
35
- ## Version 5 needs Ruby 2.2, so we specify an upper bound to stay compatible with system ruby
36
- spec.add_runtime_dependency 'activesupport', '>= 4.0.2', '< 5'
35
+ spec.add_runtime_dependency 'activesupport', '>= 4.0.2'
37
36
  end
@@ -25,6 +25,7 @@ describe Slather::CoverageService::SimpleOutput do
25
25
  "spec/fixtures/fixturesTests/fixturesTests.m: 17 of 17 lines (100.00%)",
26
26
  "spec/fixtures/fixturesTests/peekaviewTests💣.m: 11 of 11 lines (100.00%)",
27
27
  "spec/fixtures/fixturesTwo/fixturesTwo.m: 6 of 6 lines (100.00%)",
28
+ "Tested 66/86 statements",
28
29
  "Test Coverage: 76.74%"
29
30
  ].each do |line|
30
31
  expect(fixtures_project).to receive(:puts).with(line)
@@ -47,6 +48,7 @@ describe Slather::CoverageService::SimpleOutput do
47
48
  "spec/fixtures/fixturesTwo/fixturesTwo.m: 6 of 6 lines (100.00%)",
48
49
  "##teamcity[buildStatisticValue key='CodeCoverageAbsLCovered' value='66']",
49
50
  "##teamcity[buildStatisticValue key='CodeCoverageAbsLTotal' value='86']",
51
+ "Tested 66/86 statements",
50
52
  "Test Coverage: 76.74%"
51
53
  ].each do |line|
52
54
  expect(fixtures_project).to receive(:puts).with(line)
@@ -163,12 +163,19 @@ describe Slather::Project do
163
163
 
164
164
  it "should find the product path for a scheme with no buildable products" do
165
165
  allow(fixtures_project).to receive(:scheme).and_return("fixturesTests")
166
+ allow(fixtures_project).to receive(:arch).and_return("x86_64")
166
167
  fixtures_project.send(:configure_binary_file)
167
168
  binary_file_location = fixtures_project.send(:binary_file)
168
169
  expect(binary_file_location.count).to eq(1)
169
170
  expect(binary_file_location.first).to end_with("Debug/fixturesTests.xctest/Contents/MacOS/fixturesTests")
170
171
  end
171
172
 
173
+ it "should not find a product path for an invalid architecture" do
174
+ allow(fixtures_project).to receive(:scheme).and_return("fixturesTests")
175
+ allow(fixtures_project).to receive(:arch).and_return("arm64")
176
+ expect { fixtures_project.send(:configure_binary_file) }.to raise_error.with_message(/No product binary found in (.+)./)
177
+ end
178
+
172
179
  it "should find multiple unique paths for a scheme with serveral buildable/testable products" do
173
180
  allow(fixtures_project).to receive(:scheme).and_return("aggregateFixturesTests")
174
181
  fixtures_project.send(:configure_binary_file)
@@ -509,9 +516,9 @@ describe Slather::Project do
509
516
  it "should print out environment info when in verbose_mode" do
510
517
  project_root = Pathname("./").realpath
511
518
 
512
- ["\nProcessing coverage file: #{project_root}/spec/DerivedData/libfixtures/Build/Intermediates/CodeCoverage/Coverage.profdata",
519
+ [/\nProcessing coverage file: #{project_root}\/spec\/DerivedData\/libfixtures\/Build\/ProfileData\/[A-Z0-9-]+\/Coverage.profdata/,
513
520
  "Against binary files:",
514
- "\t#{project_root}/spec/DerivedData/libfixtures/Build/Intermediates/CodeCoverage/Products/Debug/fixturesTests.xctest/Contents/MacOS/fixturesTests",
521
+ "\t#{project_root}/spec/DerivedData/libfixtures/Build/Products/Debug/fixturesTests.xctest/Contents/MacOS/fixturesTests",
515
522
  "\n"
516
523
  ].each do |line|
517
524
  expect(fixtures_project).to receive(:puts).with(line)
@@ -525,7 +532,7 @@ describe Slather::Project do
525
532
 
526
533
  project_root = Pathname("./").realpath
527
534
 
528
- ["\nProcessing coverage file: #{project_root}/spec/DerivedData/libfixtures/Build/Intermediates/CodeCoverage/Coverage.profdata",
535
+ [/\nProcessing coverage file: #{project_root}\/spec\/DerivedData\/libfixtures\/Build\/ProfileData\/[A-Z0-9-]+\/Coverage.profdata/,
529
536
  "No binary files found.",
530
537
  "\n",
531
538
  ].each do |line|
@@ -558,6 +565,7 @@ describe Slather::Project do
558
565
  it "should print out the coverage for each file, and then total coverage" do
559
566
  ["spec/fixtures/fixtures/fixtures.m: 3 of 6 lines (50.00%)",
560
567
  "spec/fixtures/fixturesTwo/fixturesTwo.m: 6 of 6 lines (100.00%)",
568
+ "Tested 9/12 statements",
561
569
  "Test Coverage: 75.00%"
562
570
  ].each do |line|
563
571
  expect(fixtures_project).to receive(:puts).with(line)
@@ -587,7 +595,7 @@ describe Slather::Project do
587
595
  let(:configuration) { 'Debug' }
588
596
  let(:project_root) { Pathname("./").realpath }
589
597
  let(:coverage_dir) { "#{project_root}/spec/DerivedData/DerivedData/Build/Intermediates/CodeCoverage" }
590
- let(:search_dir) { "#{coverage_dir}/Products/#{configuration}*/fixtures*" }
598
+ let(:search_dir) { "#{coverage_dir}/../../Products/#{configuration}*/fixtures*" }
591
599
  let(:binary_file) { "#{coverage_dir}/Products/#{configuration}-iphonesimulator/fixtures.app/fixtures" }
592
600
 
593
601
  before do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slather
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.4
4
+ version: 2.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Larsen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-03 00:00:00.000000000 Z
11
+ date: 2018-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -168,22 +168,16 @@ dependencies:
168
168
  name: nokogiri
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- version: '1.6'
174
- - - "<"
171
+ - - "~>"
175
172
  - !ruby/object:Gem::Version
176
- version: '1.7'
173
+ version: 1.8.2
177
174
  type: :runtime
178
175
  prerelease: false
179
176
  version_requirements: !ruby/object:Gem::Requirement
180
177
  requirements:
181
- - - ">="
182
- - !ruby/object:Gem::Version
183
- version: '1.6'
184
- - - "<"
178
+ - - "~>"
185
179
  - !ruby/object:Gem::Version
186
- version: '1.7'
180
+ version: 1.8.2
187
181
  - !ruby/object:Gem::Dependency
188
182
  name: CFPropertyList
189
183
  requirement: !ruby/object:Gem::Requirement
@@ -205,9 +199,6 @@ dependencies:
205
199
  - - ">="
206
200
  - !ruby/object:Gem::Version
207
201
  version: 4.0.2
208
- - - "<"
209
- - !ruby/object:Gem::Version
210
- version: '5'
211
202
  type: :runtime
212
203
  prerelease: false
213
204
  version_requirements: !ruby/object:Gem::Requirement
@@ -215,9 +206,6 @@ dependencies:
215
206
  - - ">="
216
207
  - !ruby/object:Gem::Version
217
208
  version: 4.0.2
218
- - - "<"
219
- - !ruby/object:Gem::Version
220
- version: '5'
221
209
  description:
222
210
  email:
223
211
  - mark@venmo.com
@@ -338,7 +326,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
338
326
  version: '0'
339
327
  requirements: []
340
328
  rubyforge_project:
341
- rubygems_version: 2.6.8
329
+ rubygems_version: 2.7.3
342
330
  signing_key:
343
331
  specification_version: 4
344
332
  summary: Test coverage reports for Xcode projects