starting_blocks 1.1.3 → 1.2.0

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d85fae44dd3a48a67ae0473e9592bcb1f2eadbad
4
- data.tar.gz: 57cb4165b3abe6fba038282d204b67bea315a857
3
+ metadata.gz: 1462b26d4b584409f66efc4d657de2a05ecf0e0d
4
+ data.tar.gz: cd075e1c73f7c8d7ce013624679675b6b2a670d0
5
5
  SHA512:
6
- metadata.gz: 13f8621ce3f73435918309fbe420d9ca1016ad0c3564e43f71efc2967afecbc156b7bab49e19c8deeaf946673dde2984cae88c6a6ccf471d05ec525466d619cd
7
- data.tar.gz: 70fd0e80b63095ca0e4f88a6e4dc0af7fce1c5363d2997b62f0d1bdaf9f49a49f98868d2ca88b69556219c677f53460f0a588212ac77d2d1b0f1168b84778754
6
+ metadata.gz: 76503a6ffbd9583c06bedfdc11a9f0ea02f70ec14130c773041864e5e7e1694909f5033232e313f9482085d8855ab801d4178f0e7b97fc3e2eced3b815ecc36d
7
+ data.tar.gz: 26fef9f5f5a0dda1c8861ff7fe20bf443465bfa28ce77780ed6dbc29989a07049078370fe217d0b30835be7b5e49b3827a2c27814fa36f8ef5b30265fe538d8f
@@ -1,3 +1,3 @@
1
1
  module StartingBlocks
2
- VERSION = "1.1.3"
2
+ VERSION = "1.2.0"
3
3
  end
@@ -5,6 +5,23 @@ module StartingBlocks
5
5
 
6
6
  @last_failed_run = nil
7
7
 
8
+ def self.filter_files_according_to_the_contract files, contract
9
+ extensions = contract.extensions.map { |x| x.gsub('.', '').downcase }
10
+ files.select do |file|
11
+ splits = file.split('/')[-1].split('.')
12
+ (splits.count == 1 && extensions.include?('')) ||
13
+ (extensions.include?(splits[-1].downcase))
14
+ end
15
+ end
16
+
17
+ def self.filter_files_by_file_clues files, clues
18
+ files.select do |file|
19
+ file_without_path = file.split('/')[-1]
20
+ matches = clues.select { |clue| file_without_path.include? clue }
21
+ matches.count > 0
22
+ end
23
+ end
24
+
8
25
  class << self
9
26
  def start_watching(dir, options)
10
27
  StartingBlocks.display("Start watching #{dir.getwd} with #{options.inspect}")
@@ -21,6 +38,9 @@ module StartingBlocks
21
38
  StartingBlocks::Watcher.add_it(added[0]) if added.count > 0
22
39
  StartingBlocks::Watcher.delete_it(removed[0]) if removed.count > 0
23
40
  next if @running
41
+
42
+ modified = StartingBlocks::Watcher.filter_files_according_to_the_contract modified, @contract
43
+
24
44
  StartingBlocks::Watcher.run_it(modified[0]) if modified.count > 0
25
45
  end
26
46
 
@@ -82,16 +82,10 @@ module StartingBlocks
82
82
  def run_all_specs
83
83
  ->() do
84
84
  contract = StartingBlocks::Contract.for StartingBlocks.options
85
- file_specs = contract.file_clues.map do |clue|
86
- contract.extensions.map do |extension|
87
- "**/*#{clue}*.#{extension.gsub('.', '')}"
88
- end
89
- end.flatten
90
- files = file_specs.map do |d|
91
- Dir[d].
92
- select { |f| File.file?(f) }.
93
- map { |x| File.expand_path(x) }
94
- end.flatten
85
+ files = Dir['**/*'].select { |f| File.file? f }
86
+ .map { |x| File.expand_path x }.flatten
87
+ files = StartingBlocks::Watcher.filter_files_by_file_clues files, contract.file_clues
88
+ files = StartingBlocks::Watcher.filter_files_according_to_the_contract files, contract
95
89
  StartingBlocks::Runner.new(StartingBlocks.options).run_files files
96
90
  end
97
91
  end
@@ -0,0 +1,62 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe StartingBlocks::Watcher do
4
+
5
+ describe "filter files according to the contract" do
6
+
7
+ [
8
+ [['.rb'], ['apple.rb', 'orange.py'], ['apple.rb']],
9
+ [['.rb'], ['apple.py', 'orange.rb'], ['orange.rb']],
10
+ [['.txt'], ['/test/something.txt', 'another.txt'], ['/test/something.txt', 'another.txt']],
11
+ [['.txt'], ['/test/something.TXT', 'another.Txt'], ['/test/something.TXT', 'another.Txt']],
12
+ [['.txt', '.rb'], ['a.txt', 'b.rb', 'c.cs'], ['a.txt', 'b.rb']],
13
+ [['txt', 'rb'], ['a.txt', 'b.rb', 'c.cs'], ['a.txt', 'b.rb']],
14
+ [[''], ['a.txt', 'Gemfile'], ['Gemfile']],
15
+ ].map { |a| Struct.new(:extensions, :files, :expected_results).new(*a) }.each do |example|
16
+
17
+ describe "multiple examples" do
18
+
19
+ it "should filter the files" do
20
+
21
+ contract = Struct.new(:extensions).new example.extensions
22
+ results = StartingBlocks::Watcher.filter_files_according_to_the_contract example.files, contract
23
+
24
+ results.must_equal example.expected_results
25
+
26
+ end
27
+
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
34
+ describe "filtering files according to file clues" do
35
+
36
+ [
37
+ [
38
+ ['one_test.txt'], ['_test'], ['one_test.txt']
39
+ ],
40
+ [
41
+ ['one_spec.txt'], ['_test'], [],
42
+ ],
43
+ [
44
+ ['two_spec.txt', 'three_test.txt'], ['_spec', '_test'], ['two_spec.txt', 'three_test.txt'],
45
+ ],
46
+ [
47
+ ['another', 'two_spec.txt', 'three_test.txt'], ['_spec', '_test'], ['two_spec.txt', 'three_test.txt'],
48
+ ],
49
+ ].map { |x| Struct.new(:files, :clues, :expected).new(*x) }.each do |example|
50
+
51
+ describe "multiple examples" do
52
+ it "should return the expected results" do
53
+ results = StartingBlocks::Watcher.filter_files_by_file_clues example.files, example.clues
54
+ results.must_equal example.expected
55
+ end
56
+ end
57
+
58
+ end
59
+
60
+ end
61
+
62
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: starting_blocks
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darren Cauthon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-25 00:00:00.000000000 Z
11
+ date: 2014-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -123,6 +123,7 @@ files:
123
123
  - spec/starting_blocks/result_parser_spec.rb
124
124
  - spec/starting_blocks/result_text_parser_spec.rb
125
125
  - spec/starting_blocks/runner_spec.rb
126
+ - spec/starting_blocks/watcher_spec.rb
126
127
  - starting_blocks.gemspec
127
128
  homepage: http://www.github.com/darrencauthon/starting_blocks
128
129
  licenses:
@@ -154,3 +155,4 @@ test_files:
154
155
  - spec/starting_blocks/result_parser_spec.rb
155
156
  - spec/starting_blocks/result_text_parser_spec.rb
156
157
  - spec/starting_blocks/runner_spec.rb
158
+ - spec/starting_blocks/watcher_spec.rb