guard-ocunit 0.1.1 → 0.1.2
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/README.md +3 -17
- data/lib/guard/ocunit/formatter.rb +68 -4
- data/lib/guard/ocunit/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9e3e4a66b277e0f15f809a0b545d34fdda13f57
|
4
|
+
data.tar.gz: 787243eec56230d7b9375f828bfe29583dacb774
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 28d7add451ce1979eb0473c9d1c4ae90da4cffce046c987747f5f202b26af89930477a50d2072e6c7eea2cfb9d3e0b4f706feb66462692bc56e5dd8939fcf5c3
|
7
|
+
data.tar.gz: 45e13926518e42ece3652047ec416ec7fd8025e69d1ebfc722e2ecbf07ad13907574eef8cc8324e83b093dd17c2eab5e57c034218b9cb16971d8015b9db89dff
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Guard::OCUnit [](http://travis-ci.org/ap4y/guard-ocunit)
|
2
2
|
|
3
|
-
OCUnit guard allows to automatically launch
|
3
|
+
OCUnit guard allows to automatically launch tests when files are modified.
|
4
4
|
|
5
5
|
* Compatible with XCode 4.x
|
6
6
|
* Tested with XCode 4.5.
|
@@ -9,32 +9,18 @@ OCUnit guard allows to automatically launch `OCUnit` tests when files source fil
|
|
9
9
|
|
10
10
|
Please be sure to have [Guard](https://github.com/guard/guard) and [ios-sim](https://github.com/phonegap/ios-sim) installed before continue. `guard-ocunit` uses `ios-sim` for running `application` tests from command line, for more info refer to the [SO](http://stackoverflow.com/questions/12557935/xcode-4-5-command-line-unit-testing) question.
|
11
11
|
|
12
|
-
|
12
|
+
Install the gem:
|
13
13
|
|
14
14
|
```
|
15
15
|
$ gem install guard-ocunit
|
16
16
|
```
|
17
17
|
|
18
|
-
|
18
|
+
Add guard definition to your Guardfile by running this command:
|
19
19
|
|
20
20
|
```
|
21
21
|
$ guard init ocunit
|
22
22
|
```
|
23
23
|
|
24
|
-
* Change `Run Script` phase for test target to:
|
25
|
-
|
26
|
-
```bash
|
27
|
-
if [ "$RUN_UNIT_TEST_WITH_IOS_SIM" = "YES" ]; then
|
28
|
-
test_bundle_path="$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.$WRAPPER_EXTENSION"
|
29
|
-
ios-sim launch "$(dirname "$TEST_HOST")" --setenv DYLD_INSERT_LIBRARIES=/../../Library/PrivateFrameworks/IDEBundleInjection.framework/IDEBundleInjection --setenv XCInjectBundle="$test_bundle_path" --setenv XCInjectBundleInto="$TEST_HOST" --args -SenTest All "$test_bundle_path"
|
30
|
-
echo "Finished running tests with ios-sim"
|
31
|
-
else
|
32
|
-
"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests"
|
33
|
-
fi
|
34
|
-
```
|
35
|
-
|
36
|
-
* Enable `Run` in the `Build` section of your test bundle’s scheme. (See http://www.raingrove.com/2012/03/28/running-ocunit-and-specta-tests-from-command-line.html).
|
37
|
-
|
38
24
|
## Usage
|
39
25
|
|
40
26
|
Please read [Guard usage doc](https://github.com/guard/guard#readme)
|
@@ -2,12 +2,14 @@ require 'guard/ocunit'
|
|
2
2
|
require 'colored'
|
3
3
|
|
4
4
|
class Guard::OCUnit::Formatter < Array
|
5
|
-
attr_reader :passed, :failed, :start_time
|
5
|
+
attr_reader :passed, :failed, :start_time, :error_messages
|
6
6
|
|
7
7
|
def initialize(io, verbose)
|
8
8
|
@io, @verbose = io, verbose
|
9
9
|
@failed, @passed = 0, 0
|
10
10
|
@start_time = Time.now
|
11
|
+
@error_messages = []
|
12
|
+
@current_failure = ''
|
11
13
|
end
|
12
14
|
|
13
15
|
def <<(line)
|
@@ -15,19 +17,28 @@ class Guard::OCUnit::Formatter < Array
|
|
15
17
|
@io << case line
|
16
18
|
when /passed/
|
17
19
|
@passed += 1
|
18
|
-
@verbose ? line
|
20
|
+
(@verbose ? line : '.' ).green
|
19
21
|
when /failed/
|
22
|
+
format_current_messages
|
20
23
|
@failed += 1
|
21
|
-
line.red
|
24
|
+
(@verbose ? line : 'F' ).red
|
22
25
|
when /(error|otest)/
|
23
|
-
line
|
26
|
+
@current_failure << line
|
27
|
+
@verbose ? line.yellow : ''
|
28
|
+
when /(started|Executed|finished)/
|
29
|
+
@verbose ? line : ''
|
30
|
+
when /^#{Date.today}/
|
31
|
+
@verbose ? line.yellow : ''
|
24
32
|
else
|
33
|
+
@current_failure << line unless line.strip.empty?
|
25
34
|
@verbose ? line : ''
|
26
35
|
end
|
27
36
|
self
|
28
37
|
end
|
29
38
|
|
30
39
|
def dump_summary(with_notification=true)
|
40
|
+
dump_error_messages
|
41
|
+
|
31
42
|
end_time = Time.now
|
32
43
|
duration = end_time - @start_time
|
33
44
|
message = guard_message(@passed + @failed, @failed, 0, duration)
|
@@ -36,6 +47,13 @@ class Guard::OCUnit::Formatter < Array
|
|
36
47
|
notify(message, image) if with_notification
|
37
48
|
end
|
38
49
|
|
50
|
+
def dump_error_messages
|
51
|
+
return if @error_messages.empty?
|
52
|
+
|
53
|
+
puts "\n\nFailures:\n"
|
54
|
+
puts @error_messages.join + "\n"
|
55
|
+
end
|
56
|
+
|
39
57
|
def guard_message(example_count, failure_count, pending_count, duration)
|
40
58
|
message = "#{example_count} examples, #{failure_count} failures"
|
41
59
|
if pending_count > 0
|
@@ -67,4 +85,50 @@ class Guard::OCUnit::Formatter < Array
|
|
67
85
|
Guard::Notifier.notify(message, :title => "OCUnit results", :image => image,
|
68
86
|
:priority => priority(image))
|
69
87
|
end
|
88
|
+
|
89
|
+
private
|
90
|
+
|
91
|
+
def format_current_messages
|
92
|
+
format_failure(@current_failure) unless @current_failure.empty?
|
93
|
+
@current_failure = ''
|
94
|
+
end
|
95
|
+
|
96
|
+
def format_failure(messages)
|
97
|
+
location = 0
|
98
|
+
header_added = false
|
99
|
+
formatted_message = ''
|
100
|
+
|
101
|
+
while ( match = messages.match(/\n#{Dir.pwd}/, location) )
|
102
|
+
match_location = match.begin(0)
|
103
|
+
|
104
|
+
message = messages.slice(location, match_location - location)
|
105
|
+
unless header_added
|
106
|
+
formatted_message << failure_case(message)
|
107
|
+
header_added = true
|
108
|
+
end
|
109
|
+
formatted_message << failure_reason(message)
|
110
|
+
|
111
|
+
location = match_location + 1
|
112
|
+
end
|
113
|
+
message = messages.slice(location, messages.length - location)
|
114
|
+
formatted_message << failure_case(message) unless header_added
|
115
|
+
formatted_message << failure_reason(message)
|
116
|
+
|
117
|
+
@error_messages << formatted_message
|
118
|
+
end
|
119
|
+
|
120
|
+
def failure_case(failure)
|
121
|
+
components = failure.split(':')
|
122
|
+
case_name = "\n#{@error_messages.size + 1}."
|
123
|
+
case_name << components[3]
|
124
|
+
end
|
125
|
+
|
126
|
+
def failure_reason(failure)
|
127
|
+
components = failure.split(':')
|
128
|
+
failure_reason = "\n "
|
129
|
+
failure_reason << components[4..-1].join.rstrip.red
|
130
|
+
failure_reason << "\n "
|
131
|
+
failure_reason << "#{components[0].gsub(Dir.pwd, '.')}:#{components[1]}".green
|
132
|
+
failure_reason << "\n"
|
133
|
+
end
|
70
134
|
end
|
data/lib/guard/ocunit/version.rb
CHANGED