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
data/lib/assert/test.rb
CHANGED
@@ -99,7 +99,7 @@ module Assert
|
|
99
99
|
scope = self.context_class.new(self, self.config, result_callback)
|
100
100
|
start_time = Time.now
|
101
101
|
capture_output do
|
102
|
-
self.context_class.
|
102
|
+
self.context_class.run_arounds(scope) do
|
103
103
|
run_test(scope, result_callback)
|
104
104
|
end
|
105
105
|
end
|
@@ -129,7 +129,7 @@ module Assert
|
|
129
129
|
def run_test(scope, result_callback)
|
130
130
|
begin
|
131
131
|
# run any assert style 'setup do' setups
|
132
|
-
self.context_class.
|
132
|
+
self.context_class.run_setups(scope)
|
133
133
|
# run any test/unit style 'def setup' setups
|
134
134
|
scope.setup if scope.respond_to?(:setup)
|
135
135
|
# run the code block
|
@@ -145,7 +145,7 @@ module Assert
|
|
145
145
|
ensure
|
146
146
|
begin
|
147
147
|
# run any assert style 'teardown do' teardowns
|
148
|
-
self.context_class.
|
148
|
+
self.context_class.run_teardowns(scope)
|
149
149
|
# run any test/unit style 'def teardown' teardowns
|
150
150
|
scope.teardown if scope.respond_to?(:teardown)
|
151
151
|
rescue Result::TestFailure => err
|
data/lib/assert/version.rb
CHANGED
data/lib/assert/view.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
require 'assert/config'
|
2
|
+
require 'assert/config_helpers'
|
2
3
|
require 'assert/suite'
|
3
4
|
require 'assert/view_helpers'
|
4
5
|
|
5
6
|
module Assert
|
6
7
|
|
7
|
-
|
8
|
+
class View
|
9
|
+
include Assert::ConfigHelpers
|
10
|
+
include Assert::ViewHelpers
|
8
11
|
|
9
12
|
# this method is used to bring in custom user-specific views
|
10
13
|
# require views by passing either a full path to the view ruby file
|
@@ -26,87 +29,68 @@ module Assert
|
|
26
29
|
end
|
27
30
|
end
|
28
31
|
|
29
|
-
|
30
|
-
include Assert::ViewHelpers
|
32
|
+
# setup options and their default values
|
31
33
|
|
32
|
-
|
34
|
+
option 'styled', false
|
35
|
+
option 'pass_styles' # none
|
36
|
+
option 'fail_styles' # none
|
37
|
+
option 'error_styles' # none
|
38
|
+
option 'skip_styles' # none
|
39
|
+
option 'ignore_styles' # none
|
33
40
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
option 'ignore_styles' # none
|
41
|
+
option 'pass_abbrev', '.'
|
42
|
+
option 'fail_abbrev', 'F'
|
43
|
+
option 'ignore_abbrev', 'I'
|
44
|
+
option 'skip_abbrev', 'S'
|
45
|
+
option 'error_abbrev', 'E'
|
40
46
|
|
41
|
-
|
42
|
-
option 'fail_abbrev', 'F'
|
43
|
-
option 'ignore_abbrev', 'I'
|
44
|
-
option 'skip_abbrev', 'S'
|
45
|
-
option 'error_abbrev', 'E'
|
47
|
+
attr_reader :config
|
46
48
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
@output_io.sync = true if @output_io.respond_to?(:sync=)
|
52
|
-
end
|
53
|
-
|
54
|
-
def view
|
55
|
-
self
|
56
|
-
end
|
57
|
-
|
58
|
-
def is_tty?
|
59
|
-
!!@output_io.isatty
|
60
|
-
end
|
61
|
-
|
62
|
-
def ansi_styled_msg(msg, result_or_sym)
|
63
|
-
return msg if !self.is_tty? || !self.styled
|
64
|
-
code = Assert::ViewHelpers::Ansi.code_for(*self.send("#{result_or_sym.to_sym}_styles"))
|
65
|
-
return msg if code.empty?
|
66
|
-
code + msg + Assert::ViewHelpers::Ansi.code_for(:reset)
|
67
|
-
end
|
68
|
-
|
69
|
-
# Callbacks
|
70
|
-
|
71
|
-
# define callback handlers to output information. handlers are
|
72
|
-
# instance_eval'd in the scope of the view instance. any stdout is captured
|
73
|
-
# and sent to the io stream.
|
74
|
-
|
75
|
-
def fire(callback, *args)
|
76
|
-
self.send(callback, *args)
|
77
|
-
end
|
49
|
+
def initialize(config, output_io)
|
50
|
+
@config , @output_io, = config, output_io
|
51
|
+
@output_io.sync = true if @output_io.respond_to?(:sync=)
|
52
|
+
end
|
78
53
|
|
79
|
-
|
80
|
-
# * `before_load`: called at the beginning, before the suite is loaded
|
81
|
-
# * `after_load`: called after the suite is loaded, just before `on_start`
|
82
|
-
# functionally equivalent to `on_start`
|
83
|
-
# * `on_start`: called when a loaded test suite starts running
|
84
|
-
# * `before_test`: called before a test starts running
|
85
|
-
# the test is passed as an arg
|
86
|
-
# * `on_result`: called when a running tests generates a result
|
87
|
-
# the result is passed as an arg
|
88
|
-
# * `after_test`: called after a test finishes running
|
89
|
-
# the test is passed as an arg
|
90
|
-
# * `on_finish`: called when the test suite is finished running
|
91
|
-
# * `on_interrupt`: called when the test suite is interrupted while running
|
92
|
-
# the interrupt exception is passed as an arg
|
93
|
-
|
94
|
-
def before_load(test_files); end
|
95
|
-
def after_load; end
|
96
|
-
def on_start; end
|
97
|
-
def before_test(test); end
|
98
|
-
def on_result(result); end
|
99
|
-
def after_test(test); end
|
100
|
-
def on_finish; end
|
101
|
-
def on_interrupt(err); end
|
102
|
-
|
103
|
-
# IO capture
|
104
|
-
|
105
|
-
def puts(*args); @output_io.puts(*args); end
|
106
|
-
def print(*args); @output_io.print(*args); end
|
54
|
+
def view; self; end
|
107
55
|
|
56
|
+
def is_tty?
|
57
|
+
!!@output_io.isatty
|
108
58
|
end
|
109
59
|
|
60
|
+
# Callbacks
|
61
|
+
|
62
|
+
# define callback handlers to output information. These will be called
|
63
|
+
# by the test runner.
|
64
|
+
|
65
|
+
# available callbacks from the runner:
|
66
|
+
# * `before_load`: called at the beginning, before the suite is loaded
|
67
|
+
# * `after_load`: called after the suite is loaded, just before `on_start`
|
68
|
+
# functionally equivalent to `on_start`
|
69
|
+
# * `on_start`: called when a loaded test suite starts running
|
70
|
+
# * `before_test`: called before a test starts running
|
71
|
+
# the test is passed as an arg
|
72
|
+
# * `on_result`: called when a running tests generates a result
|
73
|
+
# the result is passed as an arg
|
74
|
+
# * `after_test`: called after a test finishes running
|
75
|
+
# the test is passed as an arg
|
76
|
+
# * `on_finish`: called when the test suite is finished running
|
77
|
+
# * `on_interrupt`: called when the test suite is interrupted while running
|
78
|
+
# the interrupt exception is passed as an arg
|
79
|
+
|
80
|
+
def before_load(test_files); end
|
81
|
+
def after_load; end
|
82
|
+
def on_start; end
|
83
|
+
def before_test(test); end
|
84
|
+
def on_result(result); end
|
85
|
+
def after_test(test); end
|
86
|
+
def on_finish; end
|
87
|
+
def on_interrupt(err); end
|
88
|
+
|
89
|
+
# IO capture
|
90
|
+
|
91
|
+
def puts(*args); @output_io.puts(*args); end
|
92
|
+
def print(*args); @output_io.print(*args); end
|
93
|
+
|
110
94
|
end
|
111
95
|
|
112
96
|
end
|
data/lib/assert/view_helpers.rb
CHANGED
@@ -38,43 +38,6 @@ module Assert
|
|
38
38
|
format % test.result_rate
|
39
39
|
end
|
40
40
|
|
41
|
-
# get all the result details for a set of tests
|
42
|
-
def result_details_for(tests, result_order = :normal)
|
43
|
-
test_index = 0
|
44
|
-
tests.collect do |test|
|
45
|
-
test_index += 1
|
46
|
-
|
47
|
-
details = test.results.collect do |result|
|
48
|
-
ResultDetails.new(result, test, test_index)
|
49
|
-
end
|
50
|
-
details.reverse! if result_order == :reversed
|
51
|
-
details
|
52
|
-
end.compact.flatten
|
53
|
-
end
|
54
|
-
|
55
|
-
# get all the result details for a set of tests matching a file or context
|
56
|
-
def matched_result_details_for(match, tests, result_order = :normal)
|
57
|
-
context_match = match.kind_of?(Class) && match.ancestors.include?(Assert::Context)
|
58
|
-
file_match = match.kind_of?(String)
|
59
|
-
|
60
|
-
matching_tests = if context_match
|
61
|
-
tests.select {|test| test.context_info.klass == match}
|
62
|
-
elsif file_match
|
63
|
-
tests.select {|test| test.context_info.file == match}
|
64
|
-
else
|
65
|
-
tests
|
66
|
-
end
|
67
|
-
|
68
|
-
result_details_for(matching_tests, result_order)
|
69
|
-
end
|
70
|
-
|
71
|
-
# only show result details for failed or errored results
|
72
|
-
# show result details if a skip or passed result was issues w/ a message
|
73
|
-
def show_result_details?(result)
|
74
|
-
[:fail, :error].include?(result.to_sym) ||
|
75
|
-
!!([:skip, :ignore].include?(result.to_sym) && result.message)
|
76
|
-
end
|
77
|
-
|
78
41
|
# show any captured output
|
79
42
|
def captured_output(output)
|
80
43
|
"--- stdout ---\n"\
|
@@ -82,6 +45,11 @@ module Assert
|
|
82
45
|
"--------------"
|
83
46
|
end
|
84
47
|
|
48
|
+
# show any captured output
|
49
|
+
def re_run_test_cmd(test_id)
|
50
|
+
"assert -t #{test_id.gsub(Dir.pwd, '.')}"
|
51
|
+
end
|
52
|
+
|
85
53
|
def test_count_statement
|
86
54
|
"#{self.count(:tests)} test#{'s' if self.count(:tests) != 1}"
|
87
55
|
end
|
@@ -218,17 +186,11 @@ module Assert
|
|
218
186
|
style_names.map{ |n| "\e[#{CODES[n]}m" if CODES.key?(n) }.compact.join('')
|
219
187
|
end
|
220
188
|
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
def initialize(result, test, test_index)
|
228
|
-
@result = result
|
229
|
-
@test = test
|
230
|
-
@test_index = test_index
|
231
|
-
@output = test.output
|
189
|
+
def ansi_styled_msg(msg, result_or_sym)
|
190
|
+
return msg if !self.is_tty? || !self.styled
|
191
|
+
code = Assert::ViewHelpers::Ansi.code_for(*self.send("#{result_or_sym.to_sym}_styles"))
|
192
|
+
return msg if code.empty?
|
193
|
+
code + msg + Assert::ViewHelpers::Ansi.code_for(:reset)
|
232
194
|
end
|
233
195
|
|
234
196
|
end
|
data/test/helper.rb
CHANGED
@@ -8,3 +8,12 @@ $LOAD_PATH.unshift(ROOT_PATH)
|
|
8
8
|
# require pry for debugging (`binding.pry`)
|
9
9
|
require 'pry'
|
10
10
|
require 'test/support/factory'
|
11
|
+
|
12
|
+
# 1.8.7 backfills
|
13
|
+
|
14
|
+
# Array#sample
|
15
|
+
if !(a = Array.new).respond_to?(:sample) && a.respond_to?(:choice)
|
16
|
+
class Array
|
17
|
+
alias_method :sample, :choice
|
18
|
+
end
|
19
|
+
end
|
data/test/support/factory.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
require 'assert/config'
|
2
|
+
require 'assert/default_suite'
|
2
3
|
require 'assert/factory'
|
3
4
|
require 'assert/result'
|
4
|
-
require 'assert/suite'
|
5
5
|
require 'assert/test'
|
6
6
|
|
7
7
|
module Factory
|
8
8
|
extend Assert::Factory
|
9
9
|
|
10
10
|
def self.context_info_called_from
|
11
|
-
"#{Factory.path}_tests.rb:#{Factory.integer}"
|
11
|
+
File.expand_path("#{Factory.path}_tests.rb:#{Factory.integer}", Dir.pwd)
|
12
12
|
end
|
13
13
|
|
14
14
|
def self.context_info(context_klass = nil)
|
15
|
-
Assert::
|
15
|
+
Assert::ContextInfo.new(context_klass || self.context_class, context_info_called_from)
|
16
16
|
end
|
17
17
|
|
18
18
|
# Generate an anonymous `Context` inherited from `Assert::Context` by default.
|
@@ -34,7 +34,7 @@ module Factory
|
|
34
34
|
def self.test(*args, &block)
|
35
35
|
config, context_info, name = [
|
36
36
|
args.last.kind_of?(Assert::Config) ? args.pop : self.modes_off_config,
|
37
|
-
args.last.kind_of?(Assert::
|
37
|
+
args.last.kind_of?(Assert::ContextInfo) ? args.pop : self.context_info,
|
38
38
|
args.last.kind_of?(::String) ? args.pop : 'a test'
|
39
39
|
]
|
40
40
|
Assert::Test.for_block(name, context_info, config, &block)
|
@@ -75,7 +75,7 @@ module Factory
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def self.modes_off_suite
|
78
|
-
Assert::
|
78
|
+
Assert::DefaultSuite.new(self.modes_off_config)
|
79
79
|
end
|
80
80
|
|
81
81
|
def self.modes_off_context_class(*args, &block)
|
@@ -35,6 +35,26 @@ module Assert::Assertions
|
|
35
35
|
messages.each_with_index{ |msg, n| assert_match /^#{exp[n]}/, msg }
|
36
36
|
end
|
37
37
|
|
38
|
+
should "return any raised exception instance" do
|
39
|
+
error = nil
|
40
|
+
error_msg = Factory.string
|
41
|
+
test = Factory.test do
|
42
|
+
error = assert_raises(RuntimeError){ raise(RuntimeError, error_msg) }
|
43
|
+
end
|
44
|
+
test.run
|
45
|
+
|
46
|
+
assert_not_nil error
|
47
|
+
assert_kind_of RuntimeError, error
|
48
|
+
assert_equal error_msg, error.message
|
49
|
+
|
50
|
+
test = Factory.test do
|
51
|
+
error = assert_raises(RuntimeError){ }
|
52
|
+
end
|
53
|
+
test.run
|
54
|
+
|
55
|
+
assert_nil error
|
56
|
+
end
|
57
|
+
|
38
58
|
end
|
39
59
|
|
40
60
|
class AssertNothingRaisedTests < Assert::Context
|
@@ -14,26 +14,46 @@ module Assert::ConfigHelpers
|
|
14
14
|
def config
|
15
15
|
# use the assert config since it has tests, contexts, etc
|
16
16
|
# also maybe use a fresh config that is empty
|
17
|
-
@config ||= [Assert.config, Assert::Config.new].
|
17
|
+
@config ||= [Assert.config, Assert::Config.new].sample
|
18
18
|
end
|
19
19
|
end
|
20
20
|
@helpers = @helpers_class.new
|
21
21
|
end
|
22
22
|
subject{ @helpers }
|
23
23
|
|
24
|
-
should have_imeths :
|
25
|
-
should have_imeths :
|
26
|
-
should have_imeths :
|
27
|
-
should have_imeths :
|
24
|
+
should have_imeths :runner, :suite, :view
|
25
|
+
should have_imeths :runner_seed, :single_test?, :single_test_file_line
|
26
|
+
should have_imeths :count, :tests?, :all_pass?
|
27
|
+
should have_imeths :formatted_run_time
|
28
|
+
should have_imeths :formatted_test_rate, :formatted_result_rate
|
28
29
|
should have_imeths :show_test_profile_info?, :show_test_verbose_info?
|
29
30
|
should have_imeths :ocurring_result_types
|
30
31
|
|
32
|
+
should "know the config's runner, suite and view" do
|
33
|
+
assert_equal subject.config.runner, subject.runner
|
34
|
+
assert_equal subject.config.suite, subject.suite
|
35
|
+
assert_equal subject.config.view, subject.view
|
36
|
+
end
|
37
|
+
|
31
38
|
should "know its runner seed" do
|
32
39
|
assert_equal subject.config.runner_seed, subject.runner_seed
|
33
40
|
end
|
34
41
|
|
42
|
+
should "know if it is in single test mode" do
|
43
|
+
Assert.stub(subject.config, :single_test?){ true }
|
44
|
+
assert_true subject.single_test?
|
45
|
+
|
46
|
+
Assert.stub(subject.config, :single_test?){ false }
|
47
|
+
assert_false subject.single_test?
|
48
|
+
end
|
49
|
+
|
50
|
+
should "know its single test file line" do
|
51
|
+
exp = subject.config.single_test_file_line
|
52
|
+
assert_equal exp, subject.single_test_file_line
|
53
|
+
end
|
54
|
+
|
35
55
|
should "know how to count things on the suite" do
|
36
|
-
thing = [:pass, :fail, :results, :tests].
|
56
|
+
thing = [:pass, :fail, :results, :tests].sample
|
37
57
|
assert_equal subject.config.suite.count(thing), subject.count(thing)
|
38
58
|
end
|
39
59
|
|
@@ -46,33 +66,13 @@ module Assert::ConfigHelpers
|
|
46
66
|
format = '%.6f'
|
47
67
|
|
48
68
|
exp = format % subject.config.suite.run_time
|
49
|
-
assert_equal exp, subject.
|
69
|
+
assert_equal exp, subject.formatted_run_time(format)
|
50
70
|
|
51
71
|
exp = format % subject.config.suite.test_rate
|
52
|
-
assert_equal exp, subject.
|
72
|
+
assert_equal exp, subject.formatted_test_rate(format)
|
53
73
|
|
54
74
|
exp = format % subject.config.suite.result_rate
|
55
|
-
assert_equal exp, subject.
|
56
|
-
end
|
57
|
-
|
58
|
-
should "know its suite contexts and ordered suite contexts" do
|
59
|
-
exp = subject.config.suite.tests.inject([]) do |contexts, test|
|
60
|
-
contexts << test.context_info.klass
|
61
|
-
end.uniq
|
62
|
-
assert_equal exp, subject.suite_contexts
|
63
|
-
|
64
|
-
exp = subject.suite_contexts.sort{ |a,b| a.to_s <=> b.to_s }
|
65
|
-
assert_equal exp, subject.ordered_suite_contexts
|
66
|
-
end
|
67
|
-
|
68
|
-
should "know its suite files and ordered suite files" do
|
69
|
-
exp = subject.config.suite.tests.inject([]) do |files, test|
|
70
|
-
files << test.context_info.file
|
71
|
-
end.uniq
|
72
|
-
assert_equal exp, subject.suite_files
|
73
|
-
|
74
|
-
exp = subject.suite_files.sort{ |a,b| a.to_s <=> b.to_s }
|
75
|
-
assert_equal exp, subject.ordered_suite_files
|
75
|
+
assert_equal exp, subject.formatted_result_rate(format)
|
76
76
|
end
|
77
77
|
|
78
78
|
should "know whether to show test profile info" do
|
data/test/unit/config_tests.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
require 'assert'
|
2
2
|
require 'assert/config'
|
3
3
|
|
4
|
+
require 'assert/default_runner'
|
5
|
+
require 'assert/default_suite'
|
4
6
|
require 'assert/default_view'
|
7
|
+
require 'assert/file_line'
|
5
8
|
require 'assert/runner'
|
6
|
-
require 'assert/suite'
|
7
9
|
|
8
10
|
class Assert::Config
|
9
11
|
|
@@ -14,22 +16,24 @@ class Assert::Config
|
|
14
16
|
end
|
15
17
|
subject{ @config }
|
16
18
|
|
17
|
-
should have_imeths :
|
19
|
+
should have_imeths :view, :suite, :runner
|
18
20
|
should have_imeths :test_dir, :test_helper, :test_file_suffixes
|
19
21
|
should have_imeths :changed_proc, :pp_proc, :use_diff_proc, :run_diff_proc
|
20
|
-
should have_imeths :runner_seed, :changed_only, :changed_ref, :
|
21
|
-
should have_imeths :capture_output, :halt_on_fail, :profile
|
22
|
-
should have_imeths :
|
22
|
+
should have_imeths :runner_seed, :changed_only, :changed_ref, :single_test
|
23
|
+
should have_imeths :pp_objects, :capture_output, :halt_on_fail, :profile
|
24
|
+
should have_imeths :verbose, :list, :debug
|
25
|
+
should have_imeths :apply, :single_test?
|
26
|
+
should have_imeths :single_test_file_line, :single_test_file_path
|
23
27
|
|
24
28
|
should "default the view, suite, and runner" do
|
25
|
-
assert_kind_of Assert::DefaultView,
|
26
|
-
assert_kind_of Assert::
|
27
|
-
assert_kind_of Assert::
|
29
|
+
assert_kind_of Assert::DefaultView, subject.view
|
30
|
+
assert_kind_of Assert::DefaultSuite, subject.suite
|
31
|
+
assert_kind_of Assert::DefaultRunner, subject.runner
|
28
32
|
end
|
29
33
|
|
30
34
|
should "default the test dir/helper/suffixes" do
|
31
|
-
assert_equal 'test',
|
32
|
-
assert_equal 'helper.rb',
|
35
|
+
assert_equal 'test', subject.test_dir
|
36
|
+
assert_equal 'helper.rb', subject.test_helper
|
33
37
|
assert_equal ['_tests.rb', "_test.rb"], subject.test_file_suffixes
|
34
38
|
end
|
35
39
|
|
@@ -44,6 +48,7 @@ class Assert::Config
|
|
44
48
|
assert_not_nil subject.runner_seed
|
45
49
|
assert_not subject.changed_only
|
46
50
|
assert_empty subject.changed_ref
|
51
|
+
assert_empty subject.single_test
|
47
52
|
assert_not subject.pp_objects
|
48
53
|
assert_not subject.capture_output
|
49
54
|
assert subject.halt_on_fail
|
@@ -62,6 +67,34 @@ class Assert::Config
|
|
62
67
|
assert_not Assert::Config.new(:halt_on_fail => false).halt_on_fail
|
63
68
|
end
|
64
69
|
|
70
|
+
should "know if it is in single test mode" do
|
71
|
+
assert_false subject.single_test?
|
72
|
+
|
73
|
+
subject.apply(:single_test => Factory.string)
|
74
|
+
assert_true subject.single_test?
|
75
|
+
end
|
76
|
+
|
77
|
+
should "know its single test file line" do
|
78
|
+
exp = Assert::FileLine.parse(File.expand_path('', Dir.pwd))
|
79
|
+
assert_equal exp, subject.single_test_file_line
|
80
|
+
|
81
|
+
file_line_path = "#{Factory.path}_tests.rb:#{Factory.integer}"
|
82
|
+
subject.apply(:single_test => file_line_path)
|
83
|
+
|
84
|
+
exp = Assert::FileLine.parse(File.expand_path(file_line_path, Dir.pwd))
|
85
|
+
assert_equal exp, subject.single_test_file_line
|
86
|
+
end
|
87
|
+
|
88
|
+
should "know its single test file path" do
|
89
|
+
exp = Assert::FileLine.parse(File.expand_path('', Dir.pwd)).file
|
90
|
+
assert_equal exp, subject.single_test_file_path
|
91
|
+
|
92
|
+
path = "#{Factory.path}_tests.rb"
|
93
|
+
file_line_path = "#{path}:#{Factory.integer}"
|
94
|
+
subject.apply(:single_test => file_line_path)
|
95
|
+
assert_equal File.expand_path(path, Dir.pwd), subject.single_test_file_path
|
96
|
+
end
|
97
|
+
|
65
98
|
end
|
66
99
|
|
67
100
|
end
|