speckle 0.1.7 → 0.1.8

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
- YmQ4NTM5MWUxYzA5YzYwMjk1NmFiYjBmZTg1ODcyMjlhNjBjMTJiNA==
4
+ ZmU1NzA4NTg3YTg4MmM1ZThhNTY2MDg5ZTRjMjA1MmNhYWI5ZDAxNw==
5
5
  data.tar.gz: !binary |-
6
- MDhhZjVmNmIzMjY2YWM1N2FkYTUxZDZhNzg1Y2JhZjA4YTExMGQzNA==
6
+ MmFjZjllNDk5ODIxOTAxYTcwNjBmOGVhZTg1ZTU0ZGVlZTBiYzViOQ==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NzgxZWFlMTVhNjMwZTk5YmE2MzM2YmI0NWI3ZDIzMDJjZDI1OGZkYWI1MDI4
10
- MjhkZDA3ZTg0YjBkMGY5NWNjZWJlM2ZjOWI2ZjI4YTdkNzY4ZWMzMmI0NzJk
11
- ZDMwZjI0NjUyNWJkMDM0MTdlZTQ0ODZmNTViY2I1ZmVlMTI5ZDQ=
9
+ NWM2ZDkzYWE4ZmZhOGFkYjg2MTBjODI1OWMzOGVkMTU3NmI3NjE1YzgwOGRm
10
+ ZTA5MjU2ZWE0Y2U4NjJkZDBlMGM3YzMwNmU1YWE2Mzg3ZjI0NjYzMmE4MTAw
11
+ ZDgyODYxNjhmYmE4OTM5ZmZiODQxMWU5MzhjZDVjM2JlMGZiNGI=
12
12
  data.tar.gz: !binary |-
13
- NTI2Mjk4ODYyNTU1OTk0Yzk4YjQ2Mjg5MTQzMDdhNzA5ZWZlNDJhNTA5ZDEx
14
- ZjkzZTBlYTA0Y2NjNDNkMzJlYWM3ZGQ2ZTgxMTYxNjM4NjFlODg1OTg2N2M2
15
- MzMyMjM3NmFlMjU4N2UzOWMzN2I3ZTI4NjcwNDE0ZWY0YTk3Mzk=
13
+ MzUxZjU4ZjkzZjc0ZmY2N2QyYzg5MTE0ZWRjYzE1ODVkMGEyMDFkMzEyYjBj
14
+ ZDMxZDZhMDMzNGQyNjM5NWEyOTQ3OGYwNWIwYzg0MjYzZmE4MTFiZTk1YWNl
15
+ ZmQ1ZDBkMzZlY2NjMTU4Y2ZhNjkwOGE5NzE3NDEyODVlNzU0NDk=
data/Rakefile CHANGED
@@ -88,22 +88,6 @@ namespace :speckle do
88
88
  end
89
89
  end
90
90
 
91
- TAGGED_TEST_SOURCES = FileList.new do |fl|
92
- TEST_SOURCES.each do |s|
93
- if TAG and File.readlines(s).grep(Regexp.new(TAG)).size > 0
94
- fl.include(s)
95
- end
96
- end
97
- end
98
-
99
- TAGGED_TEST_COMPILED = FileList.new do |fl|
100
- TEST_SOURCES.each do |s|
101
- if TAG and File.readlines(s).grep(Regexp.new(TAG)).size > 0
102
- fl.include("#{BUILD_DIR}/#{s.ext('vim')}")
103
- end
104
- end
105
- end
106
-
107
91
  desc 'All tasks'
108
92
  task :all => [:clean, :compile, :compile_tests, :test]
109
93
 
@@ -140,7 +124,7 @@ namespace :speckle do
140
124
 
141
125
  desc "Compile specs"
142
126
  task :compile_tests => [:build] do
143
- get_test_sources.each do |t|
127
+ TEST_SOURCES.each do |t|
144
128
  verbose VERBOSE do
145
129
  puts "Compiling: #{t} "
146
130
  sh "bundle exec riml -c #{t} -I #{TEST_LIBS}"
@@ -179,7 +163,13 @@ namespace :speckle do
179
163
  puts 'Running tests: '
180
164
  puts
181
165
 
182
- launch_vim
166
+ if TEST_COMPILED.length > 0
167
+ launch_vim
168
+ elsif TAG
169
+ puts "All tests were filtered out."
170
+ else
171
+ puts "No tests to run."
172
+ end
183
173
  end
184
174
 
185
175
  desc "Watch files for changes and run tests"
@@ -187,22 +177,6 @@ namespace :speckle do
187
177
  puts '--- TODO ---'
188
178
  end
189
179
 
190
- def get_test_sources
191
- if TAG
192
- return TAGGED_TEST_SOURCES
193
- else
194
- return TEST_SOURCES
195
- end
196
- end
197
-
198
- def get_test_compiled
199
- if TAG
200
- return TAGGED_TEST_COMPILED
201
- else
202
- return TEST_COMPILED
203
- end
204
- end
205
-
206
180
  def get_vim_options
207
181
  cmd = ''
208
182
  if SKIP_VIMRC
@@ -234,7 +208,7 @@ namespace :speckle do
234
208
  source #{SPECKLE_OUTPUT}
235
209
  CMD
236
210
 
237
- get_test_compiled.each do |t|
211
+ TEST_COMPILED.each do |t|
238
212
  launch_cmd += <<CMD
239
213
  source #{t}
240
214
  CMD
@@ -2,15 +2,19 @@ module Speckle
2
2
  module CLI
3
3
 
4
4
  require 'speckle/version'
5
+ require 'speckle/cli/rake_app'
5
6
 
6
7
  class Controller
7
8
 
8
- def initialize(options, rake_app)
9
+ def initialize(options)
9
10
  @options = options
10
- @rake_app = rake_app
11
11
  end
12
12
 
13
13
  def rake(task)
14
+ if @rake_app.nil?
15
+ @rake_app = RakeApp.new(@options)
16
+ end
17
+
14
18
  @rake_app.invoke_task(task)
15
19
  end
16
20
 
@@ -2,6 +2,12 @@ module Speckle
2
2
  module CLI
3
3
 
4
4
  require 'rake'
5
+ require 'speckle/list/builder'
6
+ require 'speckle/list/absolute_path_transformer'
7
+ require 'speckle/list/dir_expander'
8
+ require 'speckle/list/extension_transformer'
9
+ require 'speckle/list/file_content_filter'
10
+ require 'speckle/list/pattern_filter'
5
11
 
6
12
  class RakeApp
7
13
  def initialize(options)
@@ -37,6 +43,8 @@ module Speckle
37
43
  end
38
44
 
39
45
  def invoke_task(name)
46
+ #puts "invoke_task: #{name}"
47
+ #rake
40
48
  rake.invoke_task("speckle:#{name.to_s}")
41
49
  end
42
50
 
@@ -77,51 +85,40 @@ module Speckle
77
85
  "#{@options.cwd}/build"
78
86
  end
79
87
 
88
+ def test_sources
89
+ get_builder.build
90
+ end
91
+
80
92
  def test_compiled
81
- compiled = test_sources.map do |s|
82
- s.ext('vim')
93
+ sources = test_sources
94
+ sources.collect do |source|
95
+ source.ext('vim')
83
96
  end
84
-
85
- compiled
86
97
  end
87
98
 
88
- def test_sources
89
- sources = []
90
- grep_pattern = @options.grep_pattern
91
- grep_invert = @options.grep_invert
92
- unless grep_pattern.nil?
93
- regex = Regexp.new(grep_pattern)
94
- end
99
+ def get_builder
100
+ if @source_builder.nil?
101
+ @source_builder = Speckle::List::Builder.new
102
+ @options.inputs.each do |input|
103
+ @source_builder.add_source input
104
+ end
105
+
106
+ @source_builder.add_filter Speckle::List::DirExpander.new('**/*_spec.riml')
95
107
 
96
- inputs.each do |input|
97
- if File.directory?(input)
98
- if grep_pattern.nil?
99
- sources << "#{input}/**/*_spec.riml"
100
- else
101
- sources = Dir.glob("#{input}/**/*_spec.riml")
102
- sources.keep_if do |source|
103
- matched = regex.match(source)
104
- if grep_invert
105
- matched = !matched
106
- end
107
-
108
- matched
109
- end
110
- end
111
- else
112
- if grep_pattern.nil?
113
- sources << input
114
- else
115
- matched = regex.match(input)
116
- if grep_invert
117
- matched = !matched
118
- end
119
- sources << input if matched
120
- end
108
+ unless @options.tag.nil?
109
+ @source_builder.add_filter Speckle::List::FileContentFilter.new(@options.tag, false)
121
110
  end
111
+
112
+ unless @options.grep_pattern.nil?
113
+ @source_builder.add_filter Speckle::List::PatternFilter.new(@options.grep_pattern, @options.grep_invert)
114
+ end
115
+
116
+ # Not using this at the moment, as it's simpler to not rebuild the source paths for test_compiled
117
+ #@source_builder.add_filter Speckle::List::AbsolutePathTransformer.new
118
+ #@source_builder.add_filter Speckle::List::ExtensionTransformer.new('vim')
122
119
  end
123
120
 
124
- sources
121
+ @source_builder
125
122
  end
126
123
 
127
124
  def test_libs
@@ -1,13 +1,11 @@
1
1
  module Speckle
2
2
  module CLI
3
3
 
4
- require_relative 'rake_app'
5
4
  require_relative 'controller'
6
5
 
7
6
  class Router
8
7
  def route(action, options)
9
- rake_app = RakeApp.new(options)
10
- controller = Controller.new(options, rake_app)
8
+ controller = Controller.new(options)
11
9
  controller.send(action)
12
10
  end
13
11
  end
@@ -0,0 +1,9 @@
1
+ module Speckle
2
+ module List
3
+ class AbsolutePathTransformer
4
+ def run(item)
5
+ [File.absolute_path(item)]
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,43 @@
1
+ module Speckle
2
+ module List
3
+ class Builder
4
+ def initialize
5
+ @sources = []
6
+ @filters = []
7
+ @filtered = nil
8
+ end
9
+
10
+ def add_source(source)
11
+ @sources << source
12
+ end
13
+
14
+ def add_filter(filter)
15
+ @filters << filter
16
+ end
17
+
18
+ def filter_list(list, filter)
19
+ filtered = []
20
+ list.each do |item|
21
+ result = filter.run(item)
22
+ filtered.concat(result)
23
+ end
24
+
25
+ filtered
26
+ end
27
+
28
+ def rebuild
29
+ filtered = @sources
30
+ @filters.each do |filter|
31
+ filtered = filter_list(filtered, filter)
32
+ end
33
+
34
+ @filtered = filtered
35
+ end
36
+
37
+ def build
38
+ rebuild if @filtered.nil?
39
+ @filtered
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,21 @@
1
+ module Speckle
2
+ module List
3
+ class DirExpander
4
+ def initialize(pattern)
5
+ @pattern = pattern
6
+ end
7
+
8
+ def run(item)
9
+ pattern = "#{item}/#{@pattern}"
10
+ #puts "DirExpander:run #{item}, pattern=#{pattern}"
11
+ #puts "is dir = #{File.directory?(item)}"
12
+
13
+ if File.directory?(item)
14
+ return Dir.glob(pattern)
15
+ else
16
+ return [item]
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,14 @@
1
+ module Speckle
2
+ module List
3
+ class ExtensionTransformer
4
+ def initialize(extension)
5
+ @extension = extension
6
+ end
7
+
8
+ def run(item)
9
+ item = item.ext(@extension)
10
+ return [item]
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,27 @@
1
+ module Speckle
2
+ module List
3
+ class FileContentFilter
4
+ def initialize(pattern, invert = false)
5
+ @pattern = pattern
6
+ @invert = invert
7
+ end
8
+
9
+ def run(item)
10
+ return [] unless File.exists?(item)
11
+
12
+ matched = has_content(item, @pattern)
13
+ if @invert
14
+ matched = !matched
15
+ end
16
+
17
+ return [item] if matched
18
+ return []
19
+ end
20
+
21
+ def has_content(item, pattern)
22
+ regex = Regexp.new(pattern)
23
+ File.readlines(item).grep(regex).size > 0
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,21 @@
1
+ module Speckle
2
+ module List
3
+ class PatternFilter
4
+ def initialize(pattern, invert = false)
5
+ @pattern = pattern
6
+ @invert = invert
7
+ end
8
+
9
+ def run(item)
10
+ regex = Regexp.new(@pattern)
11
+ matched = !item.match(regex).nil?
12
+ if @invert
13
+ matched = !matched
14
+ end
15
+
16
+ return [item] if matched
17
+ return []
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,3 +1,3 @@
1
1
  module Speckle
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
3
3
  end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+ require 'speckle/list/absolute_path_transformer'
3
+
4
+ module Speckle
5
+ module List
6
+
7
+ describe 'AbsolutePathTransformer' do
8
+
9
+ before :each do
10
+ @filter = AbsolutePathTransformer.new
11
+ end
12
+
13
+ it 'can be run' do
14
+ expect(@filter).to respond_to(:run)
15
+ end
16
+
17
+ it 'can converts path to list with path' do
18
+ result = @filter.run('foo')
19
+ expect(result).to be_kind_of(Array)
20
+ expect(result).to eq(["#{Dir.pwd}/foo"])
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,43 @@
1
+ require 'rake'
2
+ require 'spec_helper'
3
+ require 'speckle/list/builder'
4
+ require 'speckle/list/absolute_path_transformer'
5
+ require 'speckle/list/dir_expander'
6
+ require 'speckle/list/extension_transformer'
7
+ require 'speckle/list/file_content_filter'
8
+ require 'speckle/list/pattern_filter'
9
+ require 'securerandom'
10
+
11
+ module Speckle
12
+ module List
13
+
14
+ describe 'Builder' do
15
+
16
+ before :each do
17
+ @builder = Builder.new
18
+ end
19
+
20
+ it 'can be built' do
21
+ expect(@builder).to respond_to(:build)
22
+ end
23
+
24
+ it 'can build list of source files from directory', :a => true do
25
+ builder = Builder.new
26
+ builder.add_source 'spec'
27
+ builder.add_filter DirExpander.new('**/*_spec.riml')
28
+ builder.add_filter FileContentFilter.new('class', false)
29
+ builder.add_filter PatternFilter.new('matcher')
30
+ builder.add_filter AbsolutePathTransformer.new
31
+ builder.add_filter ExtensionTransformer.new('riml')
32
+
33
+ result = builder.build
34
+ result.each do |f|
35
+ expect(File.exists?(f)).to be_true
36
+ end
37
+ #puts result
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+ require 'speckle/list/dir_expander'
3
+
4
+ module Speckle
5
+ module List
6
+
7
+ describe 'DirExpander' do
8
+
9
+ before :each do
10
+ @filter = DirExpander.new('**/*.riml')
11
+ end
12
+
13
+ it 'can be run' do
14
+ expect(@filter).to respond_to(:run)
15
+ end
16
+
17
+ it 'returns an array of files on run' do
18
+ result = @filter.run('spec')
19
+
20
+ expect(result).to be_kind_of(Array)
21
+ expect(result).to_not be_empty
22
+ end
23
+
24
+ it 'can returns an array of files that exist' do
25
+ result = @filter.run('spec')
26
+
27
+ result.each do |f|
28
+ expect(File.exists?(f)).to be_true
29
+ end
30
+ end
31
+
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,33 @@
1
+ require 'rake'
2
+ require 'spec_helper'
3
+ require 'speckle/list/extension_transformer'
4
+
5
+ module Speckle
6
+ module List
7
+
8
+ describe 'ExtensionTransformer' do
9
+
10
+ before :each do
11
+ @filter = ExtensionTransformer.new('vim')
12
+ end
13
+
14
+ it 'can be run' do
15
+ expect(@filter).to respond_to(:run)
16
+ end
17
+
18
+ it 'returns an array on run' do
19
+ result = @filter.run('foo.riml')
20
+
21
+ expect(result).to be_kind_of(Array)
22
+ expect(result).to_not be_empty
23
+ end
24
+
25
+ it 'changes the extension on run' do
26
+ result = @filter.run('foo.riml')
27
+ expect(result).to eq(['foo.vim'])
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,57 @@
1
+ require 'rake'
2
+ require 'spec_helper'
3
+ require 'speckle/list/file_content_filter'
4
+ require 'securerandom'
5
+
6
+ module Speckle
7
+ module List
8
+
9
+ describe 'FileContentFilter' do
10
+
11
+ before :each do
12
+ @filter = FileContentFilter.new('custom_content')
13
+ end
14
+
15
+ it 'can be run' do
16
+ expect(@filter).to respond_to(:run)
17
+ end
18
+
19
+ it 'returns an array on run' do
20
+ result = @filter.run(__FILE__)
21
+
22
+ expect(result).to be_kind_of(Array)
23
+ end
24
+
25
+ it 'returns empty array for non existant file' do
26
+ result = @filter.run(SecureRandom.uuid())
27
+ expect(result).to be_empty
28
+ end
29
+
30
+ it 'returns passed file if it has content' do
31
+ result = @filter.run(__FILE__)
32
+ expect(result).to eq([__FILE__])
33
+ end
34
+
35
+ it 'returns empty array if file does not match pattern' do
36
+ @filter = FileContentFilter.new('loremipsumdolorsitamet')
37
+ result = @filter.run("#{Dir.pwd}/spec/spec_helper.rb")
38
+ expect(result).to eq([])
39
+ end
40
+
41
+ it 'returns empty array if it has content with invert flag' do
42
+ @filter = FileContentFilter.new('focus', true)
43
+ result = @filter.run(__FILE__)
44
+ expect(result).to eq([])
45
+ end
46
+
47
+ it 'returns array with passed item if file does not match pattern with invert flag' do
48
+ @filter = FileContentFilter.new('loremipsumdolorsitamet', true)
49
+ file = "#{Dir.pwd}/spec/spec_helper.rb"
50
+ result = @filter.run(file)
51
+ expect(result).to eq([file])
52
+ end
53
+
54
+ end
55
+
56
+ end
57
+ end
@@ -0,0 +1,58 @@
1
+ require 'rake'
2
+ require 'spec_helper'
3
+ require 'speckle/list/pattern_filter'
4
+ require 'securerandom'
5
+
6
+ module Speckle
7
+ module List
8
+
9
+ describe 'PatternFilter' do
10
+
11
+ before :each do
12
+ @filter = PatternFilter.new('^lorem')
13
+ end
14
+
15
+ it 'can be run' do
16
+ expect(@filter).to respond_to(:run)
17
+ end
18
+
19
+ it 'returns an array on run' do
20
+ result = @filter.run('foobar')
21
+
22
+ expect(result).to be_kind_of(Array)
23
+ end
24
+
25
+ it 'returns empty array for a mismatched pattern', :a => true do
26
+ result = @filter.run('foobar')
27
+ expect(result).to be_empty
28
+ end
29
+
30
+ it 'returns passed filename if it matches pattern', :b => true do
31
+ @filter = PatternFilter.new('pattern_filter')
32
+ result = @filter.run(__FILE__)
33
+ expect(result).to eq([__FILE__])
34
+ end
35
+
36
+ it 'returns empty array if file does not match pattern' do
37
+ @filter = PatternFilter.new('loremipsumdolorsitamet')
38
+ result = @filter.run("#{Dir.pwd}/spec/spec_helper.rb")
39
+ expect(result).to eq([])
40
+ end
41
+
42
+ it 'returns empty array if it has content with invert flag', :d => true do
43
+ @filter = PatternFilter.new('pattern_filter', true)
44
+ result = @filter.run(__FILE__)
45
+ expect(result).to eq([])
46
+ end
47
+
48
+ it 'returns array with passed item if file does not match pattern with invert flag' do
49
+ @filter = FileContentFilter.new('loremipsumdolorsitamet', true)
50
+ file = "#{Dir.pwd}/spec/spec_helper.rb"
51
+ result = @filter.run(file)
52
+ expect(result).to eq([file])
53
+ end
54
+
55
+ end
56
+
57
+ end
58
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: speckle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darshan Sawardekar
@@ -140,6 +140,12 @@ files:
140
140
  - lib/speckle/cli/environment.rb
141
141
  - lib/speckle/cli/rake_app.rb
142
142
  - lib/speckle/cli/router.rb
143
+ - lib/speckle/list/absolute_path_transformer.rb
144
+ - lib/speckle/list/builder.rb
145
+ - lib/speckle/list/dir_expander.rb
146
+ - lib/speckle/list/extension_transformer.rb
147
+ - lib/speckle/list/file_content_filter.rb
148
+ - lib/speckle/list/pattern_filter.rb
143
149
  - lib/speckle/loader.rb
144
150
  - lib/speckle/version.rb
145
151
  - lib/utils/spec_meta.riml
@@ -166,6 +172,12 @@ files:
166
172
  - spec/matchers/within_matcher_spec.riml
167
173
  - spec/spec_helper.rb
168
174
  - spec/speckle/cli/environment_spec.rb
175
+ - spec/speckle/list/absolute_path_transformer_spec.rb
176
+ - spec/speckle/list/builder_spec.rb
177
+ - spec/speckle/list/dir_expander_spec.rb
178
+ - spec/speckle/list/extension_transformer_spec.rb
179
+ - spec/speckle/list/file_content_filter_spec.rb
180
+ - spec/speckle/list/pattern_filter_spec.rb
169
181
  - spec/tagged_spec.riml
170
182
  - speckle.gemspec
171
183
  homepage: http://github.com/dsawardekar/speckle
@@ -210,4 +222,10 @@ test_files:
210
222
  - spec/matchers/within_matcher_spec.riml
211
223
  - spec/spec_helper.rb
212
224
  - spec/speckle/cli/environment_spec.rb
225
+ - spec/speckle/list/absolute_path_transformer_spec.rb
226
+ - spec/speckle/list/builder_spec.rb
227
+ - spec/speckle/list/dir_expander_spec.rb
228
+ - spec/speckle/list/extension_transformer_spec.rb
229
+ - spec/speckle/list/file_content_filter_spec.rb
230
+ - spec/speckle/list/pattern_filter_spec.rb
213
231
  - spec/tagged_spec.riml