xcpretty 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/README.md +2 -3
- data/lib/xcpretty/formatters/formatter.rb +7 -3
- data/lib/xcpretty/parser.rb +12 -0
- data/lib/xcpretty/version.rb +1 -1
- data/spec/fixtures/constants.rb +6 -1
- data/spec/xcpretty/formatters/formatter_spec.rb +2 -2
- data/spec/xcpretty/parser_spec.rb +21 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b78a4012d3b1df36cbd26eee764159f4a2ee5e14
|
4
|
+
data.tar.gz: 8744a4e46db1e1983611a445b733208c4d12f177
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e7ff5c8ce55088cd935aa120aec5bbe154f876201211d193345349372a5e3100a0f38c2d55c460e2c380ddebfee1f9f9d1e0eee1f0fc930d95a512e27fe1339
|
7
|
+
data.tar.gz: b54c6a0c5d506252a6ae6eb07ee0ddbb40d468757f104decf4219b357527f40eb33f8ac8664a3b221de88d083c613b30f0c4534925489e85452f8443cc1d5daf
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -17,9 +17,8 @@ XCPretty is designed to be piped with `xcodebuild` and thus keeping 100% compati
|
|
17
17
|
This means, when `xcodebuild` works, `xcpretty` works.
|
18
18
|
It's even a bit faster than `xcodebuild` only, since it saves your terminal some prints.
|
19
19
|
|
20
|
-
__Important:__
|
21
|
-
|
22
|
-
`xcodebuild`, add this to the end of pipe:
|
20
|
+
__Important:__ lots of CIs are using exit status for determining if build has
|
21
|
+
failed. You probably want to exit with the same status code as `xcodebuild`.
|
23
22
|
|
24
23
|
```
|
25
24
|
xcodebuild ... | xcpretty -c; exit ${PIPESTATUS[0]}
|
@@ -85,15 +85,15 @@ module XCPretty
|
|
85
85
|
ASCII_ERROR = "[!]"
|
86
86
|
|
87
87
|
def format_error(message)
|
88
|
-
red(
|
88
|
+
"\n#{red(error_symbol + " " + message)}\n\n"
|
89
89
|
end
|
90
90
|
|
91
91
|
def format_compile_error(file, file_path, reason, line, cursor)
|
92
|
-
"\n#{file_path}: #{red(reason)}\n\n#{line}\n#{cyan(cursor)}\n\n"
|
92
|
+
"\n#{red(error_symbol + " ")}#{file_path}: #{red(reason)}\n\n#{line}\n#{cyan(cursor)}\n\n"
|
93
93
|
end
|
94
94
|
|
95
95
|
def format_linker_failure(message, symbol, reference)
|
96
|
-
"\n#{red("
|
96
|
+
"\n#{red(error_symbol + " " + message)}\n> Symbol: #{symbol}\n> Referenced from: #{reference}\n\n"
|
97
97
|
end
|
98
98
|
|
99
99
|
|
@@ -109,5 +109,9 @@ module XCPretty
|
|
109
109
|
end.join("\n")
|
110
110
|
end
|
111
111
|
|
112
|
+
def error_symbol
|
113
|
+
use_unicode? ? ERROR : ASCII_ERROR
|
114
|
+
end
|
115
|
+
|
112
116
|
end
|
113
117
|
end
|
data/lib/xcpretty/parser.rb
CHANGED
@@ -16,6 +16,10 @@ module XCPretty
|
|
16
16
|
# @regex Nothing returned here for now
|
17
17
|
CHECK_DEPENDENCIES_MATCHER = /^Check dependencies/
|
18
18
|
|
19
|
+
# @regex Captured groups
|
20
|
+
# $1 = whole error
|
21
|
+
CLANG_ERROR_MATCHER = /^(clang: error:.*)$/
|
22
|
+
|
19
23
|
# @regex Nothing returned here for now
|
20
24
|
CLEAN_REMOVE_MATCHER = /^Clean.Remove/
|
21
25
|
|
@@ -89,6 +93,10 @@ module XCPretty
|
|
89
93
|
# $1 = library
|
90
94
|
LIBTOOL_MATCHER = /^Libtool.*\/(.*\.a)/
|
91
95
|
|
96
|
+
# @regex Captured groups
|
97
|
+
# $1 = whole error
|
98
|
+
LD_ERROR_MATCHER = /^(ld:.*not found for.*)/
|
99
|
+
|
92
100
|
# @regex Captured groups
|
93
101
|
# $1 reason
|
94
102
|
LINKER_FAILURE_MATCHER = /^(Undefined symbols for architecture .*):$/
|
@@ -191,6 +199,8 @@ module XCPretty
|
|
191
199
|
formatter.format_copy_strings_file($1)
|
192
200
|
when CHECK_DEPENDENCIES_MATCHER
|
193
201
|
formatter.format_check_dependencies
|
202
|
+
when CLANG_ERROR_MATCHER
|
203
|
+
formatter.format_error($1)
|
194
204
|
when CODESIGN_FRAMEWORK_MATCHER
|
195
205
|
formatter.format_codesign($1)
|
196
206
|
when CODESIGN_MATCHER
|
@@ -211,6 +221,8 @@ module XCPretty
|
|
211
221
|
formatter.format_error($1)
|
212
222
|
when GENERATE_DSYM_MATCHER
|
213
223
|
formatter.format_generate_dsym($1)
|
224
|
+
when LD_ERROR_MATCHER
|
225
|
+
formatter.format_error($1)
|
214
226
|
when LIBTOOL_MATCHER
|
215
227
|
formatter.format_libtool($1)
|
216
228
|
when LINKING_MATCHER
|
data/lib/xcpretty/version.rb
CHANGED
data/spec/fixtures/constants.rb
CHANGED
@@ -523,5 +523,10 @@ Undefined symbols for architecture x86_64:
|
|
523
523
|
"_OBJC_CLASS_$_CABasicAnimation", referenced from:
|
524
524
|
objc-class-ref in ATZRadialProgressControl.o
|
525
525
|
ld: symbol(s) not found for architecture x86_64
|
526
|
-
clang: error: linker command failed with exit code 1 (use -v to see invocation)
|
527
526
|
)
|
527
|
+
|
528
|
+
SAMPLE_LD_SYMBOLS_ERROR = 'ld: symbol(s) not found for architecture x86_64'
|
529
|
+
SAMPLE_LD_LIBRARY_ERROR = 'ld: library not found for -lPods-Yammer'
|
530
|
+
|
531
|
+
SAMPLE_CLANG_ERROR = 'clang: error: linker command failed with exit code 1 (use -v to see invocation)'
|
532
|
+
|
@@ -24,7 +24,7 @@ module XCPretty
|
|
24
24
|
|
25
25
|
it "formats cocoapods errors" do
|
26
26
|
@formatter.format_error("The sandbox is not in sync...").should ==
|
27
|
-
"#{@formatter.red("⌦ The sandbox is not in sync...")}"
|
27
|
+
"\n#{@formatter.red("⌦ The sandbox is not in sync...")}\n\n"
|
28
28
|
end
|
29
29
|
|
30
30
|
it "formats compiling errors" do
|
@@ -32,7 +32,7 @@ module XCPretty
|
|
32
32
|
"[a should",
|
33
33
|
" ^").should ==
|
34
34
|
%Q(
|
35
|
-
path/to/file: #{@formatter.red("expected valid syntax")}
|
35
|
+
#{@formatter.red('⌦ ')}path/to/file: #{@formatter.red("expected valid syntax")}
|
36
36
|
|
37
37
|
[a should
|
38
38
|
#{@formatter.cyan(" ^")}
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'xcpretty'
|
2
4
|
require 'xcpretty/parser'
|
3
5
|
require 'fixtures/constants'
|
@@ -182,6 +184,11 @@ module XCPretty
|
|
182
184
|
|
183
185
|
context "errors" do
|
184
186
|
|
187
|
+
it "parses clang errors" do
|
188
|
+
@formatter.should receive(:format_error).with(SAMPLE_CLANG_ERROR)
|
189
|
+
@parser.parse(SAMPLE_CLANG_ERROR)
|
190
|
+
end
|
191
|
+
|
185
192
|
it "parses cocoapods errors" do
|
186
193
|
@formatter.should receive(:format_error).with("The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.")
|
187
194
|
@parser.parse(SAMPLE_PODS_ERROR)
|
@@ -259,6 +266,20 @@ module XCPretty
|
|
259
266
|
@parser.parse(SAMPLE_CODESIGN_ERROR_NO_SPACES)
|
260
267
|
end
|
261
268
|
|
269
|
+
it "parses ld library errors" do
|
270
|
+
@formatter.should receive(:format_error).with(
|
271
|
+
SAMPLE_LD_LIBRARY_ERROR
|
272
|
+
)
|
273
|
+
@parser.parse(SAMPLE_LD_LIBRARY_ERROR)
|
274
|
+
end
|
275
|
+
|
276
|
+
it 'parses ld symbols errors' do
|
277
|
+
@formatter.should receive(:format_error).with(
|
278
|
+
SAMPLE_LD_SYMBOLS_ERROR
|
279
|
+
)
|
280
|
+
@parser.parse(SAMPLE_LD_SYMBOLS_ERROR)
|
281
|
+
end
|
282
|
+
|
262
283
|
it "doesn't print the same error over and over" do
|
263
284
|
SAMPLE_COMPILE_ERROR.each_line do |line|
|
264
285
|
@parser.parse(line)
|
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.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marin Usalj
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-01-
|
12
|
+
date: 2014-01-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|