xcpretty 0.2.4 → 0.2.6

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: 093859ed58db9406724d77694f6664b45e24e716
4
- data.tar.gz: 1170dd4c63ab10c2d3ea785f99db697cb9b4dfdd
3
+ metadata.gz: 316a4833e8feac6ba8771d0d05dd592f5891392f
4
+ data.tar.gz: 4e26ec875ca5d4b4b0e6bafb4ddcb21fb75cf0fa
5
5
  SHA512:
6
- metadata.gz: 8b632dcdfd5b2c3eb2b874a2d0a6a3500290907565a1e70d8e1a2814aa2b5958269f7d80e7f861439c2a1e0da0b7c94d57491893b441e9ea020c43a8c7db6e8b
7
- data.tar.gz: c55f5c50f4e1d832ed84df1c67a07cbab241acd2aeb4046533df524862e08ef4f3b8374507064758e9f2eb387a952454386274f79f96e0e6ec1407c15e7a1806
6
+ metadata.gz: 2534ba94ce92988f947d9b70dd89e94a1175374878958566bb372f3f6d8b549bdfc0473cea21f3550516551862ea718e407640a9477bfead1c41f0db2846bcb7
7
+ data.tar.gz: e80e9f26fc78f4f07348dd049a52aac8f47d3c282cea927a6372bb86b3e703967ee9d5f17261748209b16541b9f15ebad1af44da7260c7871d42fe74298fc8bb
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.6
4
+
5
+ * Codesigning matchers improvements
6
+ * Screenshots parsing fixes
7
+
8
+ ###### Bug fixes
9
+
10
+ * Fix reporers crash by default ld warning implementation
11
+ | [iKiKi](https://github.com/iKiKi)
12
+ | [#187](https://github.com/supermarin/xcpretty/pull/187)
13
+
3
14
  ## 0.2.1
4
15
 
5
16
  ###### Bug fixes
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 Marin Usalj
1
+ Copyright (c) 2013-2016 Marin Usalj
2
2
 
3
3
  MIT License
4
4
 
data/Rakefile CHANGED
@@ -15,3 +15,4 @@ end
15
15
  task :lint do
16
16
  sh 'bundle exec rubocop'
17
17
  end
18
+
@@ -225,4 +225,9 @@ Feature: Showing build output in simple format
225
225
  Scenario: Showing code signing is required error
226
226
  Given the target requires code signing
227
227
  When I pipe to xcpretty with "--simple --no-color"
228
- Then I should see the code signing is requried message
228
+ Then I should see the code signing is requried message
229
+
230
+ Scenario: Showing no profile matching error
231
+ Given the matching profile is missing
232
+ When I pipe to xcpretty with "--simple --no-color"
233
+ Then I should see the no profile matching message
@@ -144,6 +144,10 @@ Given(/^the target requires code signing$/) do
144
144
  add_run_input SAMPLE_CODE_SIGNING_IS_REQUIRED_ERROR
145
145
  end
146
146
 
147
+ Given(/^the matching profile is missing$/) do
148
+ add_run_input SAMPLE_NO_PROFILE_MATCHING_ERROR
149
+ end
150
+
147
151
  Then(/^I should see a "(\w+)" completion message$/) do |phase|
148
152
  run_output.should start_with("▸ #{phase.capitalize} Succeeded")
149
153
  end
@@ -368,3 +372,7 @@ Then(/^I should see the code signing is requried message$/) do
368
372
  run_output.should include("Code signing is required for product type 'Application' in SDK 'iOS 10.0'")
369
373
  end
370
374
 
375
+ Then(/^I should see the no profile matching message$/) do
376
+ run_output.should include("No profile matching 'TargetName' found: Xcode couldn't find a profile matching 'TargetName'. Install the profile (by dragging and dropping it onto Xcode's dock item) or select a different one in the General tab of the target editor.")
377
+ end
378
+
@@ -167,10 +167,11 @@ module XCPretty
167
167
 
168
168
  def format_failure(f)
169
169
  snippet = Snippet.from_filepath(f[:file_path])
170
+ output = " #{f[:test_case]}, #{red(f[:reason])}"
171
+ output += "\n #{cyan(f[:file_path])}"
172
+ return output if snippet.contents.empty?
170
173
 
171
- output = " #{f[:test_case]}, #{red(f[:reason])}\n " \
172
- "#{cyan(f[:file_path])}\n ```\n"
173
-
174
+ output += "\n ```\n"
174
175
  if @colorize
175
176
  output += Syntax.highlight(snippet)
176
177
  else
@@ -60,7 +60,7 @@ module XCPretty
60
60
  # @regex Captured groups
61
61
  # $1 compiler_command
62
62
  # $2 file_path
63
- COMPILE_COMMAND_MATCHER = /^\s*(.*\/usr\/bin\/clang\s.*\s\-c\s(.*\.(?:m|mm|c|cc|cpp|cxx))\s.*\.o)$/
63
+ COMPILE_COMMAND_MATCHER = /^\s*(.*\/bin\/clang\s.*\s\-c\s(.*\.(?:m|mm|c|cc|cpp|cxx))\s.*\.o)$/
64
64
 
65
65
  # @regex Captured groups
66
66
  # $1 file_path
@@ -224,11 +224,15 @@ module XCPretty
224
224
 
225
225
  # @regex Captured groups
226
226
  # $1 = whole error
227
- CODESIGN_ERROR_MATCHER = /^(Code\s?Sign error:.*)$/
227
+ CHECK_DEPENDENCIES_ERRORS_MATCHER = /^(Code\s?Sign error:.*|Code signing is required for product type .* in SDK .*|No profile matching .* found:.*|Provisioning profile .* doesn't .*|Swift is unavailable on .*|.?Use Legacy Swift Language Version.*)$/
228
228
 
229
229
  # @regex Captured groups
230
230
  # $1 = whole error
231
- CODE_SIGNING_REQUIRED_MATCHER = /^(Code signing is required for product type .* in SDK .*)$/
231
+ PROVISIONING_PROFILE_REQUIRED_MATCHER = /^(.*requires a provisioning profile.*)$/
232
+
233
+ # @regex Captured groups
234
+ # $1 = whole error
235
+ NO_CERTIFICATE_MATCHER = /^(No certificate matching.*)$/
232
236
 
233
237
  # @regex Captured groups
234
238
  # $1 = file_path
@@ -240,10 +244,6 @@ module XCPretty
240
244
  # $1 cursor (with whitespaces and tildes)
241
245
  CURSOR_MATCHER = /^([\s~]*\^[\s~]*)$/
242
246
 
243
- # @regex Captured groups
244
- # $1 = whole message
245
- PROFILE_DOESNT_SUPPORT_OR_INCLUDE = /^(Provisioning profile .* doesn't .*)$/
246
-
247
247
  # @regex Captured groups
248
248
  # $1 = whole error.
249
249
  # it varies a lot, not sure if it makes sense to catch everything separately
@@ -328,9 +328,11 @@ module XCPretty
328
328
  formatter.format_codesign($1)
329
329
  when CODESIGN_MATCHER
330
330
  formatter.format_codesign($1)
331
- when CODESIGN_ERROR_MATCHER
331
+ when CHECK_DEPENDENCIES_ERRORS_MATCHER
332
+ formatter.format_error($1)
333
+ when PROVISIONING_PROFILE_REQUIRED_MATCHER
332
334
  formatter.format_error($1)
333
- when CODE_SIGNING_REQUIRED_MATCHER
335
+ when NO_CERTIFICATE_MATCHER
334
336
  formatter.format_error($1)
335
337
  when COMPILE_MATCHER
336
338
  formatter.format_compile($2, $1)
@@ -346,8 +348,6 @@ module XCPretty
346
348
  formatter.format_copy_plist_file($1, $2)
347
349
  when CPRESOURCE_MATCHER
348
350
  formatter.format_cpresource($1)
349
- when PROFILE_DOESNT_SUPPORT_OR_INCLUDE
350
- formatter.format_error($1)
351
351
  when EXECUTED_MATCHER
352
352
  format_summary_if_needed(text)
353
353
  when UI_FAILING_TEST_MATCHER
@@ -70,7 +70,10 @@ module XCPretty
70
70
  Dir.foreach(SCREENSHOT_DIR) do |item|
71
71
  next if item == '.' || item == '..' || File.extname(item) != '.png'
72
72
 
73
- suite_name = find_test_suite(item)
73
+ suite = item.split(".")
74
+ next if suite.empty?
75
+
76
+ suite_name = find_test_suite(suite[0])
74
77
  next if suite_name.nil?
75
78
 
76
79
  @test_suites[suite_name][:screenshots] << item
@@ -79,7 +82,7 @@ module XCPretty
79
82
 
80
83
  def find_test_suite(image_name)
81
84
  @test_suites.each do |key, value|
82
- return key if image_name.start_with?(key)
85
+ return key if image_name.start_with?(key.split('.').last)
83
86
  end
84
87
  nil
85
88
  end
@@ -1,4 +1,4 @@
1
1
  module XCPretty
2
- VERSION = "0.2.4"
2
+ VERSION = "0.2.6"
3
3
  end
4
4
 
@@ -582,6 +582,14 @@ SAMPLE_CODESIGN_ERROR_NO_SPACES = %Q(
582
582
  CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 7.0'
583
583
  )
584
584
 
585
+ SAMPLE_REQUIRES_PROVISION = %Q(
586
+ PROJECT_NAME requires a provisioning profile. Select a provisioning profile for the "Debug" build configuration in the project editor.
587
+ )
588
+
589
+ SAMPLE_NO_CERTIFICATE = %Q(
590
+ No certificate matching 'iPhone Distribution: Name (B89SBB0AV9)' for team 'B89SBB0AV9': Select a different signing certificate for CODE_SIGN_IDENTITY, a team that matches your selected certificate, or switch to automatic provisioning.
591
+ )
592
+
585
593
  SAMPLE_FATAL_COMPILE_ERROR = %Q(
586
594
  In file included from /Users/musalj/code/OSS/SampleApp/Pods/SuperCoolPod/SuperAwesomeClass.m:12:
587
595
  In file included from /Users/musalj/code/OSS/SampleApp/Pods/../LessCoolPod/LessCoolClass.h:9:
@@ -641,6 +649,14 @@ SAMPLE_CODE_SIGNING_IS_REQUIRED_ERROR = %Q(
641
649
  Code signing is required for product type 'Application' in SDK 'iOS 10.0'
642
650
  )
643
651
 
652
+ SAMPLE_NO_PROFILE_MATCHING_ERROR = %Q(
653
+ No profile matching 'TargetName' found: Xcode couldn't find a profile matching 'TargetName'. Install the profile (by dragging and dropping it onto Xcode's dock item) or select a different one in the General tab of the target editor.
654
+ )
655
+
656
+ SAMPLE_SWIFT_UNAVAILABLE = "Swift is unavailable on iOS earlier than 7.0; please set IPHONEOS_DEPLOYMENT_TARGET to 7.0 or later (currently it is '6.0')."
657
+
658
+ SAMPLE_USE_LEGACY_SWIFT = "“Use Legacy Swift Language Version” (SWIFT_VERSION) is required to be configured correctly for targets which use Swift. Use the [Edit > Convert > To Current Swift Syntax…] menu to choose a Swift version or use the Build Settings editor to configure the build setting directly."
659
+
644
660
  ################################################################################
645
661
  # WARNINGS
646
662
  ################################################################################
@@ -103,18 +103,21 @@ module XCPretty
103
103
  second_path = File.expand_path('spec/fixtures/NSStringTests.m:57')
104
104
 
105
105
  failures = {
106
- 'CarSpec' => [
107
- {
108
- file_path: first_path,
109
- reason: "just doesn't work",
110
- test_case: 'Starting the car'
111
- }],
112
- 'StringSpec' => [
113
- {
114
- file_path: second_path,
115
- reason: "doesn't split",
116
- test_case: 'Splitting the string'
117
- }]
106
+ 'CarSpec' => [{
107
+ file_path: first_path,
108
+ reason: "just doesn't work",
109
+ test_case: 'Starting the car'
110
+ }],
111
+ 'StringSpec' => [{
112
+ file_path: second_path,
113
+ reason: "doesn't split",
114
+ test_case: 'Splitting the string'
115
+ }],
116
+ 'UI spec' => [{
117
+ file_path: "<unknown.m>:0",
118
+ reason: "ui test failed",
119
+ test_case: 'yolo'
120
+ }]
118
121
  }
119
122
  @formatter.format_test_summary(SAMPLE_EXECUTED_TESTS, failures).should == %Q(
120
123
 
@@ -136,6 +139,10 @@ StringSpec
136
139
  });
137
140
  ```
138
141
 
142
+ UI spec
143
+ yolo, #{@formatter.red("ui test failed")}
144
+ #{@formatter.cyan("<unknown.m>:0")}
145
+
139
146
 
140
147
  #{@formatter.red(SAMPLE_EXECUTED_TESTS)})
141
148
  end
@@ -452,6 +452,41 @@ module XCPretty
452
452
  @parser.parse(SAMPLE_CODESIGN_ERROR_NO_SPACES)
453
453
  end
454
454
 
455
+ it "parses No profile matching error:" do
456
+ @formatter.should receive(:format_error).with(
457
+ "No profile matching 'TargetName' found: Xcode couldn't find a profile matching 'TargetName'. Install the profile (by dragging and dropping it onto Xcode's dock item) or select a different one in the General tab of the target editor."
458
+ )
459
+ @parser.parse(SAMPLE_NO_PROFILE_MATCHING_ERROR)
460
+ end
461
+
462
+ it "parses requires provision error:" do
463
+ @formatter.should receive(:format_error).with(
464
+ 'PROJECT_NAME requires a provisioning profile. Select a provisioning profile for the "Debug" build configuration in the project editor.'
465
+ )
466
+ @parser.parse(SAMPLE_REQUIRES_PROVISION)
467
+ end
468
+
469
+ it "parses no certificate error:" do
470
+ @formatter.should receive(:format_error).with(
471
+ "No certificate matching 'iPhone Distribution: Name (B89SBB0AV9)' for team 'B89SBB0AV9': Select a different signing certificate for CODE_SIGN_IDENTITY, a team that matches your selected certificate, or switch to automatic provisioning."
472
+ )
473
+ @parser.parse(SAMPLE_NO_CERTIFICATE)
474
+ end
475
+
476
+ it "parses swift unavailable error:" do
477
+ @formatter.should receive(:format_error).with(
478
+ SAMPLE_SWIFT_UNAVAILABLE
479
+ )
480
+ @parser.parse(SAMPLE_SWIFT_UNAVAILABLE)
481
+ end
482
+
483
+ it "parses use legacy swift error:" do
484
+ @formatter.should receive(:format_error).with(
485
+ SAMPLE_USE_LEGACY_SWIFT
486
+ )
487
+ @parser.parse(SAMPLE_USE_LEGACY_SWIFT)
488
+ end
489
+
455
490
  it "parses ld library errors" do
456
491
  @formatter.should receive(:format_error).with(
457
492
  SAMPLE_LD_LIBRARY_ERROR
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xcpretty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marin Usalj
@@ -9,62 +9,62 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-10-11 00:00:00.000000000 Z
12
+ date: 2017-03-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rouge
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: '1.8'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '1.8'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: bundler
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
34
  version: '1.3'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '1.3'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rake
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - '>='
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - '>='
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rubocop
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ~>
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: 0.34.0
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ~>
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: 0.34.0
70
70
  - !ruby/object:Gem::Dependency
@@ -85,14 +85,14 @@ dependencies:
85
85
  name: cucumber
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ~>
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
90
  version: '1.0'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ~>
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: '1.0'
98
98
  description: "\n Xcodebuild formatter designed to be piped with `xcodebuild`,\n
@@ -106,11 +106,11 @@ executables:
106
106
  extensions: []
107
107
  extra_rdoc_files: []
108
108
  files:
109
- - .gitignore
110
- - .hound.yml
111
- - .kick
112
- - .rubocop.yml
113
- - .travis.yml
109
+ - ".gitignore"
110
+ - ".hound.yml"
111
+ - ".kick"
112
+ - ".rubocop.yml"
113
+ - ".travis.yml"
114
114
  - CHANGELOG.md
115
115
  - CONTRIBUTING.md
116
116
  - Gemfile
@@ -189,17 +189,17 @@ require_paths:
189
189
  - lib
190
190
  required_ruby_version: !ruby/object:Gem::Requirement
191
191
  requirements:
192
- - - '>='
192
+ - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: 2.0.0
195
195
  required_rubygems_version: !ruby/object:Gem::Requirement
196
196
  requirements:
197
- - - '>='
197
+ - - ">="
198
198
  - !ruby/object:Gem::Version
199
199
  version: '0'
200
200
  requirements: []
201
201
  rubyforge_project:
202
- rubygems_version: 2.6.6
202
+ rubygems_version: 2.0.14.1
203
203
  signing_key:
204
204
  specification_version: 4
205
205
  summary: xcodebuild formatter done right