speckle 0.1.10 → 0.1.11

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 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