speckle 0.1.16 → 0.1.17

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MjYyNmMzN2NkYzljNmIzMGFmZDExYjY5MTc0Mzg5M2M0NDIyMWZkMg==
4
+ M2M1N2NiYTNlMDU4MmJlOWY0MjI0NzEwNjJiN2M3MWEwY2QwN2ViYg==
5
5
  data.tar.gz: !binary |-
6
- ZDdmZThhY2RmOTE3ODU5NDI0OTcwNzNmZGZkZDEzMjM1ZWJiOGZkYg==
6
+ MTEwMjU5OTQzYWEyMDdjZDVlOTViZDdmZGQ4ODZjNTExODdmMDU0NQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YjViNjUzOGMyODJkOGJlOTQ4NDRmZjM4YzE0Mzc3NmI4YmEwNmFhMjU3OTY5
10
- OTE2ZjZhOGVkNTRiNTVkYTQ1ZjZlMTk5MWRmNmI3OGIwODc3MWI3OGUwZDcw
11
- NjdlMWYwMzMwODRhN2Y3ODBkODYzYjhmYjYyODViOGJjMmMzYzk=
9
+ OTM2MzdlMTE1YTUwZDliMTE1MjhhNGRhZjc0MDg1OTk4NTE5MjUyZjc5MzE1
10
+ MWNmMThlNzY5NDhkOTE4ZGZkMDkzOTFmYzgxMDI1YjEzMDQ3MDcxMWVmMGZl
11
+ MGZlMWJkYjRmNGFlMDc2Yjc5ZWRmOGMwZGQ4MGZhNTMzZTEwZTM=
12
12
  data.tar.gz: !binary |-
13
- YWMwM2JiNGExNmZjMmZlMWUzMDcwOTVjZjA3ZWM2ZTU0NjdjNmQ0Njg5YzQ1
14
- YjY1YjU0MDUxNjNmNTEyYTQ5Mjc4ZjMyMjYwNjllZDU0OTc3NjZjMzYxMTJk
15
- MzliNWI2YzEwM2I3NTE5NmVhMGY4OThlOGI0NDRhMjhkNWUyOTY=
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
@@ -8,6 +8,8 @@ class ReporterFactory
8
8
  return new TAPReporter()
9
9
  elseif reporter_name == 'dot'
10
10
  return new DotMatrixReporter()
11
+ elseif reporter_name == 'fivemat'
12
+ return new FivematReporter()
11
13
  else
12
14
  return new SpecReporter()
13
15
  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
- self.call_hook('before')
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
- eval("spec.#{method}()")
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
- self.call_hook('after')
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
- spec = self.spec
93
- if has_key(spec, hook)
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 is_method_tagged(method)
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.is_method_tagged(method)
138
+ return self.is_test_method(method) && self.is_tagged(method)
117
139
  end
118
140
  end
119
141
 
@@ -1,3 +1,3 @@
1
1
  module Speckle
2
- VERSION = "0.1.16"
2
+ VERSION = "0.1.17"
3
3
  end
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 /SpecConstructor$/
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
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
21
21
 
22
22
  s.required_ruby_version = '>= 1.9.2'
23
23
 
24
- s.add_dependency 'riml', '~> 0.3.0'
24
+ s.add_dependency 'riml', '~> 0.3.1'
25
25
  s.add_dependency 'rake', '~> 10.1.0'
26
26
  s.add_dependency 'bundler', '~> 1.3'
27
27
 
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.16
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-08 00:00:00.000000000 Z
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.0
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.0
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: