speckle 0.1.16 → 0.1.17
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/lib/matchers/length_matcher.riml +2 -2
- data/lib/reporters/fivemat_reporter.riml +122 -0
- data/lib/reporters/reporter_factory.riml +2 -0
- data/lib/runners/spec_runner.riml +30 -8
- data/lib/speckle/version.rb +1 -1
- data/lib/speckle.riml +2 -1
- data/spec_errors/hook_errors_spec.riml +54 -0
- data/spec_errors/various_errors_spec.riml +29 -0
- data/speckle.gemspec +1 -1
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
M2M1N2NiYTNlMDU4MmJlOWY0MjI0NzEwNjJiN2M3MWEwY2QwN2ViYg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MTEwMjU5OTQzYWEyMDdjZDVlOTViZDdmZGQ4ODZjNTExODdmMDU0NQ==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OTM2MzdlMTE1YTUwZDliMTE1MjhhNGRhZjc0MDg1OTk4NTE5MjUyZjc5MzE1
|
10
|
+
MWNmMThlNzY5NDhkOTE4ZGZkMDkzOTFmYzgxMDI1YjEzMDQ3MDcxMWVmMGZl
|
11
|
+
MGZlMWJkYjRmNGFlMDc2Yjc5ZWRmOGMwZGQ4MGZhNTMzZTEwZTM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YWFjZjI4MmIyN2JkZDBmM2U2MDg3ZWRjODM4MWJiYjJkNWRlZWM5ZTY5N2Mz
|
14
|
+
OTEzZDVjMjgyMDA3MDgyMzNkODE3YjM2MTRlYzc5NTFhMTQwODZmOGVhMDA5
|
15
|
+
Mzg5Y2YxOTZmZjNmYWM3NmM2ZjcyODI2NjE0MGE3NjJiMTNhNDA=
|
@@ -5,10 +5,10 @@ class LengthMatcher
|
|
5
5
|
end
|
6
6
|
|
7
7
|
defm failure_message_for_match(expected, actual)
|
8
|
-
return "expected length of “#{actual}” to be “#{expected}”, but was #{self.result}"
|
8
|
+
return "expected length of “#{string(actual)}” to be “#{expected}”, but was #{self.result}"
|
9
9
|
end
|
10
10
|
|
11
11
|
defm failure_message_for_mismatch(expected, actual)
|
12
|
-
return "expected length of “#{actual}” to not be “#{expected}”, but was #{self.result}"
|
12
|
+
return "expected length of “#{string(actual)}” to not be “#{expected}”, but was #{self.result}"
|
13
13
|
end
|
14
14
|
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
class FivematReporter < BaseReporter
|
2
|
+
|
3
|
+
def initialize()
|
4
|
+
super()
|
5
|
+
self.indents = 0
|
6
|
+
self.log_buffer = []
|
7
|
+
self.current_index = 0
|
8
|
+
self.error_buffer = []
|
9
|
+
end
|
10
|
+
|
11
|
+
defm writeln(msg)
|
12
|
+
line = "#{self.indent_to_str()}#{msg}"
|
13
|
+
self.writer.writeln(line)
|
14
|
+
end
|
15
|
+
|
16
|
+
defm write(msg)
|
17
|
+
line = "#{self.indent_to_str()}#{msg}"
|
18
|
+
self.writer.write(line)
|
19
|
+
end
|
20
|
+
|
21
|
+
defm write_errorln(msg)
|
22
|
+
add(self.error_buffer, self.indent_to_str() . msg)
|
23
|
+
end
|
24
|
+
|
25
|
+
defm has_error_lines
|
26
|
+
return len(self.error_buffer) > 0
|
27
|
+
end
|
28
|
+
|
29
|
+
defm flush_error_buffer
|
30
|
+
if self.has_error_lines()
|
31
|
+
for line in self.error_buffer
|
32
|
+
self.writeln(line)
|
33
|
+
end
|
34
|
+
|
35
|
+
self.error_buffer = []
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
defm on_start(stats)
|
40
|
+
end
|
41
|
+
|
42
|
+
defm on_context_start(context, stats)
|
43
|
+
self.current_index = 0
|
44
|
+
self.write("#{context} ")
|
45
|
+
end
|
46
|
+
|
47
|
+
defm on_context_end(context, stats)
|
48
|
+
self.writeln('')
|
49
|
+
self.flush_error_buffer()
|
50
|
+
end
|
51
|
+
|
52
|
+
defm on_spec_pass(meta, stats)
|
53
|
+
duration_msg = self.get_duration_msg(meta)
|
54
|
+
self.write('.')
|
55
|
+
self.flush_log_buffer()
|
56
|
+
end
|
57
|
+
|
58
|
+
defm show_error(type, meta, err, stats)
|
59
|
+
char = type[0]
|
60
|
+
self.write(self.to_red(char))
|
61
|
+
|
62
|
+
self.indent(1)
|
63
|
+
|
64
|
+
self.write_errorln("#{self.current_index}) #{type}: #{meta.get_sentence()}")
|
65
|
+
|
66
|
+
self.indent(1)
|
67
|
+
self.write_errorln(" ". self.to_red(err.get_message()))
|
68
|
+
self.indent(1)
|
69
|
+
self.print_stacktrace(err)
|
70
|
+
self.flush_log_buffer()
|
71
|
+
self.unindent(3)
|
72
|
+
self.write_errorln('')
|
73
|
+
end
|
74
|
+
|
75
|
+
defm on_spec_failure(meta, err, stats)
|
76
|
+
self.current_index += 1
|
77
|
+
self.show_error('Failure', meta, err, stats)
|
78
|
+
end
|
79
|
+
|
80
|
+
defm on_spec_error(meta, err, stats)
|
81
|
+
self.current_index += 1
|
82
|
+
self.show_error('Error', meta, err, stats)
|
83
|
+
end
|
84
|
+
|
85
|
+
defm indent_to_str()
|
86
|
+
return repeat(" ", self.indents)
|
87
|
+
end
|
88
|
+
|
89
|
+
defm indent(size)
|
90
|
+
self.indents += size
|
91
|
+
end
|
92
|
+
|
93
|
+
defm unindent(size)
|
94
|
+
self.indents -= size
|
95
|
+
end
|
96
|
+
|
97
|
+
defm write_epilogue_separator()
|
98
|
+
self.writer.writeln('')
|
99
|
+
super()
|
100
|
+
end
|
101
|
+
|
102
|
+
defm write_log_line(line)
|
103
|
+
self.write_errorln(" log: #{line}")
|
104
|
+
end
|
105
|
+
|
106
|
+
defm write_stacktrace_line(line)
|
107
|
+
self.write_errorln(" " . line)
|
108
|
+
end
|
109
|
+
|
110
|
+
defm flush_log_buffer
|
111
|
+
if self.has_logs()
|
112
|
+
self.write_errorln('')
|
113
|
+
|
114
|
+
for line in self.log_buffer
|
115
|
+
self.write_log_line(line)
|
116
|
+
end
|
117
|
+
|
118
|
+
self.log_buffer = []
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
end
|
@@ -25,7 +25,13 @@ class SpecRunner
|
|
25
25
|
did_fail = false
|
26
26
|
context = self.call_hook('describe')
|
27
27
|
reporter.on_context_start(context, stats)
|
28
|
-
|
28
|
+
|
29
|
+
try
|
30
|
+
self.call_hook('before')
|
31
|
+
catch /.*/
|
32
|
+
self.report_hook_error('before', context, reporter, stats)
|
33
|
+
self.stopped = true
|
34
|
+
end
|
29
35
|
|
30
36
|
for method in keys(spec)
|
31
37
|
if self.stopped
|
@@ -42,7 +48,7 @@ class SpecRunner
|
|
42
48
|
try
|
43
49
|
self.call_hook('before_each')
|
44
50
|
timer.start()
|
45
|
-
|
51
|
+
res = call(self.spec[method], [], self.spec)
|
46
52
|
timer.stop()
|
47
53
|
self.call_hook('after_each')
|
48
54
|
|
@@ -84,14 +90,30 @@ class SpecRunner
|
|
84
90
|
end
|
85
91
|
end
|
86
92
|
|
87
|
-
|
93
|
+
try
|
94
|
+
unless self.stopped
|
95
|
+
self.call_hook('after')
|
96
|
+
end
|
97
|
+
catch /.*/
|
98
|
+
self.report_hook_error('after', context, reporter, stats)
|
99
|
+
end
|
100
|
+
|
88
101
|
reporter.on_context_end(context, stats)
|
89
102
|
end
|
90
103
|
|
104
|
+
defm report_hook_error(hook, context, reporter, stats)
|
105
|
+
meta = new SpecMeta(context, hook)
|
106
|
+
|
107
|
+
reporter.on_spec_start(meta, stats)
|
108
|
+
|
109
|
+
stats.inc_errors()
|
110
|
+
error = new VimError(v:exception)
|
111
|
+
reporter.on_spec_error(meta, error, stats)
|
112
|
+
end
|
113
|
+
|
91
114
|
defm call_hook(hook)
|
92
|
-
|
93
|
-
|
94
|
-
return eval("spec.#{hook}()");
|
115
|
+
if has_key(self.spec, hook)
|
116
|
+
return call(self.spec[hook], [], self.spec)
|
95
117
|
else
|
96
118
|
return "Undefined hook: #{hook}"
|
97
119
|
end
|
@@ -105,7 +127,7 @@ class SpecRunner
|
|
105
127
|
return method =~ '^it'
|
106
128
|
end
|
107
129
|
|
108
|
-
defm
|
130
|
+
defm is_tagged(method)
|
109
131
|
return method =~ "_#{self.tag}$"
|
110
132
|
end
|
111
133
|
|
@@ -113,7 +135,7 @@ class SpecRunner
|
|
113
135
|
if self.tag == ''
|
114
136
|
return self.is_test_method(method)
|
115
137
|
else
|
116
|
-
return self.is_test_method(method) && self.
|
138
|
+
return self.is_test_method(method) && self.is_tagged(method)
|
117
139
|
end
|
118
140
|
end
|
119
141
|
|
data/lib/speckle/version.rb
CHANGED
data/lib/speckle.riml
CHANGED
@@ -37,6 +37,7 @@ riml_include 'spec_reporter.riml'
|
|
37
37
|
riml_include 'min_reporter.riml'
|
38
38
|
riml_include 'tap_reporter.riml'
|
39
39
|
riml_include 'dotmatrix_reporter.riml'
|
40
|
+
riml_include 'fivemat_reporter.riml'
|
40
41
|
riml_include 'reporter_factory.riml'
|
41
42
|
|
42
43
|
"" runners
|
@@ -138,7 +139,7 @@ class g:Speckle
|
|
138
139
|
|
139
140
|
functions = ''
|
140
141
|
:redir => functions
|
141
|
-
:silent function /
|
142
|
+
:silent function /Spec\(_.*Constructor\|Constructor\)$/
|
142
143
|
:redir END
|
143
144
|
|
144
145
|
self.add_specs(runner, functions)
|
@@ -0,0 +1,54 @@
|
|
1
|
+
riml_include 'dsl.riml'
|
2
|
+
|
3
|
+
class BeforeErrorHookSpec_err
|
4
|
+
defm describe
|
5
|
+
return 'BeforeErrorHookSpec'
|
6
|
+
end
|
7
|
+
|
8
|
+
defm before
|
9
|
+
a = c
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
class BeforeEachHookSpec_err
|
15
|
+
defm describe
|
16
|
+
return 'Before_each hooks'
|
17
|
+
end
|
18
|
+
|
19
|
+
defm before_each
|
20
|
+
a = b
|
21
|
+
end
|
22
|
+
|
23
|
+
defm it_has_stuff_from_before_each
|
24
|
+
expect(self.stuff).to_equal('foo')
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
class AfterErrorHookSpec_err
|
30
|
+
defm describe
|
31
|
+
return 'AfterErrorHookSpec'
|
32
|
+
end
|
33
|
+
|
34
|
+
defm after
|
35
|
+
a = b
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
class AfterEachHookSpec_err
|
41
|
+
defm describe
|
42
|
+
return 'Before_each hooks'
|
43
|
+
end
|
44
|
+
|
45
|
+
defm after_each
|
46
|
+
a = b
|
47
|
+
end
|
48
|
+
|
49
|
+
defm it_has_stuff_from_before_each
|
50
|
+
expect(self.stuff).to_equal('foo')
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
riml_include 'dsl.riml'
|
2
|
+
|
3
|
+
class VariousErrorsSpec
|
4
|
+
|
5
|
+
defm describe
|
6
|
+
return 'VariousErrorsSpec'
|
7
|
+
end
|
8
|
+
|
9
|
+
defm it_has_unknown_variable
|
10
|
+
get_logger().info('unknown variable')
|
11
|
+
a = b
|
12
|
+
end
|
13
|
+
|
14
|
+
defm it_has_custom_throw
|
15
|
+
get_logger().info('custom throw')
|
16
|
+
throw 'some error'
|
17
|
+
end
|
18
|
+
|
19
|
+
defm it_has_unknown_function
|
20
|
+
get_logger().error('unknown_function')
|
21
|
+
CallFooFunction()
|
22
|
+
end
|
23
|
+
|
24
|
+
defm it_has_assertion_error
|
25
|
+
get_logger().info('regular assertion')
|
26
|
+
expect(true).to_be_false()
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
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.17
|
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-09-
|
11
|
+
date: 2013-09-20 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.1
|
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.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -130,6 +130,7 @@ files:
|
|
130
130
|
- lib/matchers/within_matcher.riml
|
131
131
|
- lib/reporters/base_reporter.riml
|
132
132
|
- lib/reporters/dotmatrix_reporter.riml
|
133
|
+
- lib/reporters/fivemat_reporter.riml
|
133
134
|
- lib/reporters/min_reporter.riml
|
134
135
|
- lib/reporters/reporter_factory.riml
|
135
136
|
- lib/reporters/spec_reporter.riml
|
@@ -185,6 +186,8 @@ files:
|
|
185
186
|
- spec/speckle_mode_spec.riml
|
186
187
|
- spec/stacktrace_spec.riml
|
187
188
|
- spec/tagged_spec.riml
|
189
|
+
- spec_errors/hook_errors_spec.riml
|
190
|
+
- spec_errors/various_errors_spec.riml
|
188
191
|
- speckle.gemspec
|
189
192
|
homepage: http://github.com/dsawardekar/speckle
|
190
193
|
licenses:
|