speckle 0.1.7 → 0.1.8

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