assert 2.15.0 → 2.15.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.
- checksums.yaml +7 -7
- data/Gemfile +0 -1
- data/{LICENSE.txt → LICENSE} +0 -0
- data/README.md +106 -35
- data/assert.gemspec +2 -2
- data/lib/assert/assert_runner.rb +19 -12
- data/lib/assert/assertions.rb +1 -0
- data/lib/assert/cli.rb +3 -0
- data/lib/assert/config.rb +24 -6
- data/lib/assert/config_helpers.rb +15 -28
- data/lib/assert/context.rb +4 -3
- data/lib/assert/context/test_dsl.rb +3 -2
- data/lib/assert/context_info.rb +19 -0
- data/lib/assert/default_runner.rb +12 -0
- data/lib/assert/default_suite.rb +64 -0
- data/lib/assert/default_view.rb +17 -15
- data/lib/assert/file_line.rb +3 -2
- data/lib/assert/result.rb +6 -0
- data/lib/assert/runner.rb +58 -21
- data/lib/assert/suite.rb +61 -100
- data/lib/assert/test.rb +3 -3
- data/lib/assert/version.rb +1 -1
- data/lib/assert/view.rb +58 -74
- data/lib/assert/view_helpers.rb +10 -48
- data/test/helper.rb +9 -0
- data/test/support/factory.rb +5 -5
- data/test/unit/assertions/assert_raises_tests.rb +20 -0
- data/test/unit/config_helpers_tests.rb +29 -29
- data/test/unit/config_tests.rb +43 -10
- data/test/unit/context/suite_dsl_tests.rb +1 -1
- data/test/unit/context_info_tests.rb +55 -0
- data/test/unit/default_runner_tests.rb +18 -0
- data/test/unit/default_suite_tests.rb +74 -0
- data/test/unit/file_line_tests.rb +6 -2
- data/test/unit/result_tests.rb +15 -4
- data/test/unit/runner_tests.rb +128 -6
- data/test/unit/suite_tests.rb +73 -182
- data/test/unit/view_helpers_tests.rb +44 -38
- data/test/unit/view_tests.rb +15 -39
- metadata +42 -28
- data/Rakefile +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
|
4
|
-
|
5
|
-
SHA512:
|
6
|
-
|
7
|
-
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
data.tar.gz: 224cee40b0eced9582504764379f3f5dafae637c
|
4
|
+
metadata.gz: 5858e3f1715252601de72d47678dc9f215267254
|
5
|
+
SHA512:
|
6
|
+
data.tar.gz: 6b3d06c534eb907ae92c281b36de62967138bbc3788d536c92ad03b8d28d637dcf0ad0526fb66610dcc9b6cbc894a44e786c312bcfd6f93ae1ea29319f8aaf6f
|
7
|
+
metadata.gz: ed18f6eaea92fcec29d9b6b2200cb23704ad8b4090372493a81b67067b251176d71408231f8bc7e7c9de1a88c55cd854857d6fa153c67d79bf3a752b5fdb1df1
|
data/Gemfile
CHANGED
data/{LICENSE.txt → LICENSE}
RENAMED
File without changes
|
data/README.md
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# The Assert Testing Framework
|
2
2
|
|
3
|
-
Test::Unit style testing framework, just better than Test::Unit.
|
4
|
-
|
5
3
|
## Usage
|
6
4
|
|
7
5
|
```ruby
|
@@ -34,29 +32,36 @@ Running tests in random order, seeded with "56382"
|
|
34
32
|
* **Framework**: you define tests and the context they run in - Assert runs them. Everything is pure ruby so use any 3rd party testing tools you like. Create 3rd party tools that extend Assert behavior.
|
35
33
|
* **First Class**: everything is a first class object and can be extended to your liking (and should be)
|
36
34
|
* **MVC**: tests and how they are defined (M) and executed (C) are distinct from how you view the test results (V).
|
37
|
-
* **Backwards compatible**: (assuming a few minor tweaks) with Test::Unit test suites
|
38
35
|
|
39
36
|
## What Assert is not
|
40
37
|
|
41
|
-
* **
|
42
|
-
* **Unit/Functional/Integration/etc**: Assert is agnostic - you define whatever kinds of tests you like (one or more of the above) and assert runs them in context
|
43
|
-
* **Mock/Spec/BDD/etc**: Assert is the framework and there are a variety of 3rd party tools to do such things - feel free to use whatever you like
|
38
|
+
* **RSpec/spec-anything**: define tests using assertion statements
|
39
|
+
* **Unit/Functional/Integration/etc**: Assert is agnostic - you define whatever kinds of tests you like (one or more of the above) and assert runs them in context
|
40
|
+
* **Mock/Spec/BDD/etc**: Assert is the framework and there are a variety of 3rd party tools to do such things - feel free to use whatever you like
|
44
41
|
|
45
42
|
## Description
|
46
43
|
|
47
|
-
Assert is
|
44
|
+
Assert is an assertion style testing framework, meaning you use assertion statements to define your tests and create results. Assert uses class-based contexts so if you want to nest your contexts, use inheritance.
|
48
45
|
|
49
|
-
|
46
|
+
### Features
|
50
47
|
|
51
|
-
|
48
|
+
* `assert` [executable](https://github.com/redding/assert#cli) for running tests
|
49
|
+
* run tests by tab completing test file paths
|
50
|
+
* run only test files that have been modified
|
51
|
+
* random order test execution
|
52
|
+
* class-based contexts
|
53
|
+
* multiple before/setup & after/teardown blocks
|
54
|
+
* around blocks
|
55
|
+
* full backtrace for errors
|
56
|
+
* optionally pretty print objects in failure descriptions
|
57
|
+
* [stubbing API](https://github.com/redding/assert#stub)
|
58
|
+
* [factory API](https://github.com/redding/assert#factory)
|
59
|
+
* `skip` to skip tests
|
60
|
+
* `Ctrl+c` stops tests and prints failures
|
52
61
|
|
53
62
|
## Defining tests
|
54
63
|
|
55
|
-
|
56
|
-
|
57
|
-
## Factory
|
58
|
-
|
59
|
-
TODO
|
64
|
+
**Note**: Assert is tested using itself. The tests are a good place to look for examples and usage patterns.
|
60
65
|
|
61
66
|
## Stub
|
62
67
|
|
@@ -90,12 +95,13 @@ Assert.stub(myobj, :myval){ 'stub-meth' }
|
|
90
95
|
Assert.stub(myobj, :myval).with(123){ |val| val.to_s }
|
91
96
|
myobj.myval
|
92
97
|
# => StubError: arity mismatch
|
93
|
-
myobj.
|
98
|
+
myobj.myval(123)
|
94
99
|
# => '123'
|
95
|
-
myobj.
|
96
|
-
# => StubError: `
|
100
|
+
myobj.myval(456)
|
101
|
+
# => StubError: `myval(456)` not stubbed.
|
97
102
|
|
98
103
|
Assert.unstub(myobj, :mymeth)
|
104
|
+
Assert.unstub(myobj, :myval)
|
99
105
|
|
100
106
|
myobj.mymeth
|
101
107
|
# => 'meth'
|
@@ -105,15 +111,62 @@ myobj.myval(456)
|
|
105
111
|
# => 456
|
106
112
|
```
|
107
113
|
|
108
|
-
Assert comes with a
|
109
|
-
to be friendly and complain if stubbing doesn't match up with the object/method being stubbed:
|
114
|
+
Assert comes with a stubbing API - all it does is replace method calls. In general it tries to be friendly and complain if stubbing doesn't match up with the object/method being stubbed:
|
110
115
|
|
111
116
|
* each stub takes a block that is called in place of the method
|
112
117
|
* complains if you stub a method that the object doesn't respond to
|
113
118
|
* complains if you stub with an arity mismatch
|
114
|
-
* no methods added to `Object`
|
119
|
+
* no methods are added to `Object` to support stubbing
|
115
120
|
* stubs are auto-unstubbed on test teardown
|
116
121
|
|
122
|
+
## Factory
|
123
|
+
|
124
|
+
```ruby
|
125
|
+
require 'assert/factory'
|
126
|
+
|
127
|
+
Assert::Factory.integer #=> 15742
|
128
|
+
Assert::Factory.integer(3) #=> 2
|
129
|
+
Assert::Factory.float #=> 87.2716908041922
|
130
|
+
Assert::Factory.float(3) #=> 2.5466638138805
|
131
|
+
|
132
|
+
Assert::Factory.date #=> #<Date: 4915123/2,0,2299161>
|
133
|
+
Assert::Factory.time #=> Wed Sep 07 10:37:22 -0500 2016
|
134
|
+
Assert::Factory.datetime #=> #<DateTime: 302518290593/43200,0,2299161>
|
135
|
+
|
136
|
+
Assert::Factory.string #=> "boxsrbazeq"
|
137
|
+
Assert::Factory.string(3) #=> "rja"
|
138
|
+
Assert::Factory.text #=> "khcwyizmymajfzzxlfwz"
|
139
|
+
Assert::Factory.text(3) #=> "qcy"
|
140
|
+
Assert::Factory.slug #=> "licia"
|
141
|
+
Assert::Factory.slug(3) #=> "luu"
|
142
|
+
Assert::Factory.hex #=> "48797adb33"
|
143
|
+
Assert::Factory.hex(3) #=> "2fe"
|
144
|
+
Assert::Factory.url #=> "/cdqz/hqeq/zbsl"
|
145
|
+
Assert::Factory.email #=> "vyojvtxght@gmrin.com"
|
146
|
+
|
147
|
+
Assert::Factory.file_name #=> "kagahm.ybb"
|
148
|
+
Assert::Factory.path #=> "jbzf/omyk/vbha"
|
149
|
+
Assert::Factory.dir_path #=> "fxai/lwnq/urqu"
|
150
|
+
Assert::Factory.file_path #=> "bcno/pzxg/gois/mpvlfo.wdr"
|
151
|
+
|
152
|
+
Assert::Factory.binary #=> "\000\000\003S"
|
153
|
+
Assert::Factory.boolean #=> false
|
154
|
+
```
|
155
|
+
|
156
|
+
`Assert::Factory` is an API for generating randomized data. The randomization is tied to the runner seed so re-running tests with the same seed should produce the same random values.
|
157
|
+
|
158
|
+
You can also extend on your own factory class:
|
159
|
+
|
160
|
+
```ruby
|
161
|
+
module Factory
|
162
|
+
extend Assert::Factory
|
163
|
+
|
164
|
+
def self.data
|
165
|
+
{ Factory.string => Factory.string }
|
166
|
+
end
|
167
|
+
end
|
168
|
+
```
|
169
|
+
|
117
170
|
## CLI
|
118
171
|
|
119
172
|
```sh
|
@@ -139,7 +192,7 @@ As an example, say your test folder has a file structure like so:
|
|
139
192
|
* `$ assert test/complex/fast_tests.rb` - runs all tests in fast_tests.rb
|
140
193
|
* `$ assert test/basic test/comp` - runs all tests in basic_tests.rb, complex_tests.rb, fast_tests.rb and slow_tests.rb
|
141
194
|
|
142
|
-
All you need to do is pass some sort of existing file path (
|
195
|
+
All you need to do is pass some sort of existing file path (use tab-completion!) and Assert will find any test files and run the tests in them.
|
143
196
|
|
144
197
|
## Configuring Assert
|
145
198
|
|
@@ -149,25 +202,25 @@ Assert.configure do |config|
|
|
149
202
|
end
|
150
203
|
```
|
151
204
|
|
152
|
-
Assert uses a config pattern for specifying settings. Using this pattern, you can configure settings, extensions, custom views, etc. Settings can be configured in 4 different scopes and are applied in this order: User, Local,
|
205
|
+
Assert uses a config pattern for specifying settings. Using this pattern, you can configure settings, extensions, custom views, etc. Settings can be configured in 4 different scopes and are applied in this order: User, Local, ENV, CLI.
|
153
206
|
|
154
207
|
### User settings
|
155
208
|
|
156
|
-
Assert will look for and require the file `$HOME/.assert/init.rb`. Use this file to specify user settings. User settings can be overridden by Local,
|
209
|
+
Assert will look for and require the file `$HOME/.assert/init.rb`. Use this file to specify user settings. User settings can be overridden by Local, ENV, and CLI settings.
|
157
210
|
|
158
211
|
### Local settings
|
159
212
|
|
160
|
-
Assert will look for and require the file `./.assert.rb`. Use this file to specify project settings. Local settings can be overridden by
|
213
|
+
Assert will look for and require the file `./.assert.rb`. Use this file to specify project settings. Local settings can be overridden by ENV, and CLI settings.
|
161
214
|
|
162
215
|
To specify a custom local settings file path, use the `ASSERT_LOCALFILE` env var.
|
163
216
|
|
164
|
-
###
|
217
|
+
### ENV settings
|
165
218
|
|
166
|
-
Assert
|
219
|
+
Assert uses ENV vars to drive certain settings. Use these vars to specify specific environment settings. ENV settings can be overridden by CLI settings.
|
167
220
|
|
168
|
-
###
|
221
|
+
### CLI settings
|
169
222
|
|
170
|
-
Assert
|
223
|
+
Assert accepts options from its CLI. Use these options to specify absolute runtime settings. CLI settings are always applied last and cannot be overridden.
|
171
224
|
|
172
225
|
## Running Tests
|
173
226
|
|
@@ -203,7 +256,7 @@ end
|
|
203
256
|
|
204
257
|
### Test Order
|
205
258
|
|
206
|
-
The default runner object runs tests in random order. To run tests in a consistant order,
|
259
|
+
The default runner object runs tests in random order. To run tests in a consistant order, pass a custom runner seed:
|
207
260
|
|
208
261
|
In user/local settings file:
|
209
262
|
|
@@ -213,16 +266,34 @@ Assert.configure do |config|
|
|
213
266
|
end
|
214
267
|
```
|
215
268
|
|
269
|
+
Using an ENV var:
|
270
|
+
|
271
|
+
```sh
|
272
|
+
$ ASSERT_RUNNER_SEED=1234 assert
|
273
|
+
```
|
274
|
+
|
216
275
|
Using the CLI:
|
217
276
|
|
218
277
|
```sh
|
219
278
|
$ assert [-s|--runner-seed] 1234
|
220
279
|
```
|
221
280
|
|
222
|
-
|
281
|
+
### Run a single test
|
282
|
+
|
283
|
+
You can choose to run just a single test so that you can focus on making it pass without the overhead/noise from the output of the other tests in the file.
|
284
|
+
|
285
|
+
It is recommended that you only use this setting from the CLI. To run just a single test, pass its file path and line number:
|
223
286
|
|
224
287
|
```sh
|
225
|
-
$
|
288
|
+
$ assert [-t|--single-test] ./path/for/tests.rb:123
|
289
|
+
```
|
290
|
+
|
291
|
+
**Note**: by default Assert outputs, in the details of each non-passing result, the cmd to re-run the result's test:
|
292
|
+
|
293
|
+
```
|
294
|
+
FAIL: should pass
|
295
|
+
./test/unit/test_tests.rb:124
|
296
|
+
assert -t ./test/unit/test_tests.rb:123
|
226
297
|
```
|
227
298
|
|
228
299
|
### Verbose Output
|
@@ -456,7 +527,7 @@ end
|
|
456
527
|
However, the view handler you use is itself configurable. Define you own view handler class and specify it in your user/local settings:
|
457
528
|
|
458
529
|
```ruby
|
459
|
-
class MyCustomView < Assert::View
|
530
|
+
class MyCustomView < Assert::View
|
460
531
|
# define your view here...
|
461
532
|
end
|
462
533
|
|
@@ -467,7 +538,7 @@ end
|
|
467
538
|
|
468
539
|
### Anatomy of a View
|
469
540
|
|
470
|
-
A view class handles the logic and templating of test result output. A view class should inherit from `Assert::View
|
541
|
+
A view class handles the logic and templating of test result output. A view class should inherit from `Assert::View`. This defines default callback handlers for the test runner and gives access to a bunch of common helpers for reading test result data.
|
471
542
|
|
472
543
|
Each view should implement the callback handler methods to output information at different points during the running of a test suite. Callbacks have access to any view methods and should output information using `puts` and `prints`. See the `DefaultView` template for a usage example.
|
473
544
|
|
@@ -534,7 +605,7 @@ Tests produce results as they are executed. Every `assert` statement produces a
|
|
534
605
|
|
535
606
|
### View
|
536
607
|
|
537
|
-
A `View` object is responsible for rendering test result output. Assert provides a `Assert::View
|
608
|
+
A `View` object is responsible for rendering test result output. Assert provides a `Assert::View` object to provide common helpers and default runner callback handlers for building views. Assert also provides an `Assert::DefaultView` that it renders its output with. See the "Viewing Test Results" section below for more details.
|
538
609
|
|
539
610
|
### Macro
|
540
611
|
|
@@ -560,4 +631,4 @@ If submitting a Pull Request, please:
|
|
560
631
|
|
561
632
|
One note: please respect that Assert itself is intended to be the flexible, base-level, framework-type logic that should change little if at all. Pull requests for niche functionality or personal testing philosphy stuff will likely not be accepted.
|
562
633
|
|
563
|
-
If you wish to extend Assert for your niche purpose/desire/philosophy, please do so in it's own gem (preferrably named `assert-<whatever>`) that uses Assert as a dependency.
|
634
|
+
If you wish to extend Assert for your niche purpose/desire/philosophy, please do so in it's own gem (preferrably named `assert-<whatever>`) that uses Assert as a dependency.
|
data/assert.gemspec
CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.version = Assert::VERSION
|
9
9
|
gem.authors = ["Kelly Redding", "Collin Redding"]
|
10
10
|
gem.email = ["kelly@kellyredding.com", "collin.redding@me.com"]
|
11
|
-
gem.
|
12
|
-
gem.
|
11
|
+
gem.summary = %q{Assertion style testing framework.}
|
12
|
+
gem.description = %q{Assertion style testing framework.}
|
13
13
|
gem.homepage = "http://github.com/redding/assert"
|
14
14
|
gem.license = 'MIT'
|
15
15
|
|
data/lib/assert/assert_runner.rb
CHANGED
@@ -13,11 +13,12 @@ module Assert
|
|
13
13
|
Assert::CLI.bench('Apply settings') do
|
14
14
|
apply_user_settings
|
15
15
|
apply_local_settings
|
16
|
-
apply_option_settings(test_options)
|
17
16
|
apply_env_settings
|
17
|
+
apply_option_settings(test_options)
|
18
18
|
end
|
19
19
|
|
20
|
-
|
20
|
+
paths = test_paths.empty? ? [*self.config.test_dir] : test_paths
|
21
|
+
files = lookup_test_files(paths)
|
21
22
|
init(files, path_of(self.config.test_dir, files.first))
|
22
23
|
end
|
23
24
|
|
@@ -33,15 +34,20 @@ module Assert
|
|
33
34
|
end
|
34
35
|
|
35
36
|
# load the test files
|
36
|
-
self.config.
|
37
|
-
|
37
|
+
runner, suite, view = self.config.runner, self.config.suite, self.config.view
|
38
|
+
runner.before_load(test_files)
|
39
|
+
suite.before_load(test_files)
|
40
|
+
view.before_load(test_files)
|
41
|
+
Assert::CLI.bench("Require #{test_files.size} test files") do
|
38
42
|
test_files.each{ |p| require p }
|
39
43
|
end
|
40
44
|
if self.config.debug
|
41
45
|
puts Assert::CLI.debug_msg("Test files:")
|
42
46
|
test_files.each{ |f| puts Assert::CLI.debug_msg(" #{f}") }
|
43
47
|
end
|
44
|
-
|
48
|
+
runner.after_load
|
49
|
+
suite.after_load
|
50
|
+
view.after_load
|
45
51
|
end
|
46
52
|
|
47
53
|
def run
|
@@ -62,17 +68,19 @@ module Assert
|
|
62
68
|
safe_require(ENV['ASSERT_LOCALFILE'] || path_of(LOCAL_SETTINGS_FILE, Dir.pwd))
|
63
69
|
end
|
64
70
|
|
65
|
-
def apply_option_settings(options)
|
66
|
-
self.config.apply(options)
|
67
|
-
end
|
68
|
-
|
69
71
|
def apply_env_settings
|
70
72
|
self.config.runner_seed ENV['ASSERT_RUNNER_SEED'].to_i if ENV['ASSERT_RUNNER_SEED']
|
71
73
|
end
|
72
74
|
|
73
|
-
def
|
75
|
+
def apply_option_settings(options)
|
76
|
+
self.config.apply(options)
|
77
|
+
end
|
78
|
+
|
79
|
+
def lookup_test_files(test_paths)
|
74
80
|
file_paths = if self.config.changed_only
|
75
81
|
changed_test_files(test_paths)
|
82
|
+
elsif self.config.single_test?
|
83
|
+
globbed_test_files(self.config.single_test_file_path)
|
76
84
|
else
|
77
85
|
globbed_test_files(test_paths)
|
78
86
|
end
|
@@ -101,9 +109,8 @@ module Assert
|
|
101
109
|
require settings_file if File.exists?(settings_file)
|
102
110
|
end
|
103
111
|
|
104
|
-
# this method inspects a test path and finds the test dir path.
|
105
|
-
|
106
112
|
def path_of(segment, a_path)
|
113
|
+
# this method inspects a test path and finds the test dir path.
|
107
114
|
full_path = File.expand_path(a_path || '.', Dir.pwd)
|
108
115
|
seg_pos = full_path.index(segment_regex(segment))
|
109
116
|
File.join(seg_pos && (seg_pos > 0) ? full_path[0..(seg_pos-1)] : full_path, segment)
|
data/lib/assert/assertions.rb
CHANGED
data/lib/assert/cli.rb
CHANGED
@@ -36,6 +36,9 @@ module Assert
|
|
36
36
|
option 'changed_ref', 'reference for changes, use with `-c` opt', {
|
37
37
|
:abbrev => 'r', :value => ''
|
38
38
|
}
|
39
|
+
option 'single_test', 'only run the test on the given file/line', {
|
40
|
+
:abbrev => 't', :value => ''
|
41
|
+
}
|
39
42
|
option 'pp_objects', 'pretty-print objects in fail messages', {
|
40
43
|
:abbrev => 'p'
|
41
44
|
}
|
data/lib/assert/config.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
+
require 'assert/default_runner'
|
2
|
+
require 'assert/default_suite'
|
1
3
|
require 'assert/default_view'
|
2
|
-
require 'assert/
|
3
|
-
require 'assert/suite'
|
4
|
+
require 'assert/file_line'
|
4
5
|
require 'assert/utils'
|
5
6
|
|
6
7
|
module Assert
|
@@ -21,13 +22,14 @@ module Assert
|
|
21
22
|
settings :view, :suite, :runner
|
22
23
|
settings :test_dir, :test_helper, :test_file_suffixes
|
23
24
|
settings :changed_proc, :pp_proc, :use_diff_proc, :run_diff_proc
|
24
|
-
settings :runner_seed, :changed_only, :changed_ref, :
|
25
|
-
settings :capture_output, :halt_on_fail, :profile
|
25
|
+
settings :runner_seed, :changed_only, :changed_ref, :single_test
|
26
|
+
settings :pp_objects, :capture_output, :halt_on_fail, :profile
|
27
|
+
settings :verbose, :list, :debug
|
26
28
|
|
27
29
|
def initialize(settings = nil)
|
28
|
-
@suite = Assert::Suite.new(self)
|
29
30
|
@view = Assert::DefaultView.new(self, $stdout)
|
30
|
-
@
|
31
|
+
@suite = Assert::DefaultSuite.new(self)
|
32
|
+
@runner = Assert::DefaultRunner.new(self)
|
31
33
|
|
32
34
|
@test_dir = "test"
|
33
35
|
@test_helper = "helper.rb"
|
@@ -42,6 +44,7 @@ module Assert
|
|
42
44
|
@runner_seed = begin; srand; srand % 0xFFFF; end.to_i
|
43
45
|
@changed_only = false
|
44
46
|
@changed_ref = ''
|
47
|
+
@single_test = ''
|
45
48
|
@pp_objects = false
|
46
49
|
@capture_output = false
|
47
50
|
@halt_on_fail = true
|
@@ -59,6 +62,21 @@ module Assert
|
|
59
62
|
self.send(name.to_s, settings[name])
|
60
63
|
end
|
61
64
|
end
|
65
|
+
@single_test_file_line = nil
|
66
|
+
end
|
67
|
+
|
68
|
+
def single_test?
|
69
|
+
!self.single_test.empty?
|
70
|
+
end
|
71
|
+
|
72
|
+
def single_test_file_line
|
73
|
+
@single_test_file_line ||= Assert::FileLine.parse(
|
74
|
+
File.expand_path(self.single_test, Dir.pwd)
|
75
|
+
)
|
76
|
+
end
|
77
|
+
|
78
|
+
def single_test_file_path
|
79
|
+
self.single_test_file_line.file if self.single_test_file_line
|
62
80
|
end
|
63
81
|
|
64
82
|
end
|
@@ -2,10 +2,22 @@ module Assert
|
|
2
2
|
|
3
3
|
module ConfigHelpers
|
4
4
|
|
5
|
+
def runner; self.config.runner; end
|
6
|
+
def suite; self.config.suite; end
|
7
|
+
def view; self.config.view; end
|
8
|
+
|
5
9
|
def runner_seed
|
6
10
|
self.config.runner_seed
|
7
11
|
end
|
8
12
|
|
13
|
+
def single_test?
|
14
|
+
self.config.single_test?
|
15
|
+
end
|
16
|
+
|
17
|
+
def single_test_file_line
|
18
|
+
self.config.single_test_file_line
|
19
|
+
end
|
20
|
+
|
9
21
|
def count(type)
|
10
22
|
self.config.suite.count(type)
|
11
23
|
end
|
@@ -18,43 +30,18 @@ module Assert
|
|
18
30
|
self.count(:pass) == self.count(:results)
|
19
31
|
end
|
20
32
|
|
21
|
-
|
22
|
-
def run_time(format = '%.6f')
|
33
|
+
def formatted_run_time(format = '%.6f')
|
23
34
|
format % self.config.suite.run_time
|
24
35
|
end
|
25
36
|
|
26
|
-
|
27
|
-
def test_rate(format = '%.6f')
|
37
|
+
def formatted_test_rate(format = '%.6f')
|
28
38
|
format % self.config.suite.test_rate
|
29
39
|
end
|
30
40
|
|
31
|
-
|
32
|
-
def result_rate(format = '%.6f')
|
41
|
+
def formatted_result_rate(format = '%.6f')
|
33
42
|
format % self.config.suite.result_rate
|
34
43
|
end
|
35
44
|
|
36
|
-
# get a uniq list of contexts for the test suite
|
37
|
-
def suite_contexts
|
38
|
-
@suite_contexts ||= self.config.suite.tests.inject([]) do |contexts, test|
|
39
|
-
contexts << test.context_info.klass
|
40
|
-
end.uniq
|
41
|
-
end
|
42
|
-
|
43
|
-
def ordered_suite_contexts
|
44
|
-
self.suite_contexts.sort{ |a,b| a.to_s <=> b.to_s }
|
45
|
-
end
|
46
|
-
|
47
|
-
# get a uniq list of files containing contexts for the test suite
|
48
|
-
def suite_files
|
49
|
-
@suite_files ||= self.config.suite.tests.inject([]) do |files, test|
|
50
|
-
files << test.context_info.file
|
51
|
-
end.uniq
|
52
|
-
end
|
53
|
-
|
54
|
-
def ordered_suite_files
|
55
|
-
self.suite_files.sort{ |a,b| a.to_s <=> b.to_s }
|
56
|
-
end
|
57
|
-
|
58
45
|
def show_test_profile_info?
|
59
46
|
!!self.config.profile
|
60
47
|
end
|