speckle 0.1.10 → 0.1.11

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
- YWU1NDkzZWQ5ZDRhZGRmZWFlN2IwZmFmYTkxN2ZiODc3YTJmYWM2OA==
4
+ OGZjMjdkZTQ4NmZlZTI0NjIxYTMxYmI2ZTFmYTUxMDBmMTNhNTc1Zg==
5
5
  data.tar.gz: !binary |-
6
- MjRjZTM1NmZiYWJlZjA0ZWNkZmVkMGQ3YjAxNmUyNGY5ZDY2YjdjZg==
6
+ ZDU0ZmUxZWY1MGU2ODJmMTMzMDQ3OTEwMWU0OTQ1MGQ4NjdkNzhiYw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NjRkN2RkZDhjYTg0YzQzMGVhMmE0NTMxOWMxOWJiYzA3YjBjYmRkMjBjN2M0
10
- OGJjMDE4NWRjYzFjYzI4NDVjOTg2Yjc0Y2Y3YmMxYTYzYjBmNGUxZThkMzA5
11
- YmViZjU4OTEwZGFlYzM5NTc1NDI5NmQ0NGUxNDA3ZTBmYWE4ZGQ=
9
+ ZjI3MWU4OTBhMzc0NDI0MzA4OTE1OWI1YmVjZTU2NGI5NDg4NWUxYzFkN2Vh
10
+ MzlhYWM4NmZhZjhiOWU3NWNiN2Q1NzA3YTc3M2ZlZGUwMjFlZTNlOGZhYzVh
11
+ ZjVkMWUwMmVjYWMxZDVhNmI5OGUwYzJmNjMyNTM4MTk4Mjk3OWU=
12
12
  data.tar.gz: !binary |-
13
- MDhkOTQ2MGI3NzQ1ZmJmYjQxMjA4ODU0MGY2YmJhYmNiNDFhOTIwY2MwMGU1
14
- YjNmZTI5ZTVhZjczM2IzMjg1ZTMzZDk4YzE2NTczNjIyYTIxNzE3NjJmZDA4
15
- ODQ5YWI2MjMxNGExNTMyYmYyY2QzZTgxNTc3MjRlNjUwNWE4NDU=
13
+ OWMxYTk3MGEzZGYyNzJmNjFjYjI4ZWFjNWIxNmQzZDJjNjI1NWYwZmRiN2Rj
14
+ YTYyMDAyYWYwMDcxOTUzYWVmN2Q0MzBiMjBmOGYzNDE1ZjdkZGZiYzZiNmZk
15
+ ZjNhZDQ3ZGJhZGUwY2IyMjRiNWYyMGEzOTVmOGQ5MGM5YzI3YTY=
data/Rakefile CHANGED
@@ -1,16 +1,30 @@
1
1
  require 'bundler/setup'
2
2
  require 'bundler/gem_tasks'
3
- require 'rspec/core/rake_task'
4
3
 
5
4
  desc 'Default task :compile_and_test'
6
5
  task :default => :test
7
6
 
8
- # :spec task from rspec
9
- desc "Run speckle's rspec tests"
10
- RSpec::Core::RakeTask.new(:spec)
7
+ # We need the RSpec rake tasks to run spec
8
+ # but we don't want users of speckle to need rspec
9
+ # Eventually we want to switch from the cli calling
10
+ # the Rakefile to the Rakefile calling the cli.
11
+ begin
12
+ # :spec task from rspec
13
+ require 'rspec/core/rake_task'
14
+ desc "Run speckle's rspec tests"
15
+ RSpec::Core::RakeTask.new(:spec)
16
+
17
+ desc 'Run rspec and speckle tests'
18
+ task :test => [:spec, 'speckle:vim_version', 'speckle:compile_and_test']
19
+ rescue LoadError
20
+ if ENV.has_key?('DEBUG')
21
+ puts 'rspec/core/rake_task not found'
22
+ end
11
23
 
12
- desc 'Run rspec and speckle tests'
13
- task :test => [:spec, 'speckle:vim_version', 'speckle:compile_and_test']
24
+ # no spec task in chain without rspec
25
+ desc 'Run rspec and speckle tests'
26
+ task :test => ['speckle:vim_version', 'speckle:compile_and_test']
27
+ end
14
28
 
15
29
  desc 'Clean temporary files'
16
30
  task :clean => ['speckle:clean']
@@ -176,6 +190,8 @@ namespace :speckle do
176
190
  cmd += "-u NONE -i NONE"
177
191
  end
178
192
 
193
+ cmd += " --cmd 'let g:speckle_mode = 1'"
194
+
179
195
  cmd
180
196
  end
181
197
 
data/lib/dsl.riml CHANGED
@@ -4,7 +4,6 @@ if !exists("g:speckle_env")
4
4
  g:speckle_env.assertions = 0
5
5
  end
6
6
 
7
-
8
7
  def expect(actual)
9
8
  env = g:speckle_env
10
9
  env.actual = actual
@@ -27,3 +26,13 @@ def define_matcher(ok_name, not_ok_name, matcher)
27
26
  matchers = get_matchers()
28
27
  matchers.define_pair(ok_name, not_ok_name, matcher)
29
28
  end
29
+
30
+ def get_logger()
31
+ unless exists('g:logger')
32
+ g:logger = g:LoggerConstructor()
33
+ end
34
+
35
+ return g:logger
36
+ end
37
+
38
+ logger = get_logger()
@@ -0,0 +1,10 @@
1
+ class EchoLogWriter
2
+ defm get_colorize()
3
+ return false
4
+ end
5
+
6
+ defm log(message)
7
+ echo message
8
+ end
9
+ end
10
+
@@ -0,0 +1,27 @@
1
+ class FileLogWriter
2
+ def initialize
3
+ self.writer = new FileWriter()
4
+ self.colorize = true
5
+ end
6
+
7
+ defm set_log_file(log_file)
8
+ self.writer.set_output_file(log_file)
9
+ end
10
+
11
+ defm set_colorize(colorize)
12
+ self.colorize = colorize
13
+ end
14
+
15
+ defm get_colorize()
16
+ return self.colorize
17
+ end
18
+
19
+ defm log(message)
20
+ self.writer.writeln(message)
21
+ end
22
+
23
+ defm flush()
24
+ self.writer.flush()
25
+ end
26
+ end
27
+
@@ -0,0 +1,114 @@
1
+ class Logger
2
+ def initialize
3
+ self.messages = []
4
+ self.log_writers = []
5
+ self.level = 'info'
6
+
7
+ self.levels = {}
8
+ self.levels.all = 0
9
+ self.levels.debug = 1
10
+ self.levels.info = 2
11
+ self.levels.warn = 3
12
+ self.levels.error = 4
13
+ self.levels.fatal = 5
14
+ self.levels.off = 6
15
+
16
+ self.colors = {}
17
+ self.colors.all = 0
18
+ self.colors.debug = 0
19
+ self.colors.info = 0
20
+ self.colors.warn = '31m'
21
+ self.colors.error = '31m'
22
+ self.colors.fatal = '31m'
23
+ self.colors.off = 0
24
+ end
25
+
26
+ defm add_log_writer(log_writer)
27
+ add(self.log_writers, log_writer)
28
+ end
29
+
30
+ defm set_level(level)
31
+ self.level = level
32
+ end
33
+
34
+ defm get_level
35
+ return self.level
36
+ end
37
+
38
+ defm get_level_num(level)
39
+ return self.levels[level]
40
+ end
41
+
42
+ defm is_loggable(level)
43
+ return self.get_level_num(level) >= self.get_level_num(self.level)
44
+ end
45
+
46
+ defm do_log(args, level)
47
+ if self.is_loggable(level)
48
+ msg = self.args_to_message(args)
49
+ self.send_log(msg, level)
50
+ end
51
+ end
52
+
53
+ defm args_to_message(args)
54
+ return join(args, ' ')
55
+ end
56
+
57
+ defm send_log(msg, level)
58
+ color_msg = self.to_color(msg, level)
59
+
60
+ for log_writer in self.log_writers
61
+ if log_writer.get_colorize()
62
+ log_writer.log(color_msg)
63
+ else
64
+ log_writer.log(msg)
65
+ end
66
+ end
67
+ end
68
+
69
+ defm to_color(msg, level)
70
+ color = self.colors[level]
71
+ echo "msg=#{msg}, color=#{color}"
72
+ if color != 0
73
+ return "[#{color}#{msg}"
74
+ else
75
+ return msg
76
+ end
77
+ end
78
+
79
+ defm debug(...)
80
+ self.do_log(a:000, 'debug')
81
+ end
82
+
83
+ defm info(...)
84
+ self.do_log(a:000, 'info')
85
+ end
86
+
87
+ defm log(...)
88
+ self.do_log(a:000, 'info')
89
+ end
90
+
91
+ defm warn(...)
92
+ self.do_log(a:000, 'warn')
93
+ end
94
+
95
+ defm error(...)
96
+ self.do_log(a:000, 'error')
97
+ end
98
+
99
+ defm fatal(...)
100
+ self.do_log(a:000, 'fatal')
101
+ end
102
+
103
+ end
104
+
105
+ def get_logger()
106
+ unless exists('g:logger')
107
+ g:logger = new Logger()
108
+ end
109
+
110
+ return g:logger
111
+ end
112
+
113
+ logger = get_logger()
114
+
@@ -1,6 +1,7 @@
1
1
  class BaseReporter
2
2
  def initialize()
3
3
  self.colorize_output = true
4
+ self.log_buffer = []
4
5
  end
5
6
 
6
7
  defm set_writer(writer)
@@ -122,5 +123,34 @@ class BaseReporter
122
123
  return self.to_red(self.get_cross_icon())
123
124
  end
124
125
 
126
+ " log writer interface "
127
+ defm get_colorize
128
+ return self.get_colorize_output()
129
+ end
130
+
131
+ defm log(message)
132
+ add(self.log_buffer, message)
133
+ end
134
+
135
+ defm has_logs
136
+ return len(self.log_buffer) > 0
137
+ end
138
+
139
+ defm flush_log_buffer
140
+ if self.has_logs()
141
+ self.writer.writeln('')
142
+
143
+ for line in self.log_buffer
144
+ self.write_log_line(line)
145
+ end
146
+
147
+ self.writer.writeln('')
148
+ self.log_buffer = []
149
+ end
150
+ end
151
+
152
+ defm write_log_line(line)
153
+ self.writer.writeln("log: #{line}")
154
+ end
125
155
  end
126
156
 
@@ -4,6 +4,7 @@ class DotMatrixReporter < BaseReporter
4
4
  super()
5
5
  self.dots = 0
6
6
  self.line_buffer = []
7
+ self.log_messages = []
7
8
  end
8
9
 
9
10
  defm write(msg)
@@ -36,6 +37,8 @@ class DotMatrixReporter < BaseReporter
36
37
  end
37
38
 
38
39
  defm write_epilogue_separator()
40
+ self.flush_log_buffer()
41
+
39
42
  self.writer.writeln('')
40
43
  for line in self.line_buffer
41
44
  self.writer.writeln(line)
@@ -9,5 +9,10 @@ class MinReporter < BaseReporter
9
9
  defm on_spec_error(meta, err, stats)
10
10
  self.on_spec_failure(meta, err, stats)
11
11
  end
12
+
13
+ defm write_epilogue_separator()
14
+ self.flush_log_buffer()
15
+ super()
16
+ end
12
17
 
13
18
  end
@@ -3,6 +3,7 @@ class SpecReporter < BaseReporter
3
3
  def initialize()
4
4
  super()
5
5
  self.indents = 0
6
+ self.log_buffer = []
6
7
  end
7
8
 
8
9
  defm write(msg)
@@ -25,12 +26,16 @@ class SpecReporter < BaseReporter
25
26
  defm on_spec_pass(meta, stats)
26
27
  duration_msg = self.get_duration_msg(meta)
27
28
  self.write("#{self.get_tick()} #{meta.get_sentence()} #{duration_msg}")
29
+ self.indent(2)
30
+ self.flush_log_buffer()
31
+ self.unindent(2)
28
32
  end
29
33
 
30
34
  defm on_spec_failure(meta, err, stats)
31
35
  self.write("#{self.get_cross()} #{self.to_red(meta.get_sentence())}")
32
36
  self.indent(2)
33
37
  self.write(self.to_red(err))
38
+ self.flush_log_buffer()
34
39
  self.unindent(2)
35
40
  end
36
41
 
@@ -55,4 +60,8 @@ class SpecReporter < BaseReporter
55
60
  super()
56
61
  end
57
62
 
63
+ defm write_log_line(line)
64
+ self.write("log: #{line}")
65
+ end
66
+
58
67
  end
@@ -13,25 +13,27 @@ class TAPReporter < BaseReporter
13
13
  duration_msg = self.get_duration_msg(meta)
14
14
  preamble = self.get_preamble('ok', stats.get_count(), meta.get_context())
15
15
  self.writer.writeln("#{preamble} ##{name} #{duration_msg}")
16
+ self.flush_log_buffer()
16
17
  end
17
18
 
18
19
  defm on_spec_failure(meta, err, stats)
19
20
  name = meta.get_sentence()
20
21
  preamble = self.get_preamble('not ok', stats.get_count(), meta.get_context())
21
22
  self.writer.writeln("#{preamble} ##{name} - #{err}")
23
+ self.flush_log_buffer()
22
24
  end
23
25
 
24
26
  defm on_spec_error(meta, err, stats)
25
27
  name = meta.get_sentence()
26
28
  preamble = self.get_preamble('not ok', stats.get_count(), meta.get_context())
27
29
  self.writer.writeln("#{preamble} ##{name} - #{err}")
30
+ self.flush_log_buffer()
28
31
  end
29
32
 
30
33
  defm on_spec_pending(meta, stats)
31
34
  end
32
35
 
33
36
  defm get_preamble(status, count, context)
34
- ""status = status . repeat(' ', 6 - len(status))
35
37
  msg = "#{status} #{count} - #{context}"
36
38
  return msg
37
39
  end
@@ -40,13 +40,12 @@ class SpecRunner
40
40
  result = 0
41
41
 
42
42
  try
43
- timer.start()
44
-
45
43
  self.call_hook('before_each')
44
+ timer.start()
46
45
  eval("spec.#{method}()")
46
+ timer.stop()
47
47
  self.call_hook('after_each')
48
48
 
49
- timer.stop()
50
49
  meta.set_duration(timer.get_duration())
51
50
 
52
51
  stats.inc_passes()
@@ -128,7 +128,7 @@ module Speckle
128
128
  end
129
129
  end
130
130
 
131
- options.inputs = args
131
+ options.inputs = args.uniq
132
132
  rescue OptionParser::InvalidOption => e
133
133
  options.error = e
134
134
  options.action = :show_invalid_option
@@ -1,3 +1,3 @@
1
1
  module Speckle
2
- VERSION = "0.1.10"
2
+ VERSION = "0.1.11"
3
3
  end
data/lib/speckle.riml CHANGED
@@ -1,4 +1,6 @@
1
1
  "" utils
2
+ riml_include 'logger.riml'
3
+ riml_include 'echo_log_writer.riml'
2
4
  riml_include 'spec_timer.riml'
3
5
  riml_include 'spec_meta.riml'
4
6
  riml_include 'statistician.riml'
@@ -27,6 +29,7 @@ riml_include 'file_writer.riml'
27
29
  riml_include 'console_writer.riml'
28
30
  riml_include 'buffer_writer.riml'
29
31
  riml_include 'writer_factory.riml'
32
+ riml_include 'file_log_writer.riml'
30
33
 
31
34
  "" reporters
32
35
  riml_include 'base_reporter.riml'
@@ -87,6 +90,9 @@ class Speckle
87
90
  reporter = factory.get_reporter(self.get_reporter_name())
88
91
  reporter.set_writer(writer)
89
92
 
93
+ logger = get_logger()
94
+ logger.add_log_writer(reporter)
95
+
90
96
  return reporter
91
97
  end
92
98
 
@@ -13,8 +13,8 @@ class FileWriter
13
13
  end
14
14
 
15
15
  defm writeln(line)
16
- self.flush_line()
17
- add(self.lines, line)
16
+ add(self.lines, "#{self.current_line}#{line}")
17
+ self.current_line = ''
18
18
  end
19
19
 
20
20
  defm flush_line()
@@ -0,0 +1,15 @@
1
+ riml_include 'dsl.riml'
2
+
3
+ class LoggerSpec
4
+ defm describe
5
+ return 'LoggerSpec'
6
+ end
7
+
8
+ defm it_logs_a_message
9
+ logger = get_logger()
10
+ logger.info('Hello World')
11
+ logger.debug('A debug message')
12
+ logger.warn('A test warning')
13
+ logger.error('An error warning')
14
+ end
15
+ end
@@ -261,10 +261,16 @@ module Speckle
261
261
  expect('').to_not have_default_option('tag')
262
262
  end
263
263
 
264
- it 'takes tag fram --tag' do
264
+ it 'takes tag from --tag' do
265
265
  expect(['--tag', 'focus']).to yield_option_value('tag', 'focus')
266
266
  end
267
267
 
268
+ it 'does not have duplicate inputs', :foo => true do
269
+ env = Environment.new
270
+ opts = env.load(['spec', 'spec'])
271
+ expect(opts.inputs.length).to eq(1)
272
+ end
273
+
268
274
  end
269
275
 
270
276
  describe 'Complete CLI options' do
@@ -300,5 +306,6 @@ module Speckle
300
306
  end
301
307
 
302
308
  end
309
+
303
310
  end
304
311
  end
@@ -0,0 +1,12 @@
1
+ riml_include 'dsl.riml'
2
+
3
+ class SpeckleModeSpec
4
+ defm describe
5
+ return 'SpeckleModeSpec'
6
+ end
7
+
8
+ defm it_has_speckle_mode
9
+ expect(g:speckle_mode).to_be_true()
10
+ end
11
+
12
+ end
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.10
4
+ version: 0.1.11
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-08-18 00:00:00.000000000 Z
11
+ date: 2013-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: riml
@@ -110,6 +110,9 @@ files:
110
110
  - bin/speckle
111
111
  - lib/dsl.riml
112
112
  - lib/expectation.riml
113
+ - lib/logger/echo_log_writer.riml
114
+ - lib/logger/file_log_writer.riml
115
+ - lib/logger/logger.riml
113
116
  - lib/matchers/above_matcher.riml
114
117
  - lib/matchers/atleast_matcher.riml
115
118
  - lib/matchers/atmost_matcher.riml
@@ -157,6 +160,7 @@ files:
157
160
  - lib/writers/writer_factory.riml
158
161
  - spec/after_hooks_spec.riml
159
162
  - spec/before_hooks_spec.riml
163
+ - spec/logger/logger_spec.riml
160
164
  - spec/matchers/above_matcher_spec.riml
161
165
  - spec/matchers/atleast_matcher_spec.riml
162
166
  - spec/matchers/atmost_matcher_spec.riml
@@ -178,6 +182,7 @@ files:
178
182
  - spec/speckle/list/extension_transformer_spec.rb
179
183
  - spec/speckle/list/file_content_filter_spec.rb
180
184
  - spec/speckle/list/pattern_filter_spec.rb
185
+ - spec/speckle_mode_spec.riml
181
186
  - spec/tagged_spec.riml
182
187
  - speckle.gemspec
183
188
  homepage: http://github.com/dsawardekar/speckle
@@ -207,6 +212,7 @@ summary: Compiles *_spec.riml spec files into *.vim files and runs them inside v
207
212
  test_files:
208
213
  - spec/after_hooks_spec.riml
209
214
  - spec/before_hooks_spec.riml
215
+ - spec/logger/logger_spec.riml
210
216
  - spec/matchers/above_matcher_spec.riml
211
217
  - spec/matchers/atleast_matcher_spec.riml
212
218
  - spec/matchers/atmost_matcher_spec.riml
@@ -228,4 +234,5 @@ test_files:
228
234
  - spec/speckle/list/extension_transformer_spec.rb
229
235
  - spec/speckle/list/file_content_filter_spec.rb
230
236
  - spec/speckle/list/pattern_filter_spec.rb
237
+ - spec/speckle_mode_spec.riml
231
238
  - spec/tagged_spec.riml