assert 2.17.0 → 2.18.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/README.md +66 -41
- data/assert.gemspec +2 -3
- data/lib/assert.rb +0 -10
- data/lib/assert/actual_value.rb +127 -0
- data/lib/assert/assert_runner.rb +0 -3
- data/lib/assert/assertions.rb +10 -23
- data/lib/assert/cli.rb +30 -46
- data/lib/assert/config.rb +0 -4
- data/lib/assert/config_helpers.rb +0 -4
- data/lib/assert/context.rb +18 -9
- data/lib/assert/context/let_dsl.rb +13 -0
- data/lib/assert/context/method_missing.rb +19 -0
- data/lib/assert/context/setup_dsl.rb +0 -4
- data/lib/assert/context/subject_dsl.rb +23 -28
- data/lib/assert/context/suite_dsl.rb +0 -4
- data/lib/assert/context/test_dsl.rb +0 -4
- data/lib/assert/context_info.rb +0 -4
- data/lib/assert/default_runner.rb +0 -4
- data/lib/assert/default_suite.rb +0 -5
- data/lib/assert/default_view.rb +0 -4
- data/lib/assert/factory.rb +0 -3
- data/lib/assert/file_line.rb +0 -4
- data/lib/assert/macro.rb +0 -3
- data/lib/assert/macros/methods.rb +4 -10
- data/lib/assert/result.rb +2 -17
- data/lib/assert/runner.rb +0 -3
- data/lib/assert/stub.rb +15 -1
- data/lib/assert/suite.rb +0 -4
- data/lib/assert/test.rb +2 -7
- data/lib/assert/utils.rb +0 -4
- data/lib/assert/version.rb +1 -1
- data/lib/assert/view.rb +0 -3
- data/lib/assert/view_helpers.rb +0 -11
- data/log/{.gitkeep → .keep} +0 -0
- data/test/helper.rb +23 -29
- data/test/support/factory.rb +14 -0
- data/test/support/inherited_stuff.rb +0 -2
- data/test/system/stub_tests.rb +332 -352
- data/test/system/test_tests.rb +98 -124
- data/test/unit/actual_value_tests.rb +335 -0
- data/test/unit/assert_tests.rb +121 -46
- data/test/unit/assertions/assert_block_tests.rb +30 -35
- data/test/unit/assertions/assert_empty_tests.rb +33 -35
- data/test/unit/assertions/assert_equal_tests.rb +75 -83
- data/test/unit/assertions/assert_file_exists_tests.rb +32 -36
- data/test/unit/assertions/assert_includes_tests.rb +38 -41
- data/test/unit/assertions/assert_instance_of_tests.rb +34 -37
- data/test/unit/assertions/assert_kind_of_tests.rb +34 -37
- data/test/unit/assertions/assert_match_tests.rb +34 -37
- data/test/unit/assertions/assert_nil_tests.rb +30 -35
- data/test/unit/assertions/assert_raises_tests.rb +54 -60
- data/test/unit/assertions/assert_respond_to_tests.rb +36 -39
- data/test/unit/assertions/assert_same_tests.rb +86 -88
- data/test/unit/assertions/assert_true_false_tests.rb +60 -66
- data/test/unit/assertions_tests.rb +14 -17
- data/test/unit/config_helpers_tests.rb +41 -39
- data/test/unit/config_tests.rb +38 -37
- data/test/unit/context/let_dsl_tests.rb +10 -0
- data/test/unit/context/setup_dsl_tests.rb +68 -87
- data/test/unit/context/subject_dsl_tests.rb +15 -49
- data/test/unit/context/suite_dsl_tests.rb +15 -20
- data/test/unit/context/test_dsl_tests.rb +50 -57
- data/test/unit/context_info_tests.rb +23 -18
- data/test/unit/context_tests.rb +183 -194
- data/test/unit/default_runner_tests.rb +1 -7
- data/test/unit/default_suite_tests.rb +57 -56
- data/test/unit/factory_tests.rb +5 -6
- data/test/unit/file_line_tests.rb +33 -39
- data/test/unit/macro_tests.rb +14 -18
- data/test/unit/result_tests.rb +159 -196
- data/test/unit/runner_tests.rb +64 -71
- data/test/unit/suite_tests.rb +58 -59
- data/test/unit/test_tests.rb +125 -136
- data/test/unit/utils_tests.rb +43 -54
- data/test/unit/view_helpers_tests.rb +54 -58
- data/test/unit/view_tests.rb +22 -27
- metadata +15 -10
- data/tmp/.gitkeep +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ed950be1bca18deac9277678d40abc99072df13d5e23d21460c7e9b72a1c4ab
|
4
|
+
data.tar.gz: cd7c0eec0a939400f384c6e8d69b7fbb27856f3ed9fdfca25ae1ab48404c822f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a0334a2851a5b2742bab2ed51b6583e8ff47c9a89c605dfd10d84f0a20a6f17a16ba59179c53bf89b1dd0ed40673fb3909966c7476410d8ee1a52e580ec5766
|
7
|
+
data.tar.gz: a6f1f6db5d115e7e535ec0305d62970480f7b831eb8026e940011db2fcb3576244084fbf121f1ec499c61853d03dac3a76034dd7bdd3c187b778795ce0a3b5fd
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -8,11 +8,9 @@
|
|
8
8
|
require "assert"
|
9
9
|
|
10
10
|
class MyTests < Assert::Context
|
11
|
-
|
12
11
|
test "something" do
|
13
|
-
|
12
|
+
assert_that(1).equals(1)
|
14
13
|
end
|
15
|
-
|
16
14
|
end
|
17
15
|
```
|
18
16
|
|
@@ -35,13 +33,13 @@ Running tests in random order, seeded with "56382"
|
|
35
33
|
|
36
34
|
## What Assert is not
|
37
35
|
|
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
|
40
|
-
* **Mock/Spec/BDD/etc**: Assert is the framework and there are a variety of 3rd party tools to do such things
|
36
|
+
* **RSpec/spec-anything**: define tests using assertion statements.
|
37
|
+
* **Unit/Functional/Integration/etc**: Assert is agnostic - you define whatever kinds of tests you like and Assert runs them in context.
|
38
|
+
* **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.
|
41
39
|
|
42
40
|
## Description
|
43
41
|
|
44
|
-
Assert is an assertion
|
42
|
+
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.
|
45
43
|
|
46
44
|
### Features
|
47
45
|
|
@@ -52,6 +50,7 @@ Assert is an assertion style testing framework, meaning you use assertion statem
|
|
52
50
|
* class-based contexts
|
53
51
|
* multiple before/setup & after/teardown blocks
|
54
52
|
* around blocks
|
53
|
+
* `let` value declarations
|
55
54
|
* full backtrace for errors
|
56
55
|
* optionally pretty print objects in failure descriptions
|
57
56
|
* [stubbing API](https://github.com/redding/assert#stub)
|
@@ -73,58 +72,86 @@ Assert comes with a stubbing API - all it does is replace method calls. In gene
|
|
73
72
|
* no methods are added to `Object` to support stubbing
|
74
73
|
* stubs are auto-unstubbed on test teardown
|
75
74
|
|
76
|
-
**Note**: Assert's stubbing logic has been extracted into a separate gem: [MuchStub](https://github.com/redding/much-stub/#muchstub). However, the main `Assert.{stub|unstub|stub_send|etc}` api is still available (it just proxies MuchStub now).
|
75
|
+
**Note**: Assert's stubbing logic has been extracted into a separate gem: [MuchStub](https://github.com/redding/much-stub/#muchstub). However, the main `Assert.{stub|unstub|stub_send|stub_tap|etc}` api is still available (it just proxies to MuchStub now).
|
77
76
|
|
78
77
|
```ruby
|
79
78
|
myclass = Class.new do
|
80
|
-
def
|
81
|
-
|
79
|
+
def my_method
|
80
|
+
"my_method"
|
81
|
+
end
|
82
|
+
|
83
|
+
def my_value(value)
|
84
|
+
value
|
85
|
+
end
|
82
86
|
end
|
83
|
-
|
87
|
+
my_object = myclass.new
|
84
88
|
|
85
|
-
|
86
|
-
# => "
|
87
|
-
|
89
|
+
my_object.my_method
|
90
|
+
# => "my_method"
|
91
|
+
my_object.my_value(123)
|
88
92
|
# => 123
|
89
|
-
|
93
|
+
my_object.my_value(456)
|
90
94
|
# => 456
|
91
95
|
|
92
|
-
Assert.stub(
|
93
|
-
|
94
|
-
# => StubError: `
|
95
|
-
Assert.stub(
|
96
|
-
|
96
|
+
Assert.stub(my_object, :my_method)
|
97
|
+
my_object.my_method
|
98
|
+
# => StubError: `my_method` not stubbed.
|
99
|
+
Assert.stub(my_object, :my_method){ "stub-meth" }
|
100
|
+
my_object.my_method
|
97
101
|
# => "stub-meth"
|
98
|
-
|
102
|
+
my_object.my_method(123)
|
99
103
|
# => StubError: arity mismatch
|
100
|
-
Assert.stub(
|
104
|
+
Assert.stub(my_object, :my_method).with(123){ "stub-meth" }
|
101
105
|
# => StubError: arity mismatch
|
102
|
-
Assert.stub_send(myobj, :mymeth) # call to the original method post-stub
|
103
|
-
# => "meth"
|
104
106
|
|
105
|
-
|
107
|
+
# Call the original method after it has been stubbed.
|
108
|
+
Assert.stub_send(my_object, :my_method)
|
109
|
+
# => "my_method"
|
110
|
+
|
111
|
+
Assert.stub(my_object, :my_value){ "stub-meth" }
|
106
112
|
# => StubError: arity mismatch
|
107
|
-
Assert.stub(
|
108
|
-
|
113
|
+
Assert.stub(my_object, :my_value).with(123){ |val| val.to_s }
|
114
|
+
my_object.my_value
|
109
115
|
# => StubError: arity mismatch
|
110
|
-
|
116
|
+
my_object.my_value(123)
|
111
117
|
# => "123"
|
112
|
-
|
113
|
-
# => StubError: `
|
114
|
-
|
118
|
+
my_object.my_value(456)
|
119
|
+
# => StubError: `my_value(456)` not stubbed.
|
120
|
+
|
121
|
+
# Call the original method after it has been stubbed.
|
122
|
+
Assert.stub_send(my_object, :my_value, 123)
|
115
123
|
# => 123
|
116
|
-
Assert.stub_send(
|
124
|
+
Assert.stub_send(my_object, :my_value, 456)
|
117
125
|
# => 456
|
118
126
|
|
119
|
-
|
120
|
-
|
127
|
+
# Stub a method while preserving its behavior and return value.
|
128
|
+
my_value_called_with = nil
|
129
|
+
Assert.stub_tap(my_object, :my_value) { |value, *args|
|
130
|
+
my_value_called_with = args
|
131
|
+
Assert.stub(value, :to_s) { "FIREWORKS!" }
|
132
|
+
}
|
133
|
+
value = my_object.my_value(123)
|
134
|
+
# => 123
|
135
|
+
my_value_called_with
|
136
|
+
# => [123]
|
137
|
+
value.to_s
|
138
|
+
# =>"FIREWORKS!"
|
139
|
+
|
140
|
+
# Unstub individual stubs
|
141
|
+
Assert.unstub(my_object, :my_method)
|
142
|
+
Assert.unstub(my_object, :my_value)
|
121
143
|
|
122
|
-
|
123
|
-
|
124
|
-
|
144
|
+
# OR blanket unstub all stubs
|
145
|
+
Assert.unstub!
|
146
|
+
|
147
|
+
my_object.my_method
|
148
|
+
# => "my_method"
|
149
|
+
my_object.my_value(123)
|
125
150
|
# => 123
|
126
|
-
|
151
|
+
value = my_object.my_value(456)
|
127
152
|
# => 456
|
153
|
+
value.to_s
|
154
|
+
# => "456"
|
128
155
|
```
|
129
156
|
|
130
157
|
## Factory
|
@@ -413,13 +440,11 @@ If you just want to disable this feature completely:
|
|
413
440
|
|
414
441
|
```ruby
|
415
442
|
Assert.configure do |config|
|
416
|
-
|
417
443
|
# run nothing if the `-c` flag is given
|
418
444
|
config.changed_proc Proc.new{ |config, test_paths| [] }
|
419
445
|
|
420
446
|
# run all test paths if the `-c` flag is given
|
421
447
|
config.changed_proc Proc.new{ |config, test_paths| test_paths }
|
422
|
-
|
423
448
|
end
|
424
449
|
```
|
425
450
|
|
@@ -642,4 +667,4 @@ If submitting a Pull Request, please:
|
|
642
667
|
|
643
668
|
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.
|
644
669
|
|
645
|
-
If you wish to extend Assert for your niche purpose/desire/philosophy, please do so in
|
670
|
+
If you wish to extend Assert for your niche purpose/desire/philosophy, please do so in its own gem (preferrably named `assert-<whatever>`) that uses Assert as a dependency.
|
data/assert.gemspec
CHANGED
@@ -18,9 +18,8 @@ Gem::Specification.new do |gem|
|
|
18
18
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
19
19
|
gem.require_paths = ["lib"]
|
20
20
|
|
21
|
-
gem.required_ruby_version =
|
21
|
+
gem.required_ruby_version = "~> 2.5"
|
22
22
|
|
23
23
|
gem.add_dependency("much-factory", ["~> 0.1.0"])
|
24
|
-
gem.add_dependency("much-stub", ["~> 0.1.
|
25
|
-
|
24
|
+
gem.add_dependency("much-stub", ["~> 0.1.4"])
|
26
25
|
end
|
data/lib/assert.rb
CHANGED
@@ -9,7 +9,6 @@ require "assert/utils"
|
|
9
9
|
require "assert/view"
|
10
10
|
|
11
11
|
module Assert
|
12
|
-
|
13
12
|
def self.config; @config ||= Config.new; end
|
14
13
|
def self.configure; yield self.config if block_given?; end
|
15
14
|
|
@@ -21,14 +20,5 @@ module Assert
|
|
21
20
|
class Context
|
22
21
|
teardown{ Assert.unstub! }
|
23
22
|
end
|
24
|
-
|
25
23
|
end
|
26
24
|
|
27
|
-
# Kernel#caller_locations polyfill for pre ruby 2.0.0
|
28
|
-
if RUBY_VERSION =~ /\A1\..+/ && !Kernel.respond_to?(:caller_locations)
|
29
|
-
module Kernel
|
30
|
-
def caller_locations(start = 1, length = nil)
|
31
|
-
length ? caller[start, length] : caller[start..-1]
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -0,0 +1,127 @@
|
|
1
|
+
require "much-stub"
|
2
|
+
|
3
|
+
module Assert; end
|
4
|
+
class Assert::ActualValue
|
5
|
+
def initialize(value, context:)
|
6
|
+
@value = value
|
7
|
+
@context = context
|
8
|
+
end
|
9
|
+
|
10
|
+
def returns_true(*args)
|
11
|
+
@context.assert_block(*args, &@value)
|
12
|
+
end
|
13
|
+
|
14
|
+
def does_not_return_true(*args)
|
15
|
+
@context.assert_not_block(*args, &@value)
|
16
|
+
end
|
17
|
+
|
18
|
+
def raises(*expected_exceptions)
|
19
|
+
@context.assert_raises(*expected_exceptions, &@value)
|
20
|
+
end
|
21
|
+
|
22
|
+
def does_not_raise(*expected_exceptions)
|
23
|
+
@context.assert_nothing_raised(*expected_exceptions, &@value)
|
24
|
+
end
|
25
|
+
|
26
|
+
def is_a_kind_of(expected_class, *args)
|
27
|
+
@context.assert_kind_of(expected_class, @value, *args)
|
28
|
+
end
|
29
|
+
alias_method :is_kind_of, :is_a_kind_of
|
30
|
+
|
31
|
+
def is_not_a_kind_of(expected_class, *args)
|
32
|
+
@context.assert_not_kind_of(expected_class, @value, *args)
|
33
|
+
end
|
34
|
+
alias_method :is_not_kind_of, :is_not_a_kind_of
|
35
|
+
|
36
|
+
def is_an_instance_of(expected_class, *args)
|
37
|
+
@context.assert_instance_of(expected_class, @value, *args)
|
38
|
+
end
|
39
|
+
alias_method :is_instance_of, :is_an_instance_of
|
40
|
+
|
41
|
+
def is_not_an_instance_of(expected_class, *args)
|
42
|
+
@context.assert_not_instance_of(expected_class, @value, *args)
|
43
|
+
end
|
44
|
+
alias_method :is_not_instance_of, :is_not_an_instance_of
|
45
|
+
|
46
|
+
def responds_to(expected_method_name, *args)
|
47
|
+
@context.assert_responds_to(expected_method_name, @value, *args)
|
48
|
+
end
|
49
|
+
|
50
|
+
def does_not_respond_to(expected_method_name, *args)
|
51
|
+
@context.assert_not_responds_to(expected_method_name, @value, *args)
|
52
|
+
end
|
53
|
+
|
54
|
+
def is_the_same_as(expected_object, *args)
|
55
|
+
@context.assert_same(expected_object, @value, *args)
|
56
|
+
end
|
57
|
+
|
58
|
+
def is_not_the_same_as(expected_object, *args)
|
59
|
+
@context.assert_not_same(expected_object, @value, *args)
|
60
|
+
end
|
61
|
+
|
62
|
+
def equals(expected_value, *args)
|
63
|
+
@context.assert_equal(expected_value, @value, *args)
|
64
|
+
end
|
65
|
+
alias_method :is_equal_to, :equals
|
66
|
+
|
67
|
+
def does_not_equal(expected_value, *args)
|
68
|
+
@context.assert_not_equal(expected_value, @value, *args)
|
69
|
+
end
|
70
|
+
alias_method :is_not_equal_to, :does_not_equal
|
71
|
+
|
72
|
+
def matches(expected_regex, *args)
|
73
|
+
@context.assert_match(expected_regex, @value, *args)
|
74
|
+
end
|
75
|
+
|
76
|
+
def does_not_match(expected_regex, *args)
|
77
|
+
@context.assert_not_match(expected_regex, @value, *args)
|
78
|
+
end
|
79
|
+
|
80
|
+
def is_empty(*args)
|
81
|
+
@context.assert_empty(@value, *args)
|
82
|
+
end
|
83
|
+
|
84
|
+
def is_not_empty(*args)
|
85
|
+
@context.assert_not_empty(@value, *args)
|
86
|
+
end
|
87
|
+
|
88
|
+
def includes(object, *args)
|
89
|
+
@context.assert_includes(object, @value, *args)
|
90
|
+
end
|
91
|
+
|
92
|
+
def does_not_include(object, *args)
|
93
|
+
@context.assert_not_includes(object, @value, *args)
|
94
|
+
end
|
95
|
+
|
96
|
+
def is_nil(*args)
|
97
|
+
@context.assert_nil(@value, *args)
|
98
|
+
end
|
99
|
+
|
100
|
+
def is_not_nil(*args)
|
101
|
+
@context.assert_not_nil(@value, *args)
|
102
|
+
end
|
103
|
+
|
104
|
+
def is_true(*args)
|
105
|
+
@context.assert_true(@value, *args)
|
106
|
+
end
|
107
|
+
|
108
|
+
def is_not_true(*args)
|
109
|
+
@context.assert_not_true(@value, *args)
|
110
|
+
end
|
111
|
+
|
112
|
+
def is_false(*args)
|
113
|
+
@context.assert_false(@value, *args)
|
114
|
+
end
|
115
|
+
|
116
|
+
def is_not_false(*args)
|
117
|
+
@context.assert_not_false(@value, *args)
|
118
|
+
end
|
119
|
+
|
120
|
+
def is_a_file(*args)
|
121
|
+
@context.assert_file_exists(@value, *args)
|
122
|
+
end
|
123
|
+
|
124
|
+
def is_not_a_file(*args)
|
125
|
+
@context.assert_not_file_exists(@value, *args)
|
126
|
+
end
|
127
|
+
end
|
data/lib/assert/assert_runner.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require "assert/cli"
|
2
2
|
|
3
3
|
module Assert
|
4
|
-
|
5
4
|
class AssertRunner
|
6
5
|
USER_SETTINGS_FILE = ".assert/init.rb"
|
7
6
|
LOCAL_SETTINGS_FILE = ".assert.rb"
|
@@ -117,7 +116,5 @@ module Assert
|
|
117
116
|
end
|
118
117
|
|
119
118
|
def segment_regex(seg); /^#{seg}$|^#{seg}\/|\/#{seg}\/|\/#{seg}$/; end
|
120
|
-
|
121
119
|
end
|
122
|
-
|
123
120
|
end
|
data/lib/assert/assertions.rb
CHANGED
@@ -1,8 +1,15 @@
|
|
1
1
|
require "assert/utils"
|
2
2
|
|
3
3
|
module Assert
|
4
|
-
|
5
4
|
module Assertions
|
5
|
+
IGNORED_ASSERTION_HELPERS =
|
6
|
+
[
|
7
|
+
:assert_throws, :assert_nothing_thrown,
|
8
|
+
:assert_operator, :refute_operator,
|
9
|
+
:assert_in_epsilon, :refute_in_epsilon,
|
10
|
+
:assert_in_delta, :refute_in_delta,
|
11
|
+
:assert_send
|
12
|
+
]
|
6
13
|
|
7
14
|
def assert_block(desc = nil)
|
8
15
|
assert(yield, desc){ "Expected block to return a true value." }
|
@@ -27,7 +34,7 @@ module Assert
|
|
27
34
|
alias_method :refute_empty, :assert_not_empty
|
28
35
|
|
29
36
|
def assert_equal(exp, act, desc = nil)
|
30
|
-
assert(
|
37
|
+
assert(act == exp, desc) do
|
31
38
|
c = __assert_config__
|
32
39
|
exp_show = Assert::U.show_for_diff(exp, c)
|
33
40
|
act_show = Assert::U.show_for_diff(act, c)
|
@@ -42,7 +49,7 @@ module Assert
|
|
42
49
|
end
|
43
50
|
|
44
51
|
def assert_not_equal(exp, act, desc = nil)
|
45
|
-
assert(
|
52
|
+
assert(act != exp, desc) do
|
46
53
|
c = __assert_config__
|
47
54
|
exp_show = Assert::U.show_for_diff(exp, c)
|
48
55
|
act_show = Assert::U.show_for_diff(act, c)
|
@@ -246,24 +253,6 @@ module Assert
|
|
246
253
|
end
|
247
254
|
alias_method :refute_same, :assert_not_same
|
248
255
|
|
249
|
-
# ignored assertion helpers
|
250
|
-
|
251
|
-
IGNORED_ASSERTION_HELPERS = [
|
252
|
-
:assert_throws, :assert_nothing_thrown,
|
253
|
-
:assert_operator, :refute_operator,
|
254
|
-
:assert_in_epsilon, :refute_in_epsilon,
|
255
|
-
:assert_in_delta, :refute_in_delta,
|
256
|
-
:assert_send
|
257
|
-
]
|
258
|
-
def method_missing(method, *args, &block)
|
259
|
-
if IGNORED_ASSERTION_HELPERS.include?(method.to_sym)
|
260
|
-
ignore "The assertion `#{method}` is not supported."\
|
261
|
-
" Please use another assertion or the basic `assert`."
|
262
|
-
else
|
263
|
-
super
|
264
|
-
end
|
265
|
-
end
|
266
|
-
|
267
256
|
private
|
268
257
|
|
269
258
|
def __assert_config__
|
@@ -328,7 +317,5 @@ module Assert
|
|
328
317
|
super("exception not expected, but raised:")
|
329
318
|
end
|
330
319
|
end
|
331
|
-
|
332
320
|
end
|
333
|
-
|
334
321
|
end
|
data/lib/assert/cli.rb
CHANGED
@@ -4,9 +4,7 @@ require "assert/assert_runner"
|
|
4
4
|
require "assert/version"
|
5
5
|
|
6
6
|
module Assert
|
7
|
-
|
8
7
|
class CLI
|
9
|
-
|
10
8
|
def self.debug?(args)
|
11
9
|
args.include?("-d") || args.include?("--debug")
|
12
10
|
end
|
@@ -36,40 +34,29 @@ module Assert
|
|
36
34
|
def initialize(*args)
|
37
35
|
@args = args
|
38
36
|
@cli = CLIRB.new do
|
39
|
-
option "runner_seed", "use a given seed to run tests",
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
option "
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
option "
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
option "
|
58
|
-
|
59
|
-
|
60
|
-
option "profile", "output test profile info", {
|
61
|
-
:abbrev => "e"
|
62
|
-
}
|
63
|
-
option "verbose", "output verbose runtime test info", {
|
64
|
-
:abbrev => "v"
|
65
|
-
}
|
66
|
-
option "list", "list test files on $stdout", {
|
67
|
-
:abbrev => "l"
|
68
|
-
}
|
37
|
+
option "runner_seed", "use a given seed to run tests",
|
38
|
+
abbrev: "s", value: Integer
|
39
|
+
option "changed_only", "only run test files with changes",
|
40
|
+
abbrev: "c"
|
41
|
+
option "changed_ref", "reference for changes, use with `-c` opt",
|
42
|
+
abbrev: "r", value: ""
|
43
|
+
option "single_test", "only run the test on the given file/line",
|
44
|
+
abbrev: "t", value: ""
|
45
|
+
option "pp_objects", "pretty-print objects in fail messages",
|
46
|
+
abbrev: "p"
|
47
|
+
option "capture_output", "capture stdout and display in result details",
|
48
|
+
abbrev: "o"
|
49
|
+
option "halt_on_fail", "halt a test when it fails",
|
50
|
+
abbrev: "h"
|
51
|
+
option "profile", "output test profile info",
|
52
|
+
abbrev: "e"
|
53
|
+
option "verbose", "output verbose runtime test info",
|
54
|
+
abbrev: "v"
|
55
|
+
option "list", "list test files on $stdout",
|
56
|
+
abbrev: "l"
|
57
|
+
|
69
58
|
# show loaded test files, cli err backtraces, etc
|
70
|
-
option "debug", "run in debug mode",
|
71
|
-
:abbrev => "d"
|
72
|
-
}
|
59
|
+
option "debug", "run in debug mode", abbrev: "d"
|
73
60
|
end
|
74
61
|
end
|
75
62
|
|
@@ -100,7 +87,6 @@ module Assert
|
|
100
87
|
"Options:"\
|
101
88
|
"#{@cli}"
|
102
89
|
end
|
103
|
-
|
104
90
|
end
|
105
91
|
|
106
92
|
module RoundedMillisecondTime
|
@@ -111,7 +97,7 @@ module Assert
|
|
111
97
|
end
|
112
98
|
end
|
113
99
|
|
114
|
-
class CLIRB # Version 1.
|
100
|
+
class CLIRB # Version 1.1.0, https://github.com/redding/cli.rb
|
115
101
|
Error = Class.new(RuntimeError);
|
116
102
|
HelpExit = Class.new(RuntimeError); VersionExit = Class.new(RuntimeError)
|
117
103
|
attr_reader :argv, :args, :opts, :data
|
@@ -143,27 +129,25 @@ module Assert
|
|
143
129
|
class Option
|
144
130
|
attr_reader :name, :opt_name, :desc, :abbrev, :value, :klass, :parser_args
|
145
131
|
|
146
|
-
def initialize(name,
|
147
|
-
|
148
|
-
@
|
149
|
-
@value, @klass = gvalinfo(
|
132
|
+
def initialize(name, desc = nil, abbrev: nil, value: nil)
|
133
|
+
@name, @desc = name, desc || ""
|
134
|
+
@opt_name, @abbrev = parse_name_values(name, abbrev)
|
135
|
+
@value, @klass = gvalinfo(value)
|
150
136
|
@parser_args = if [TrueClass, FalseClass, NilClass].include?(@klass)
|
151
137
|
["-#{@abbrev}", "--[no-]#{@opt_name}", @desc]
|
152
138
|
else
|
153
|
-
["-#{@abbrev}", "--#{@opt_name}
|
139
|
+
["-#{@abbrev}", "--#{@opt_name} VALUE", @klass, @desc]
|
154
140
|
end
|
155
141
|
end
|
156
142
|
|
157
143
|
private
|
158
144
|
|
159
145
|
def parse_name_values(name, custom_abbrev)
|
160
|
-
[ (processed_name = name.to_s.strip.downcase)
|
146
|
+
[ (processed_name = name.to_s.strip.downcase).gsub("_", "-"),
|
161
147
|
custom_abbrev || processed_name.gsub(/[^a-z]/, "").chars.first || "a"
|
162
148
|
]
|
163
149
|
end
|
164
|
-
def gvalinfo(v); v.kind_of?(Class) ? [nil,
|
165
|
-
def gklass(k); k == Fixnum ? Integer : k; end
|
150
|
+
def gvalinfo(v); v.kind_of?(Class) ? [nil,v] : [v,v.class]; end
|
166
151
|
end
|
167
152
|
end
|
168
|
-
|
169
153
|
end
|