Skip to content

Commit d75361e

Browse files
author
Andy Newton
committed
changed failure report to array and started slicing lower portions
1 parent 87a25ff commit d75361e

File tree

4 files changed

+13
-13
lines changed

4 files changed

+13
-13
lines changed

lib/jcr/evaluate_rules.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def initialize success, reason
5656
class EvalConditions
5757
attr_accessor :mapping, :callbacks, :trace, :trace_stack, :failures
5858
def initialize mapping, callbacks, trace = false
59-
@failures = {}
59+
@failures = []
6060
@mapping = mapping
6161
@trace = trace
6262
@trace_stack = []
@@ -68,14 +68,14 @@ def initialize mapping, callbacks, trace = false
6868
end
6969

7070
def report_failure failure
71-
stack_level = trace_stack.length
71+
stack_level = trace_stack.length - 1
7272
@failures[ stack_level ] = Array.new unless @failures[ stack_level ]
7373
@failures[ stack_level ] << failure
7474
end
7575

7676
def report_success
77-
stack_level = trace_stack.length
78-
@failures.delete( stack_level )
77+
stack_level = trace_stack.length - 1
78+
@failures.slice!( stack_level..-1 )
7979
end
8080
end
8181

lib/jcr/jcr.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ def self.failure_report ctx
153153
else
154154
report << "- Failures for root rule at line #{failed_root.pos[0]}"
155155
end
156-
failed_root.failures.sort.map do |stack_level, failures|
156+
failed_root.failures.each_with_index do |failures,stack_level|
157157
if failures.length > 1
158158
report << " - failure at rule level #{stack_level} caused by one of the following #{failures.length} reasons"
159159
else

lib/jcr/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@
1515

1616
module JCR
1717

18-
VERSION = "0.8.2"
18+
VERSION = "0.8.3"
1919

2020
end

spec/trace_fails_spec.rb

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,45 +55,45 @@
5555
data = JSON.parse( '["bar"]')
5656
e = ctx.evaluate( data )
5757
expect( ctx.failed_roots[0].failures.length ).to eq( 2 )
58+
expect( ctx.failed_roots[0].failures[0].length ).to eq( 1 )
5859
expect( ctx.failed_roots[0].failures[1].length ).to eq( 1 )
59-
expect( ctx.failed_roots[0].failures[2].length ).to eq( 1 )
6060
end
6161

6262
it 'should have two fail level w/ one fail' do
6363
ctx = JCR::Context.new( '[ 0..2 *2 ]', false )
6464
data = JSON.parse( '[1, "bar"]')
6565
e = ctx.evaluate( data )
6666
expect( ctx.failed_roots[0].failures.length ).to eq( 2 )
67+
expect( ctx.failed_roots[0].failures[0].length ).to eq( 1 )
6768
expect( ctx.failed_roots[0].failures[1].length ).to eq( 1 )
68-
expect( ctx.failed_roots[0].failures[2].length ).to eq( 1 )
6969
end
7070

7171
it 'should have two fail level w/ one fail also' do
7272
ctx = JCR::Context.new( '[ 0..2 *2 ]', false )
7373
data = JSON.parse( '["bar", 1]')
7474
e = ctx.evaluate( data )
7575
expect( ctx.failed_roots[0].failures.length ).to eq( 2 )
76+
expect( ctx.failed_roots[0].failures[0].length ).to eq( 1 )
7677
expect( ctx.failed_roots[0].failures[1].length ).to eq( 1 )
77-
expect( ctx.failed_roots[0].failures[2].length ).to eq( 1 )
7878
end
7979

8080
it 'should have two fail level w/ or' do
8181
ctx = JCR::Context.new( '[ "foo" | "bar" ]', false )
8282
data = JSON.parse( '["baz"]')
8383
e = ctx.evaluate( data )
8484
expect( ctx.failed_roots[0].failures.length ).to eq( 2 )
85-
expect( ctx.failed_roots[0].failures[1].length ).to eq( 1 )
86-
expect( ctx.failed_roots[0].failures[2].length ).to eq( 2 )
85+
expect( ctx.failed_roots[0].failures[0].length ).to eq( 1 )
86+
expect( ctx.failed_roots[0].failures[1].length ).to eq( 2 )
8787
end
8888

8989
it 'should have two fail level w/ two fail' do
9090
ctx = JCR::Context.new( '[ ("foo" | "bar"), 0..2 ]', false )
9191
data = JSON.parse( '["baz", 3]')
9292
e = ctx.evaluate( data )
9393
expect( ctx.failed_roots[0].failures.length ).to eq( 3 )
94+
expect( ctx.failed_roots[0].failures[0].length ).to eq( 1 )
9495
expect( ctx.failed_roots[0].failures[1].length ).to eq( 1 )
95-
expect( ctx.failed_roots[0].failures[2].length ).to eq( 1 )
96-
expect( ctx.failed_roots[0].failures[3].length ).to eq( 2 )
96+
expect( ctx.failed_roots[0].failures[2].length ).to eq( 2 )
9797
end
9898

9999
end

0 commit comments

Comments
 (0)