speckle 0.1.26 → 0.1.27
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 +8 -8
- data/CHANGELOG.md +6 -0
- data/Rakefile +15 -12
- data/lib/dsl.riml +4 -4
- data/lib/expectation.riml +4 -4
- data/lib/logger/logger.riml +32 -34
- data/lib/matchers/between_matcher.riml +3 -6
- data/lib/matchers/boolean_matcher.riml +1 -1
- data/lib/matchers/equality_matcher.riml +8 -6
- data/lib/matchers/length_matcher.riml +1 -1
- data/lib/matchers/match_tester.riml +2 -3
- data/lib/matchers/within_matcher.riml +9 -11
- data/lib/reporters/base_reporter.riml +3 -3
- data/lib/reporters/dotmatrix_reporter.riml +4 -4
- data/lib/reporters/fivemat_reporter.riml +6 -6
- data/lib/reporters/min_reporter.riml +4 -4
- data/lib/reporters/spec_reporter.riml +6 -6
- data/lib/runners/runner.riml +4 -4
- data/lib/runners/spec_runner.riml +19 -18
- data/lib/speckle/cli/environment.rb +5 -3
- data/lib/speckle/version.rb +1 -1
- data/lib/speckle.riml +2 -2
- data/lib/utils/spec_timer.riml +1 -1
- data/lib/writers/buffer_writer.riml +6 -4
- data/spec/stacktrace_spec.riml +1 -1
- data/speckle.gemspec +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MzQwM2I1M2QyNDM1ZWVhY2M4MGZiNzU5MGY0NmQyMzI3MjVhMDlmMQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OTNhMWFlZTY4NTBmNzJiMjI1OGI1OTdhYmNhYzU1NjVjZjY3OGU4OQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OGFjNDRlMzI1YjVkY2E2MDJiNmU1MDE1ZTRhMDdiNjE5YTBhYmFhOTQ4MzA1
|
10
|
+
ZTcwMGNlZDY2ZGQ1NzBhZjU1YjNmYjVkZjkzM2YxZmM0OTVlOGFjZDU2ZGJk
|
11
|
+
YTFiN2FmYWExYTFjZWZjMGY5OWUyNGFkNzUyNGMxODg5ZGU3ZDk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MWNhNGRkZmEwNzM2NWJiOWQ0NTcxZjU5YTMyZjAxNzMxNDJkNGE1N2U3ZmZm
|
14
|
+
ZTYzM2FmZjllNTc1ZGJjNmI1MTIxMzExMWFiNDAwZGMzNDBjNTJlZTI5ZWI5
|
15
|
+
OGUyYTQzOWUzZWM2NjY1YmM4ZTNmYWM2OWI2NDBlMzM1Y2FkNTM=
|
data/CHANGELOG.md
ADDED
data/Rakefile
CHANGED
@@ -143,16 +143,19 @@ namespace :speckle do
|
|
143
143
|
require 'riml'
|
144
144
|
|
145
145
|
opts = get_riml_opts(libs, build_dir)
|
146
|
+
Riml::FileRollback.trap(:INT, :QUIT, :KILL) { $stderr.print("\n"); exit(1) }
|
146
147
|
verbose true do
|
147
148
|
#sh "bundle exec riml -c #{t} -I #{TEST_LIBS} -o #{BUILD_DIR}"
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
149
|
+
Riml::FileRollback.guard do
|
150
|
+
TEST_SOURCES.each do |t|
|
151
|
+
puts "Compiling: #{t} "
|
152
|
+
Riml.compile_files(t, opts)
|
153
|
+
|
154
|
+
spec_dir = "#{BUILD_DIR}/#{File.dirname(t)}"
|
155
|
+
verbose DEBUG do
|
156
|
+
mkdir_p "#{spec_dir}"
|
157
|
+
mv "#{BUILD_DIR}/#{File.basename(t).ext('vim')}", "#{spec_dir}"
|
158
|
+
end
|
156
159
|
end
|
157
160
|
end
|
158
161
|
end
|
@@ -221,13 +224,13 @@ namespace :speckle do
|
|
221
224
|
begin
|
222
225
|
verbose DEBUG do
|
223
226
|
launch_file = get_launch_cmd_file()
|
224
|
-
File.delete(TEST_LOG) if File.
|
225
|
-
File.delete(TEST_EXIT_FILE) if File.
|
226
|
-
File.delete(PROFILE_PATH) if File.
|
227
|
+
File.delete(TEST_LOG) if File.exists?(TEST_LOG)
|
228
|
+
File.delete(TEST_EXIT_FILE) if File.exists?(TEST_EXIT_FILE)
|
229
|
+
File.delete(PROFILE_PATH) if File.exists?(PROFILE_PATH)
|
227
230
|
|
228
231
|
sh "#{TEST_VIM} #{get_vim_options()} -S #{launch_file.path}"
|
229
232
|
launch_file.unlink
|
230
|
-
if File.
|
233
|
+
if File.exists?(TEST_EXIT_FILE)
|
231
234
|
sh "cat #{TEST_LOG}"
|
232
235
|
if PROFILE
|
233
236
|
puts ''
|
data/lib/dsl.riml
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
unless g:speckle_env?
|
2
2
|
g:speckle_env = {}
|
3
3
|
g:speckle_env.matchers = g:MatchersConstructor()
|
4
4
|
g:speckle_env.assertions = 0
|
@@ -9,7 +9,7 @@ def expect(actual)
|
|
9
9
|
env.actual = actual
|
10
10
|
matchers = env.matchers
|
11
11
|
|
12
|
-
expectation = g:ExpectationConstructor(
|
12
|
+
expectation = g:ExpectationConstructor(actual)
|
13
13
|
expectation.load(matchers)
|
14
14
|
|
15
15
|
return expectation
|
@@ -28,11 +28,11 @@ def define_matcher(ok_name, not_ok_name, matcher)
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def get_logger()
|
31
|
-
unless
|
31
|
+
unless g:logger?
|
32
32
|
g:logger = g:LoggerConstructor()
|
33
33
|
end
|
34
34
|
|
35
35
|
return g:logger
|
36
36
|
end
|
37
37
|
|
38
|
-
logger = get_logger()
|
38
|
+
s:logger = get_logger()
|
data/lib/expectation.riml
CHANGED
@@ -13,7 +13,7 @@ class g:Expectation
|
|
13
13
|
for match_item in match_items
|
14
14
|
func_name = "g:Expectation_#{match_item.name}"
|
15
15
|
matcher_func = <<EOS
|
16
|
-
function! #{func_name}(...) dict
|
16
|
+
function! #{func_name}(...) dict
|
17
17
|
if a:0 == 0
|
18
18
|
let expected = 'null'
|
19
19
|
else
|
@@ -22,10 +22,10 @@ function! #{func_name}(...) dict
|
|
22
22
|
|
23
23
|
let matcher_name = '#{match_item.name}'
|
24
24
|
let match_tester = g:MatchTesterConstructor()
|
25
|
-
call match_tester.test_from_env(matcher_name, expected)
|
26
|
-
endfunction
|
25
|
+
call match_tester.test_from_env(matcher_name, expected)
|
26
|
+
endfunction
|
27
27
|
EOS
|
28
|
-
|
28
|
+
exec matcher_func
|
29
29
|
|
30
30
|
self[match_item.name] = function(func_name)
|
31
31
|
end
|
data/lib/logger/logger.riml
CHANGED
@@ -23,6 +23,30 @@ class Logger
|
|
23
23
|
self.colors.off = 0
|
24
24
|
end
|
25
25
|
|
26
|
+
defm debug(*args)
|
27
|
+
self.do_log(args, 'debug')
|
28
|
+
end
|
29
|
+
|
30
|
+
defm info(*args)
|
31
|
+
self.do_log(args, 'info')
|
32
|
+
end
|
33
|
+
|
34
|
+
defm log(*args)
|
35
|
+
self.do_log(args, 'info')
|
36
|
+
end
|
37
|
+
|
38
|
+
defm warn(*args)
|
39
|
+
self.do_log(args, 'warn')
|
40
|
+
end
|
41
|
+
|
42
|
+
defm error(*args)
|
43
|
+
self.do_log(args, 'error')
|
44
|
+
end
|
45
|
+
|
46
|
+
defm fatal(*args)
|
47
|
+
self.do_log(args, 'fatal')
|
48
|
+
end
|
49
|
+
|
26
50
|
defm add_log_writer(log_writer)
|
27
51
|
add(self.log_writers, log_writer)
|
28
52
|
end
|
@@ -43,18 +67,20 @@ class Logger
|
|
43
67
|
return self.get_level_num(level) >= self.get_level_num(self.level)
|
44
68
|
end
|
45
69
|
|
46
|
-
|
70
|
+
" private methods
|
71
|
+
|
72
|
+
def do_log(args, level)
|
47
73
|
if self.is_loggable(level)
|
48
74
|
msg = self.args_to_message(args)
|
49
75
|
self.send_log(msg, level)
|
50
76
|
end
|
51
77
|
end
|
52
78
|
|
53
|
-
|
79
|
+
def args_to_message(args)
|
54
80
|
return join(args, ' ')
|
55
81
|
end
|
56
82
|
|
57
|
-
|
83
|
+
def send_log(msg, level)
|
58
84
|
color_msg = self.to_color(msg, level)
|
59
85
|
|
60
86
|
for log_writer in self.log_writers
|
@@ -66,7 +92,7 @@ class Logger
|
|
66
92
|
end
|
67
93
|
end
|
68
94
|
|
69
|
-
|
95
|
+
def to_color(msg, level)
|
70
96
|
color = self.colors[level]
|
71
97
|
if color != 0
|
72
98
|
return "[#{color}#{msg}[0m"
|
@@ -75,39 +101,11 @@ class Logger
|
|
75
101
|
end
|
76
102
|
end
|
77
103
|
|
78
|
-
defm debug(...)
|
79
|
-
self.do_log(a:000, 'debug')
|
80
|
-
end
|
81
|
-
|
82
|
-
defm info(...)
|
83
|
-
self.do_log(a:000, 'info')
|
84
|
-
end
|
85
|
-
|
86
|
-
defm log(...)
|
87
|
-
self.do_log(a:000, 'info')
|
88
|
-
end
|
89
|
-
|
90
|
-
defm warn(...)
|
91
|
-
self.do_log(a:000, 'warn')
|
92
|
-
end
|
93
|
-
|
94
|
-
defm error(...)
|
95
|
-
self.do_log(a:000, 'error')
|
96
|
-
end
|
97
|
-
|
98
|
-
defm fatal(...)
|
99
|
-
self.do_log(a:000, 'fatal')
|
100
|
-
end
|
101
|
-
|
102
104
|
end
|
103
105
|
|
104
106
|
def get_logger()
|
105
|
-
unless
|
106
|
-
g:logger = new Logger()
|
107
|
-
end
|
108
|
-
|
107
|
+
g:logger = new Logger() unless g:logger?
|
109
108
|
return g:logger
|
110
109
|
end
|
111
110
|
|
112
|
-
logger = get_logger()
|
113
|
-
|
111
|
+
s:logger = get_logger()
|
@@ -1,19 +1,16 @@
|
|
1
1
|
class BetweenMatcher
|
2
2
|
defm match(bounds, actual)
|
3
|
-
min = bounds
|
4
|
-
max = bounds[1]
|
3
|
+
[min, max] = bounds
|
5
4
|
return actual >= min && actual <= max
|
6
5
|
end
|
7
6
|
|
8
7
|
defm failure_message_for_match(bounds, actual)
|
9
|
-
min = bounds
|
10
|
-
max = bounds[1]
|
8
|
+
[min, max] = bounds
|
11
9
|
return "expected “#{actual}” to be between “#{min} .. #{max}”"
|
12
10
|
end
|
13
11
|
|
14
12
|
defm failure_message_for_mismatch(bounds, actual)
|
15
|
-
min = bounds
|
16
|
-
max = bounds[1]
|
13
|
+
[min, max] = bounds
|
17
14
|
return "expected “#{actual}” to not be between “#{min} .. #{max}”"
|
18
15
|
end
|
19
16
|
end
|
@@ -47,23 +47,25 @@ class EqualityMatcher
|
|
47
47
|
return "expected “#{actual_str}” to not equal “#{expected_str}”"
|
48
48
|
end
|
49
49
|
|
50
|
-
|
50
|
+
" private methods
|
51
|
+
|
52
|
+
def type_mismatch_message(expected, actual)
|
51
53
|
actual_type = self.typeof(actual)
|
52
54
|
expected_type = self.typeof(expected)
|
53
55
|
|
54
|
-
return "type mismatch, actual(#{string(actual)}) is “#{actual_type}”,
|
56
|
+
return "type mismatch, actual(#{string(actual)}) is “#{actual_type}”, "
|
57
|
+
\ "expected(#{string(expected)}) is “#{expected_type}”"
|
55
58
|
end
|
56
59
|
|
57
|
-
|
58
|
-
defm typeof(variable)
|
60
|
+
def typeof(variable)
|
59
61
|
return self.type_to_str(type(variable))
|
60
62
|
end
|
61
63
|
|
62
|
-
|
64
|
+
def type_to_str(num)
|
63
65
|
return self.types[num]
|
64
66
|
end
|
65
67
|
|
66
|
-
|
68
|
+
def stringify(value)
|
67
69
|
value_type = type(value)
|
68
70
|
|
69
71
|
if value_type == type('') || value_type == type(1)
|
@@ -8,11 +8,10 @@ class g:MatchTester
|
|
8
8
|
matcher = match_item.matcher
|
9
9
|
actual = env.actual
|
10
10
|
|
11
|
-
|
12
|
-
tester.test(matcher, negate, a:expected, actual)
|
11
|
+
self.test(matcher, negate, expected, actual)
|
13
12
|
end
|
14
13
|
|
15
|
-
|
14
|
+
def test(matcher, negate, expected, actual)
|
16
15
|
result = matcher.match(expected, actual)
|
17
16
|
g:speckle_env.assertions += 1
|
18
17
|
if negate
|
@@ -1,28 +1,26 @@
|
|
1
1
|
class WithinMatcher
|
2
2
|
defm match(expected, actual)
|
3
|
-
delta = expected
|
4
|
-
num = expected[1]
|
3
|
+
[delta, num] = expected
|
5
4
|
self.result = abs(num - actual)
|
6
5
|
return self.result <= delta
|
7
6
|
end
|
8
7
|
|
9
8
|
defm failure_message_for_match(expected, actual)
|
10
|
-
|
11
|
-
num = expected[1]
|
12
|
-
actual_str = printf("%f", actual)
|
13
|
-
delta_str = printf("%f", delta)
|
14
|
-
num_str = printf("%f", num)
|
15
|
-
result_str = printf('%f', self.result)
|
9
|
+
[actual_str, delta_str, num_str, result_str] = self.numeric_string_values(expected, actual)
|
16
10
|
return "expected “#{actual_str}” to be within +/- “#{delta_str}” of “#{num_str}”, delta was “#{result_str}”"
|
17
11
|
end
|
18
12
|
|
19
13
|
defm failure_message_for_mismatch(expected, actual)
|
20
|
-
|
21
|
-
|
14
|
+
[actual_str, delta_str, num_str, result_str] = self.numeric_string_values(expected, actual)
|
15
|
+
return "expected “#{actual_str}” to not be within +/- “#{delta_str}” of “#{num_str}”, delta was “#{result_str}”"
|
16
|
+
end
|
17
|
+
|
18
|
+
def numeric_string_values(expected, actual)
|
19
|
+
[delta, num] = expected
|
22
20
|
actual_str = printf("%f", actual)
|
23
21
|
delta_str = printf("%f", delta)
|
24
22
|
num_str = printf("%f", num)
|
25
23
|
result_str = printf('%f', self.result)
|
26
|
-
return
|
24
|
+
return [actual_str, delta_str, num_str, result_str]
|
27
25
|
end
|
28
26
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class BaseReporter
|
2
|
-
def initialize
|
2
|
+
def initialize
|
3
3
|
self.colorize_output = true
|
4
4
|
self.log_buffer = []
|
5
5
|
end
|
@@ -32,14 +32,14 @@ class BaseReporter
|
|
32
32
|
|
33
33
|
defm on_spec_failure(meta, err, stats)
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
defm on_spec_error(meta, err, stats)
|
37
37
|
end
|
38
38
|
|
39
39
|
defm on_spec_pending(meta, stats)
|
40
40
|
end
|
41
41
|
|
42
|
-
|
42
|
+
def duration_to_str(duration)
|
43
43
|
time = a:duration
|
44
44
|
if time >= 1000
|
45
45
|
time = time / 1000
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class DotMatrixReporter < BaseReporter
|
2
2
|
|
3
|
-
def initialize
|
4
|
-
super
|
3
|
+
def initialize
|
4
|
+
super
|
5
5
|
self.dots = 0
|
6
6
|
self.line_buffer = []
|
7
7
|
self.log_messages = []
|
@@ -29,7 +29,7 @@ class DotMatrixReporter < BaseReporter
|
|
29
29
|
context = meta.get_context()
|
30
30
|
add(self.line_buffer, self.to_red("#{context} ##{name}"))
|
31
31
|
add(self.line_buffer, self.to_red(" #{err.get_message()}"))
|
32
|
-
|
32
|
+
|
33
33
|
self.print_stacktrace(err)
|
34
34
|
|
35
35
|
add(self.line_buffer, '')
|
@@ -39,7 +39,7 @@ class DotMatrixReporter < BaseReporter
|
|
39
39
|
self.on_spec_failure(meta, err, stats)
|
40
40
|
end
|
41
41
|
|
42
|
-
defm write_epilogue_separator
|
42
|
+
defm write_epilogue_separator
|
43
43
|
self.flush_log_buffer()
|
44
44
|
|
45
45
|
self.writer.writeln('')
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class FivematReporter < BaseReporter
|
2
2
|
|
3
|
-
def initialize
|
4
|
-
super
|
3
|
+
def initialize
|
4
|
+
super
|
5
5
|
self.indents = 0
|
6
6
|
self.log_buffer = []
|
7
7
|
self.current_index = 0
|
@@ -82,7 +82,7 @@ class FivematReporter < BaseReporter
|
|
82
82
|
self.show_error('Error', meta, err, stats)
|
83
83
|
end
|
84
84
|
|
85
|
-
defm indent_to_str
|
85
|
+
defm indent_to_str
|
86
86
|
return repeat(" ", self.indents)
|
87
87
|
end
|
88
88
|
|
@@ -94,15 +94,15 @@ class FivematReporter < BaseReporter
|
|
94
94
|
self.indents -= size
|
95
95
|
end
|
96
96
|
|
97
|
-
defm write_epilogue_separator
|
97
|
+
defm write_epilogue_separator
|
98
98
|
self.writer.writeln('')
|
99
|
-
super
|
99
|
+
super
|
100
100
|
end
|
101
101
|
|
102
102
|
defm write_log_line(line)
|
103
103
|
self.write_errorln(" log: #{line}")
|
104
104
|
end
|
105
|
-
|
105
|
+
|
106
106
|
defm write_stacktrace_line(line)
|
107
107
|
self.write_errorln(" " . line)
|
108
108
|
end
|
@@ -6,18 +6,18 @@ class MinReporter < BaseReporter
|
|
6
6
|
self.writer.writeln(self.to_red("#{context} ##{name} - #{err.get_message()}"))
|
7
7
|
self.print_stacktrace(err)
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
defm on_spec_error(meta, err, stats)
|
11
11
|
self.on_spec_failure(meta, err, stats)
|
12
12
|
end
|
13
13
|
|
14
|
-
defm write_epilogue_separator
|
14
|
+
defm write_epilogue_separator
|
15
15
|
self.flush_log_buffer()
|
16
|
-
super
|
16
|
+
super
|
17
17
|
end
|
18
18
|
|
19
19
|
defm write_stacktrace_line(line)
|
20
20
|
self.writer.writeln(" #{line}")
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class SpecReporter < BaseReporter
|
2
2
|
|
3
|
-
def initialize
|
4
|
-
super
|
3
|
+
def initialize
|
4
|
+
super
|
5
5
|
self.indents = 0
|
6
6
|
self.log_buffer = []
|
7
7
|
end
|
@@ -48,7 +48,7 @@ class SpecReporter < BaseReporter
|
|
48
48
|
self.on_spec_failure(meta, err, stats)
|
49
49
|
end
|
50
50
|
|
51
|
-
defm indent_to_str
|
51
|
+
defm indent_to_str
|
52
52
|
return repeat(" ", self.indents)
|
53
53
|
end
|
54
54
|
|
@@ -60,15 +60,15 @@ class SpecReporter < BaseReporter
|
|
60
60
|
self.indents -= size
|
61
61
|
end
|
62
62
|
|
63
|
-
defm write_epilogue_separator
|
63
|
+
defm write_epilogue_separator
|
64
64
|
self.writer.writeln('')
|
65
|
-
super
|
65
|
+
super
|
66
66
|
end
|
67
67
|
|
68
68
|
defm write_log_line(line)
|
69
69
|
self.write("log: #{line}")
|
70
70
|
end
|
71
|
-
|
71
|
+
|
72
72
|
defm write_stacktrace_line(line)
|
73
73
|
self.write(line)
|
74
74
|
end
|
data/lib/runners/runner.riml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
class Runner
|
2
|
-
def initialize
|
2
|
+
def initialize
|
3
3
|
self.specs = []
|
4
4
|
self.halt = false
|
5
5
|
self.stopped = false
|
@@ -11,7 +11,7 @@ class Runner
|
|
11
11
|
self.bail = bail
|
12
12
|
end
|
13
13
|
|
14
|
-
defm get_bail
|
14
|
+
defm get_bail
|
15
15
|
return self.bail
|
16
16
|
end
|
17
17
|
|
@@ -19,7 +19,7 @@ class Runner
|
|
19
19
|
self.tag = tag
|
20
20
|
end
|
21
21
|
|
22
|
-
defm get_tag
|
22
|
+
defm get_tag
|
23
23
|
return self.tag
|
24
24
|
end
|
25
25
|
|
@@ -53,7 +53,7 @@ class Runner
|
|
53
53
|
reporter.on_end(timer.get_duration(), stats)
|
54
54
|
end
|
55
55
|
|
56
|
-
defm stop
|
56
|
+
defm stop
|
57
57
|
self.stopped = true
|
58
58
|
end
|
59
59
|
|
@@ -107,7 +107,13 @@ class SpecRunner
|
|
107
107
|
reporter.on_context_end(context, stats)
|
108
108
|
end
|
109
109
|
|
110
|
-
defm
|
110
|
+
defm stop
|
111
|
+
self.stopped = true
|
112
|
+
end
|
113
|
+
|
114
|
+
" private methods
|
115
|
+
|
116
|
+
def report_hook_error(hook, context, reporter, stats)
|
111
117
|
meta = new SpecMeta(context, hook)
|
112
118
|
|
113
119
|
reporter.on_spec_start(meta, stats)
|
@@ -117,7 +123,7 @@ class SpecRunner
|
|
117
123
|
reporter.on_spec_error(meta, error, stats)
|
118
124
|
end
|
119
125
|
|
120
|
-
|
126
|
+
def call_hook(hook)
|
121
127
|
if has_key(self.spec, hook)
|
122
128
|
return call(self.spec[hook], [], self.spec)
|
123
129
|
else
|
@@ -125,19 +131,7 @@ class SpecRunner
|
|
125
131
|
end
|
126
132
|
end
|
127
133
|
|
128
|
-
|
129
|
-
self.stopped = true
|
130
|
-
end
|
131
|
-
|
132
|
-
defm is_test_method(method)
|
133
|
-
return method =~ '^it'
|
134
|
-
end
|
135
|
-
|
136
|
-
defm is_tagged(method)
|
137
|
-
return method =~ "_#{self.tag}$"
|
138
|
-
end
|
139
|
-
|
140
|
-
defm can_run_test_for(method)
|
134
|
+
def can_run_test_for(method)
|
141
135
|
if self.tag == ''
|
142
136
|
return self.is_test_method(method)
|
143
137
|
else
|
@@ -145,6 +139,13 @@ class SpecRunner
|
|
145
139
|
end
|
146
140
|
end
|
147
141
|
|
142
|
+
def is_test_method(method)
|
143
|
+
return method =~ '^it'
|
144
|
+
end
|
145
|
+
|
146
|
+
def is_tagged(method)
|
147
|
+
return method =~ "_#{self.tag}$"
|
148
|
+
end
|
148
149
|
end
|
149
150
|
|
150
151
|
class SpecError
|
@@ -156,11 +157,11 @@ class SpecError
|
|
156
157
|
self.throwpoint = v:throwpoint
|
157
158
|
end
|
158
159
|
|
159
|
-
defm get_message
|
160
|
+
defm get_message
|
160
161
|
return self.message
|
161
162
|
end
|
162
163
|
|
163
|
-
defm get_stacktrace
|
164
|
+
defm get_stacktrace
|
164
165
|
unless has_key(self, 'stacktrace')
|
165
166
|
self.build_stacktrace()
|
166
167
|
end
|
@@ -168,7 +169,7 @@ class SpecError
|
|
168
169
|
return self.stacktrace
|
169
170
|
end
|
170
171
|
|
171
|
-
|
172
|
+
def build_stacktrace
|
172
173
|
str = substitute(self.throwpoint, '\v(function )', '', '')
|
173
174
|
self.stacktrace = split(str, '\.\.')
|
174
175
|
self.stacktrace = map(self.stacktrace, '"at " . v:val')
|
@@ -164,9 +164,11 @@ module Speckle
|
|
164
164
|
def build_riml_path(dirs, pattern = /.*\.riml$/, spec_pattern = /.*_spec\.riml$/)
|
165
165
|
libs = []
|
166
166
|
dirs.each do |dir|
|
167
|
-
|
168
|
-
|
169
|
-
|
167
|
+
if File.directory?(dir)
|
168
|
+
Find.find(dir) do |path|
|
169
|
+
if path =~ pattern && path !~ spec_pattern
|
170
|
+
libs << File.dirname(path)
|
171
|
+
end
|
170
172
|
end
|
171
173
|
end
|
172
174
|
end
|
data/lib/speckle/version.rb
CHANGED
data/lib/speckle.riml
CHANGED
@@ -63,13 +63,13 @@ class g:Speckle
|
|
63
63
|
self.options(options_map)
|
64
64
|
end
|
65
65
|
|
66
|
-
|
66
|
+
def options(options_map)
|
67
67
|
for [name, value] in items(options_map)
|
68
68
|
self.option(name, value)
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
-
|
72
|
+
def option(variable, default)
|
73
73
|
if !exists("g:speckle_#{variable}")
|
74
74
|
execute("let g:speckle_#{variable} = #{default}")
|
75
75
|
end
|
data/lib/utils/spec_timer.riml
CHANGED
@@ -7,10 +7,6 @@ class BufferWriter
|
|
7
7
|
self.writer.set_output_file(output_file)
|
8
8
|
end
|
9
9
|
|
10
|
-
defm strip_colors(line)
|
11
|
-
return substitute(line, '\e\[[0-9;]\+[mK]', '', 'g')
|
12
|
-
end
|
13
|
-
|
14
10
|
defm write(line)
|
15
11
|
self.writer.write(line)
|
16
12
|
|
@@ -34,4 +30,10 @@ class BufferWriter
|
|
34
30
|
defm flush_line()
|
35
31
|
self.writer.flush_line()
|
36
32
|
end
|
33
|
+
|
34
|
+
" private methods
|
35
|
+
|
36
|
+
def strip_colors(line)
|
37
|
+
return substitute(line, '\e\[[0-9;]\+[mK]', '', 'g')
|
38
|
+
end
|
37
39
|
end
|
data/spec/stacktrace_spec.riml
CHANGED
data/speckle.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: speckle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.27
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Darshan Sawardekar
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10
|
11
|
+
date: 2013-11-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: riml
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.3.
|
19
|
+
version: 0.3.6
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.3.
|
26
|
+
version: 0.3.6
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,6 +104,7 @@ files:
|
|
104
104
|
- .editorconfig
|
105
105
|
- .gitignore
|
106
106
|
- .travis.yml
|
107
|
+
- CHANGELOG.md
|
107
108
|
- Gemfile
|
108
109
|
- LICENSE.txt
|
109
110
|
- README.md
|