xcoder 0.1.11 → 0.1.12
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.
- data/Rakefile +2 -0
- data/lib/xcode/builder.rb +32 -19
- data/lib/xcode/shell.rb +3 -1
- data/lib/xcode/test/parsers/ocunit_parser.rb +94 -0
- data/lib/xcode/test/report.rb +121 -0
- data/lib/xcode/test/report/suite_result.rb +67 -0
- data/lib/xcode/test/report/test_result.rb +49 -0
- data/lib/xcode/version.rb +1 -1
- data/lib/xcode/workspace.rb +6 -3
- data/spec/TestProject/{TestProjectTests/TestProjectTests-Info.plist → ApplicationTests/ApplicationTests-Info.plist} +0 -0
- data/spec/TestProject/ApplicationTests/ApplicationTests-Prefix.pch +8 -0
- data/spec/TestProject/ApplicationTests/ApplicationTests.h +13 -0
- data/spec/TestProject/ApplicationTests/ApplicationTests.m +32 -0
- data/spec/TestProject/{TestProjectTests → ApplicationTests}/en.lproj/InfoPlist.strings +0 -0
- data/spec/TestProject/{TestProjectTests → LogicTests}/AnotherTest.h +0 -0
- data/spec/TestProject/{TestProjectTests → LogicTests}/AnotherTest.m +0 -0
- data/spec/TestProject/LogicTests/TestProjectTests-Info.plist +22 -0
- data/spec/TestProject/{TestProjectTests → LogicTests}/TestProjectTests.h +0 -0
- data/spec/TestProject/{TestProjectTests → LogicTests}/TestProjectTests.m +0 -0
- data/spec/TestProject/LogicTests/en.lproj/InfoPlist.strings +2 -0
- data/spec/TestProject/TestProject.xcodeproj/project.pbxproj +1329 -556
- data/spec/TestProject/TestProject.xcodeproj/xcshareddata/xcschemes/TestProject.xcscheme +13 -2
- data/spec/TestWorkspace2.xcworkspace/contents.xcworkspacedata +7 -0
- data/spec/TestWorkspace2.xcworkspace/xcuserdata/ray.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/spec/build_phase_spec.rb +2 -2
- data/spec/builder_spec.rb +51 -10
- data/spec/integration/builder_spec.rb +60 -4
- data/spec/ocunit_parser_spec.rb +164 -0
- data/spec/project_spec.rb +1 -1
- data/spec/workspace_spec.rb +8 -3
- metadata +44 -29
- data/lib/xcode/test/ocunit_report_parser.rb +0 -174
- data/lib/xcode/test/suite_result.rb +0 -39
- data/lib/xcode/test/test_result.rb +0 -43
- data/spec/test_report_spec.rb +0 -147
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xcoder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-04-
|
13
|
+
date: 2012-04-22 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: json
|
17
|
-
requirement: &
|
17
|
+
requirement: &70102805249640 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70102805249640
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: plist
|
28
|
-
requirement: &
|
28
|
+
requirement: &70102805249220 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70102805249220
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: nokogiri
|
39
|
-
requirement: &
|
39
|
+
requirement: &70102805248800 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70102805248800
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: builder
|
50
|
-
requirement: &
|
50
|
+
requirement: &70102805248380 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70102805248380
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: rest-client
|
61
|
-
requirement: &
|
61
|
+
requirement: &70102805247960 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :runtime
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70102805247960
|
70
70
|
description: Provides a ruby based object-model for parsing project structures and
|
71
71
|
invoking builds
|
72
72
|
email:
|
@@ -121,9 +121,10 @@ files:
|
|
121
121
|
- lib/xcode/target_dependency.rb
|
122
122
|
- lib/xcode/test/formatters/junit_formatter.rb
|
123
123
|
- lib/xcode/test/formatters/stdout_formatter.rb
|
124
|
-
- lib/xcode/test/
|
125
|
-
- lib/xcode/test/
|
126
|
-
- lib/xcode/test/
|
124
|
+
- lib/xcode/test/parsers/ocunit_parser.rb
|
125
|
+
- lib/xcode/test/report.rb
|
126
|
+
- lib/xcode/test/report/suite_result.rb
|
127
|
+
- lib/xcode/test/report/test_result.rb
|
127
128
|
- lib/xcode/testflight.rb
|
128
129
|
- lib/xcode/variant_group.rb
|
129
130
|
- lib/xcode/version.rb
|
@@ -135,7 +136,18 @@ files:
|
|
135
136
|
- spec/Provisioning/AppStore.mobileprovision
|
136
137
|
- spec/Provisioning/Test.keychain
|
137
138
|
- spec/Provisioning/TestUser.p12
|
139
|
+
- spec/TestProject/ApplicationTests/ApplicationTests-Info.plist
|
140
|
+
- spec/TestProject/ApplicationTests/ApplicationTests-Prefix.pch
|
141
|
+
- spec/TestProject/ApplicationTests/ApplicationTests.h
|
142
|
+
- spec/TestProject/ApplicationTests/ApplicationTests.m
|
143
|
+
- spec/TestProject/ApplicationTests/en.lproj/InfoPlist.strings
|
138
144
|
- spec/TestProject/Buildfile
|
145
|
+
- spec/TestProject/LogicTests/AnotherTest.h
|
146
|
+
- spec/TestProject/LogicTests/AnotherTest.m
|
147
|
+
- spec/TestProject/LogicTests/TestProjectTests-Info.plist
|
148
|
+
- spec/TestProject/LogicTests/TestProjectTests.h
|
149
|
+
- spec/TestProject/LogicTests/TestProjectTests.m
|
150
|
+
- spec/TestProject/LogicTests/en.lproj/InfoPlist.strings
|
139
151
|
- spec/TestProject/TestProject.xcodeproj/project.pbxproj
|
140
152
|
- spec/TestProject/TestProject.xcodeproj/xcshareddata/xcschemes/TestProject.xcscheme
|
141
153
|
- spec/TestProject/TestProject/AppDelegate.h
|
@@ -144,14 +156,10 @@ files:
|
|
144
156
|
- spec/TestProject/TestProject/TestProject-Prefix.pch
|
145
157
|
- spec/TestProject/TestProject/en.lproj/InfoPlist.strings
|
146
158
|
- spec/TestProject/TestProject/main.m
|
147
|
-
- spec/TestProject/TestProjectTests/AnotherTest.h
|
148
|
-
- spec/TestProject/TestProjectTests/AnotherTest.m
|
149
|
-
- spec/TestProject/TestProjectTests/TestProjectTests-Info.plist
|
150
|
-
- spec/TestProject/TestProjectTests/TestProjectTests.h
|
151
|
-
- spec/TestProject/TestProjectTests/TestProjectTests.m
|
152
|
-
- spec/TestProject/TestProjectTests/en.lproj/InfoPlist.strings
|
153
159
|
- spec/TestWorkspace.xcworkspace/contents.xcworkspacedata
|
154
160
|
- spec/TestWorkspace.xcworkspace/xcuserdata/ray.xcuserdatad/UserInterfaceState.xcuserstate
|
161
|
+
- spec/TestWorkspace2.xcworkspace/contents.xcworkspacedata
|
162
|
+
- spec/TestWorkspace2.xcworkspace/xcuserdata/ray.xcuserdatad/UserInterfaceState.xcuserstate
|
155
163
|
- spec/build_phase_spec.rb
|
156
164
|
- spec/builder_spec.rb
|
157
165
|
- spec/configuration_list_spec.rb
|
@@ -163,12 +171,12 @@ files:
|
|
163
171
|
- spec/integration/reachability_install_spec.rb
|
164
172
|
- spec/integration/universal_framework_spec.rb
|
165
173
|
- spec/keychain_spec.rb
|
174
|
+
- spec/ocunit_parser_spec.rb
|
166
175
|
- spec/project_spec.rb
|
167
176
|
- spec/provisioning_profile_spec.rb
|
168
177
|
- spec/scheme_spec.rb
|
169
178
|
- spec/spec_helper.rb
|
170
179
|
- spec/target_spec.rb
|
171
|
-
- spec/test_report_spec.rb
|
172
180
|
- spec/workspace_spec.rb
|
173
181
|
- spec/xcode_spec.rb
|
174
182
|
homepage: https://github.com/rayh/xcoder
|
@@ -200,7 +208,18 @@ test_files:
|
|
200
208
|
- spec/Provisioning/AppStore.mobileprovision
|
201
209
|
- spec/Provisioning/Test.keychain
|
202
210
|
- spec/Provisioning/TestUser.p12
|
211
|
+
- spec/TestProject/ApplicationTests/ApplicationTests-Info.plist
|
212
|
+
- spec/TestProject/ApplicationTests/ApplicationTests-Prefix.pch
|
213
|
+
- spec/TestProject/ApplicationTests/ApplicationTests.h
|
214
|
+
- spec/TestProject/ApplicationTests/ApplicationTests.m
|
215
|
+
- spec/TestProject/ApplicationTests/en.lproj/InfoPlist.strings
|
203
216
|
- spec/TestProject/Buildfile
|
217
|
+
- spec/TestProject/LogicTests/AnotherTest.h
|
218
|
+
- spec/TestProject/LogicTests/AnotherTest.m
|
219
|
+
- spec/TestProject/LogicTests/TestProjectTests-Info.plist
|
220
|
+
- spec/TestProject/LogicTests/TestProjectTests.h
|
221
|
+
- spec/TestProject/LogicTests/TestProjectTests.m
|
222
|
+
- spec/TestProject/LogicTests/en.lproj/InfoPlist.strings
|
204
223
|
- spec/TestProject/TestProject.xcodeproj/project.pbxproj
|
205
224
|
- spec/TestProject/TestProject.xcodeproj/xcshareddata/xcschemes/TestProject.xcscheme
|
206
225
|
- spec/TestProject/TestProject/AppDelegate.h
|
@@ -209,14 +228,10 @@ test_files:
|
|
209
228
|
- spec/TestProject/TestProject/TestProject-Prefix.pch
|
210
229
|
- spec/TestProject/TestProject/en.lproj/InfoPlist.strings
|
211
230
|
- spec/TestProject/TestProject/main.m
|
212
|
-
- spec/TestProject/TestProjectTests/AnotherTest.h
|
213
|
-
- spec/TestProject/TestProjectTests/AnotherTest.m
|
214
|
-
- spec/TestProject/TestProjectTests/TestProjectTests-Info.plist
|
215
|
-
- spec/TestProject/TestProjectTests/TestProjectTests.h
|
216
|
-
- spec/TestProject/TestProjectTests/TestProjectTests.m
|
217
|
-
- spec/TestProject/TestProjectTests/en.lproj/InfoPlist.strings
|
218
231
|
- spec/TestWorkspace.xcworkspace/contents.xcworkspacedata
|
219
232
|
- spec/TestWorkspace.xcworkspace/xcuserdata/ray.xcuserdatad/UserInterfaceState.xcuserstate
|
233
|
+
- spec/TestWorkspace2.xcworkspace/contents.xcworkspacedata
|
234
|
+
- spec/TestWorkspace2.xcworkspace/xcuserdata/ray.xcuserdatad/UserInterfaceState.xcuserstate
|
220
235
|
- spec/build_phase_spec.rb
|
221
236
|
- spec/builder_spec.rb
|
222
237
|
- spec/configuration_list_spec.rb
|
@@ -228,12 +243,12 @@ test_files:
|
|
228
243
|
- spec/integration/reachability_install_spec.rb
|
229
244
|
- spec/integration/universal_framework_spec.rb
|
230
245
|
- spec/keychain_spec.rb
|
246
|
+
- spec/ocunit_parser_spec.rb
|
231
247
|
- spec/project_spec.rb
|
232
248
|
- spec/provisioning_profile_spec.rb
|
233
249
|
- spec/scheme_spec.rb
|
234
250
|
- spec/spec_helper.rb
|
235
251
|
- spec/target_spec.rb
|
236
|
-
- spec/test_report_spec.rb
|
237
252
|
- spec/workspace_spec.rb
|
238
253
|
- spec/xcode_spec.rb
|
239
254
|
has_rdoc:
|
@@ -1,174 +0,0 @@
|
|
1
|
-
require 'time'
|
2
|
-
require 'fileutils'
|
3
|
-
require 'xcode/test/suite_result'
|
4
|
-
require 'xcode/test/test_result'
|
5
|
-
|
6
|
-
module Xcode
|
7
|
-
module Test
|
8
|
-
|
9
|
-
module Formatters
|
10
|
-
end
|
11
|
-
|
12
|
-
class OCUnitReportParser
|
13
|
-
|
14
|
-
attr_reader :reports, :end_time, :start_timel
|
15
|
-
attr_accessor :debug, :formatters
|
16
|
-
|
17
|
-
def initialize
|
18
|
-
@debug = false
|
19
|
-
@exit_code = 0
|
20
|
-
@reports = []
|
21
|
-
@formatters = []
|
22
|
-
@failed = false
|
23
|
-
@start_time = nil
|
24
|
-
@end_time = nil
|
25
|
-
@unexpected = false
|
26
|
-
|
27
|
-
add_formatter :junit, 'test-reports'
|
28
|
-
add_formatter :stdout
|
29
|
-
end
|
30
|
-
|
31
|
-
def unexpected?
|
32
|
-
@unexpected
|
33
|
-
end
|
34
|
-
|
35
|
-
def failed?
|
36
|
-
@failed or @unexpected
|
37
|
-
end
|
38
|
-
|
39
|
-
def finished?
|
40
|
-
!@end_time.nil?
|
41
|
-
end
|
42
|
-
|
43
|
-
def duration
|
44
|
-
return 0 if @start_time.nil?
|
45
|
-
return Time.now - @start_time if @end_time.nil?
|
46
|
-
@end_time - @start_time
|
47
|
-
end
|
48
|
-
|
49
|
-
def add_formatter(format, *args)
|
50
|
-
require "xcode/test/formatters/#{format.to_s}_formatter"
|
51
|
-
formatter = Formatters.const_get("#{format.to_s.capitalize}Formatter").new(*args)
|
52
|
-
@formatters << formatter
|
53
|
-
end
|
54
|
-
|
55
|
-
def flush
|
56
|
-
return if finished?
|
57
|
-
|
58
|
-
# if there is a current, unfinished test - fail it
|
59
|
-
unless current_test.nil? or current_test.passed?
|
60
|
-
fail_current_test(0)
|
61
|
-
@failed = true
|
62
|
-
end
|
63
|
-
|
64
|
-
# if there is a current suite which isnt finished - finish it
|
65
|
-
unless current_suite.nil? or current_suite.finished?
|
66
|
-
@failed = true # It may not have failed, but we want to indicate an unexpected end
|
67
|
-
current_suite.finish
|
68
|
-
notify_formatters(:after_suite, current_suite)
|
69
|
-
end
|
70
|
-
|
71
|
-
# finish all tests
|
72
|
-
@end_time = Time.now
|
73
|
-
notify_formatters(:after, self)
|
74
|
-
end
|
75
|
-
|
76
|
-
def <<(piped_row)
|
77
|
-
puts piped_row if @debug
|
78
|
-
|
79
|
-
case piped_row
|
80
|
-
|
81
|
-
when /Test Suite '(\S+)'.*started at\s+(.*)/
|
82
|
-
name = $1
|
83
|
-
time = Time.parse($2)
|
84
|
-
if name=~/\//
|
85
|
-
# all tests begin
|
86
|
-
@start_time = Time.now
|
87
|
-
notify_formatters(:before, self)
|
88
|
-
else
|
89
|
-
@reports << SuiteResult.new(name, time)
|
90
|
-
notify_formatters(:before_suite, current_suite)
|
91
|
-
end
|
92
|
-
|
93
|
-
when /Test Suite '(\S+)'.*finished at\s+(.*)./
|
94
|
-
time = Time.parse($2)
|
95
|
-
name = $1
|
96
|
-
if name=~/\//
|
97
|
-
# all tests ended
|
98
|
-
@end_time = Time.now
|
99
|
-
notify_formatters(:after, self)
|
100
|
-
else
|
101
|
-
@reports.last.finish(time)
|
102
|
-
notify_formatters(:after_suite, current_suite)
|
103
|
-
end
|
104
|
-
|
105
|
-
when /Test Case '-\[\S+\s+(\S+)\]' started./
|
106
|
-
test = TestResult.new($1, current_suite)
|
107
|
-
@reports.last.tests << test
|
108
|
-
notify_formatters(:before_test, test)
|
109
|
-
|
110
|
-
when /Test Case '-\[\S+\s+(\S+)\]' passed \((.*) seconds\)/
|
111
|
-
@reports.last.tests.last.passed($2.to_f)
|
112
|
-
notify_formatters(:after_test, current_test)
|
113
|
-
|
114
|
-
when /(.*): error: -\[(\S+) (\S+)\] : (.*)/
|
115
|
-
current_test.add_error($4,$1)
|
116
|
-
@failed = true
|
117
|
-
# notify_formatters(:after_test, @reports.last.tests.last)
|
118
|
-
|
119
|
-
when /Test Case '-\[\S+ (\S+)\]' failed \((\S+) seconds\)/
|
120
|
-
fail_current_test($2.to_f)
|
121
|
-
@failed = true
|
122
|
-
|
123
|
-
# when /failed with exit code (\d+)/,
|
124
|
-
when /BUILD FAILED/
|
125
|
-
flush
|
126
|
-
|
127
|
-
when /Segmentation fault/
|
128
|
-
@unexpected=true
|
129
|
-
|
130
|
-
when /Run test case (\w+)/
|
131
|
-
# ignore
|
132
|
-
when /Run test suite (\w+)/
|
133
|
-
# ignore
|
134
|
-
when /Executed (\d+) test, with (\d+) failures \((\d+) unexpected\) in (\S+) \((\S+)\) seconds/
|
135
|
-
# ignore
|
136
|
-
else
|
137
|
-
append_line_to_current_test piped_row
|
138
|
-
end # case
|
139
|
-
|
140
|
-
end # <<
|
141
|
-
|
142
|
-
private
|
143
|
-
|
144
|
-
def notify_formatters(event, obj=nil)
|
145
|
-
@formatters.each do |f|
|
146
|
-
f.send event, obj if f.respond_to? event
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
def current_suite
|
151
|
-
@reports.last
|
152
|
-
end
|
153
|
-
|
154
|
-
def current_test
|
155
|
-
@reports.last.tests.last unless current_suite.nil?
|
156
|
-
end
|
157
|
-
|
158
|
-
def fail_current_test(duration=0)
|
159
|
-
return if current_test.nil?
|
160
|
-
|
161
|
-
current_test.failed(duration)
|
162
|
-
notify_formatters(:after_test, current_test)
|
163
|
-
end
|
164
|
-
|
165
|
-
def append_line_to_current_test(line)
|
166
|
-
return if current_suite.nil? or !current_suite.end_time.nil?
|
167
|
-
return if current_test.nil?
|
168
|
-
current_test << line
|
169
|
-
end
|
170
|
-
|
171
|
-
|
172
|
-
end # OCUnitReportParser
|
173
|
-
end # Test
|
174
|
-
end # Xcode
|
@@ -1,39 +0,0 @@
|
|
1
|
-
module Xcode
|
2
|
-
module Test
|
3
|
-
class SuiteResult
|
4
|
-
attr_accessor :tests, :name, :start_time, :end_time
|
5
|
-
|
6
|
-
def initialize(name, start_time)
|
7
|
-
@name = name
|
8
|
-
@start_time = start_time
|
9
|
-
@tests = []
|
10
|
-
end
|
11
|
-
|
12
|
-
def finish(time=Time.now)
|
13
|
-
raise "Time is nil" if time.nil?
|
14
|
-
@end_time = time
|
15
|
-
end
|
16
|
-
|
17
|
-
def finished?
|
18
|
-
!@end_time.nil?
|
19
|
-
end
|
20
|
-
|
21
|
-
def total_errors
|
22
|
-
errors = 0
|
23
|
-
@tests.each do |t|
|
24
|
-
errors = errors + t.errors.count if t.failed?
|
25
|
-
end
|
26
|
-
errors
|
27
|
-
end
|
28
|
-
|
29
|
-
def total_passed_tests
|
30
|
-
@tests.select {|t| t.passed? }.count
|
31
|
-
end
|
32
|
-
|
33
|
-
def total_failed_tests
|
34
|
-
@tests.select {|t| t.failed? }.count
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,43 +0,0 @@
|
|
1
|
-
module Xcode
|
2
|
-
module Test
|
3
|
-
class TestResult
|
4
|
-
attr_reader :name, :time, :errors, :suite, :data
|
5
|
-
|
6
|
-
def initialize(name, suite)
|
7
|
-
@name = name
|
8
|
-
@data = []
|
9
|
-
@suite = suite
|
10
|
-
@errors = []
|
11
|
-
end
|
12
|
-
|
13
|
-
def passed?
|
14
|
-
@passed
|
15
|
-
end
|
16
|
-
|
17
|
-
def failed?
|
18
|
-
!@passed
|
19
|
-
end
|
20
|
-
|
21
|
-
def passed(time)
|
22
|
-
@passed = true
|
23
|
-
@time = time
|
24
|
-
end
|
25
|
-
|
26
|
-
def failed(time)
|
27
|
-
@passed = false
|
28
|
-
@time = time
|
29
|
-
end
|
30
|
-
|
31
|
-
def << (line)
|
32
|
-
# puts "[#{@suite.name} #{@name}] << #{line}"
|
33
|
-
return if @data.count==0 and line.strip.empty?
|
34
|
-
@data << line
|
35
|
-
end
|
36
|
-
|
37
|
-
def add_error(error_message,error_location)
|
38
|
-
@errors << {:message => error_message, :location => error_location, :data => @data}
|
39
|
-
@data = []
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|