assert 2.1.0 → 2.1.1

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.
@@ -122,16 +122,17 @@ module Assert
122
122
  # create a test from the given code block
123
123
  Assert.suite.tests << Test.new(test_name, ci, &block)
124
124
  else
125
- test_eventually(desc_or_macro, called_from, first_caller, &block)
125
+ test_eventually(desc_or_macro, called_from, first_caller || caller.first, &block)
126
126
  end
127
127
  end
128
128
 
129
129
  def test_eventually(desc_or_macro, called_from=nil, first_caller=nil, &block)
130
130
  ci = Suite::ContextInfo.new(self, called_from, first_caller || caller.first)
131
131
  test_name = desc_or_macro.kind_of?(Macro) ? desc_or_macro.name : desc_or_macro
132
+ skip_block = block.nil? ? Proc.new { skip 'TODO' } : Proc.new { skip }
132
133
 
133
134
  # create a test from a proc that just skips
134
- Assert.suite.tests << Test.new(test_name, ci, &(Proc.new { skip }))
135
+ Assert.suite.tests << Test.new(test_name, ci, &skip_block)
135
136
  end
136
137
  alias_method :test_skip, :test_eventually
137
138
 
@@ -146,7 +147,7 @@ module Assert
146
147
  if !desc_or_macro.kind_of?(Macro)
147
148
  desc_or_macro = "should #{desc_or_macro}"
148
149
  end
149
- test_eventually(desc_or_macro, called_from, first_caller || caller.first)
150
+ test_eventually(desc_or_macro, called_from, first_caller || caller.first, &block)
150
151
  end
151
152
  alias_method :should_skip, :should_eventually
152
153
 
@@ -135,6 +135,11 @@ module Assert::Result
135
135
  "Skip"
136
136
  end
137
137
 
138
+ # override of the base, show the test's context info called_from
139
+ def trace
140
+ self.test.context_info.called_from || super
141
+ end
142
+
138
143
  end
139
144
 
140
145
  class Error < Base
@@ -4,18 +4,13 @@ module Assert
4
4
  class Suite
5
5
 
6
6
  class ContextInfo
7
-
8
- attr_reader :called_from, :first_caller, :klass, :file
7
+ attr_reader :called_from, :klass, :file
9
8
 
10
9
  def initialize(klass, called_from=nil, first_caller=nil)
11
- @first_caller = first_caller
12
- @called_from = called_from
10
+ @called_from = called_from || first_caller
13
11
  @klass = klass
14
- @file = if (@called_from || @first_caller)
15
- (@called_from || @first_caller).gsub(/\:[0-9]+.*$/, '')
16
- end
12
+ @file = @called_from.gsub(/\:[0-9]+.*$/, '') if @called_from
17
13
  end
18
-
19
14
  end
20
15
 
21
16
  TEST_METHOD_REGEX = /^test./
@@ -1,3 +1,3 @@
1
1
  module Assert
2
- VERSION = "2.1.0"
2
+ VERSION = "2.1.1"
3
3
  end
@@ -38,52 +38,70 @@ class Assert::Context
38
38
  assert_equal @test_block, built_test.code
39
39
  end
40
40
 
41
- should "build a test that skips when `test` called with no block" do
42
- d = @test_desc
43
- context_class = Factory.context_class { test(d) }
44
- context_info = Factory.context_info(context_class)
45
- context = context_class.new(Factory.test("whatever", context_info))
41
+ should "build a test that skips with no msg when `test_eventually` called" do
42
+ d, b = @test_desc, @test_block
43
+ context = build_eval_context{ test_eventually(d, &b) }
44
+ err = capture_err(Assert::Result::TestSkipped) do
45
+ context.instance_eval(&Assert.suite.tests.last.code)
46
+ end
46
47
 
47
48
  assert_equal @test_count_before+1, Assert.suite.tests.size
48
- assert_raises(Assert::Result::TestSkipped) do
49
+ assert_equal "", err.message
50
+ end
51
+
52
+ should "build a test that skips with no msg when `should_eventually` called" do
53
+ d, b = @test_desc, @test_block
54
+ context = build_eval_context{ should_eventually(d, &b) }
55
+ err = capture_err(Assert::Result::TestSkipped) do
49
56
  context.instance_eval(&Assert.suite.tests.last.code)
50
57
  end
58
+
59
+ assert_equal @test_count_before+1, Assert.suite.tests.size
60
+ assert_equal "", err.message
51
61
  end
52
62
 
53
- should "build a test that skips when `should` called with no block" do
63
+ should "skip with the msg \"TODO\" when `test` called with no block" do
54
64
  d = @test_desc
55
- context_class = Factory.context_class { should(d) }
56
- context_info = Factory.context_info(context_class)
57
- context = context_class.new(Factory.test("whatever", context_info))
58
-
59
- assert_equal @test_count_before+1, Assert.suite.tests.size
60
- assert_raises(Assert::Result::TestSkipped) do
65
+ context = build_eval_context { test(d) } # no block passed
66
+ err = capture_err(Assert::Result::TestSkipped) do
61
67
  context.instance_eval(&Assert.suite.tests.last.code)
62
68
  end
63
- end
64
-
65
- should "build a test that skips when `test_eventually` called" do
66
- d, b = @test_desc, @test_block
67
- context_class = Factory.context_class { test_eventually(d, &b) }
68
- context_info = Factory.context_info(context_class)
69
- context = context_class.new(Factory.test("whatever", context_info))
70
69
 
71
70
  assert_equal @test_count_before+1, Assert.suite.tests.size
72
- assert_raises(Assert::Result::TestSkipped) do
71
+ assert_equal "TODO", err.message
72
+ end
73
+
74
+ should "skip with the msg \"TODO\" when `should` called with no block" do
75
+ d = @test_desc
76
+ context = build_eval_context { should(d) } # no block passed
77
+ err = capture_err(Assert::Result::TestSkipped) do
73
78
  context.instance_eval(&Assert.suite.tests.last.code)
74
79
  end
80
+
81
+ assert_equal @test_count_before+1, Assert.suite.tests.size
82
+ assert_equal "TODO", err.message
75
83
  end
76
84
 
77
- should "build a test that skips when `should_eventually` called" do
78
- d, b = @test_desc, @test_block
79
- context_class = Factory.context_class { should_eventually(d, &b) }
80
- context_info = Factory.context_info(context_class)
81
- context = context_class.new(Factory.test("whatever", context_info))
85
+ should "skip with the msg \"TODO\" when `test_eventually` called with no block" do
86
+ d = @test_desc
87
+ context = build_eval_context{ test_eventually(d) } # no block given
88
+ err = capture_err(Assert::Result::TestSkipped) do
89
+ context.instance_eval(&Assert.suite.tests.last.code)
90
+ end
82
91
 
83
92
  assert_equal @test_count_before+1, Assert.suite.tests.size
84
- assert_raises(Assert::Result::TestSkipped) do
93
+ assert_equal "TODO", err.message
94
+ end
95
+
96
+ should "skip with the msg \"TODO\" when `should_eventually` called with no block" do
97
+ d = @test_desc
98
+ context = build_eval_context{ should_eventually(d) } # no block given
99
+ err = capture_err(Assert::Result::TestSkipped) do
85
100
  context.instance_eval(&Assert.suite.tests.last.code)
86
101
  end
102
+
103
+ assert_equal @test_count_before+1, Assert.suite.tests.size
104
+ assert_equal "TODO", err.message
87
105
  end
88
106
 
89
107
  should "build a test from a macro using `test`" do
@@ -105,9 +123,7 @@ class Assert::Context
105
123
  should "build a test that skips from a macro using `test_eventually`" do
106
124
  d, b = @test_desc, @test_block
107
125
  m = Assert::Macro.new{ test(d, &b); test(d, &b) }
108
- context_class = Factory.context_class { test_eventually(m) }
109
- context_info = Factory.context_info(context_class)
110
- context = context_class.new(Factory.test("whatever", context_info))
126
+ context = build_eval_context{ test_eventually(m) }
111
127
 
112
128
  assert_equal @test_count_before+1, Assert.suite.tests.size
113
129
  assert_raises(Assert::Result::TestSkipped) do
@@ -118,9 +134,7 @@ class Assert::Context
118
134
  should "build a test that skips from a macro using `should_eventually`" do
119
135
  d, b = @test_desc, @test_block
120
136
  m = Assert::Macro.new{ should(d, &b); should(d, &b) }
121
- context_class = Factory.context_class { should_eventually(m) }
122
- context_info = Factory.context_info(context_class)
123
- context = context_class.new(Factory.test("whatever", context_info))
137
+ context = build_eval_context{ should_eventually(m) }
124
138
 
125
139
  assert_equal @test_count_before+1, Assert.suite.tests.size
126
140
  assert_raises(Assert::Result::TestSkipped) do
@@ -129,6 +143,22 @@ class Assert::Context
129
143
 
130
144
  end
131
145
 
146
+ private
147
+
148
+ def build_eval_context(&build_block)
149
+ context_class = Factory.context_class &build_block
150
+ context_info = Factory.context_info(context_class)
151
+ context_class.new(Factory.test("whatever", context_info))
152
+ end
153
+
154
+ def capture_err(err_class, &block)
155
+ begin
156
+ block.call
157
+ rescue err_class => e
158
+ e
159
+ end
160
+ end
161
+
132
162
  end
133
163
 
134
164
  end
@@ -181,14 +181,18 @@ class Assert::Suite
181
181
  end
182
182
  subject{ @info }
183
183
 
184
- should have_readers :called_from, :first_caller, :klass, :file
184
+ should have_readers :called_from, :klass, :file
185
185
 
186
186
  should "set its klass on init" do
187
187
  assert_equal @klass, subject.klass
188
188
  end
189
189
 
190
- should "set its called_from to the first caller on init" do
191
- assert_equal @caller.first, subject.first_caller
190
+ should "set its called_from to the called_from or first caller on init" do
191
+ info = Assert::Suite::ContextInfo.new(@klass, @caller.first, nil)
192
+ assert_equal @caller.first, info.called_from
193
+
194
+ info = Assert::Suite::ContextInfo.new(@klass, nil, @caller.first)
195
+ assert_equal @caller.first, info.called_from
192
196
  end
193
197
 
194
198
  should "set its file from caller info on init" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: assert
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 9
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 1
9
- - 0
10
- version: 2.1.0
9
+ - 1
10
+ version: 2.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kelly Redding
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2013-04-25 00:00:00 Z
19
+ date: 2013-04-30 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: ansi