assert 2.17.0 → 2.18.4
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 +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
|