grspec 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/grspec +6 -5
- data/lib/find_changed_files/between_refs.rb +4 -2
- data/lib/find_matching_specs.rb +5 -3
- data/lib/spec_runner.rb +5 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37e98f517772ef358da9d9eb36f553d571ae17204eeb7c47dfd45bbc2f9868ac
|
4
|
+
data.tar.gz: 5e14f29212bc6a384418ef5f2aa16429a10b166b2a6a4f2c744a79227871dd90
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f50f800264cc862c3f666ef47441e0fb051d99d31bf35ea41f62395378bb6727140b3dc89b7034f44f20ae0445f3bb700ff1374007362d6990962d6a3b1f9b16
|
7
|
+
data.tar.gz: b221ca121a365098c6edfc1e26e80e77049453636f9413752c3529fe954ee330272916fc3ebad3bb06abe60eed8120467d0fa130c8e17042827aa128b5d1eb57
|
data/bin/grspec
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
|
2
3
|
require 'active_support/core_ext/array/access'
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
5
|
+
require_relative '../lib/find_changed_files'
|
6
|
+
require_relative '../lib/find_matching_specs'
|
7
|
+
require_relative '../lib/spec_runner'
|
7
8
|
|
8
9
|
def display_listing(header, listing)
|
9
10
|
puts
|
@@ -24,9 +25,9 @@ if changed_files.any?
|
|
24
25
|
matching_specs = FindMatchingSpecs.new(changed_files).call
|
25
26
|
|
26
27
|
if matching_specs.any?
|
27
|
-
display_listing('Matching specs:', matching_specs)
|
28
|
+
display_listing('Matching specs:', matching_specs.map {|matching_spec| matching_spec.join(' -> ') })
|
28
29
|
|
29
|
-
SpecRunner.run(matching_specs)
|
30
|
+
SpecRunner.run(matching_specs.map(&:second).uniq)
|
30
31
|
else
|
31
32
|
puts "No matching specs found"
|
32
33
|
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
class FindChangedFiles::BetweenRefs < FindChangedFiles
|
2
|
+
require 'English'
|
3
|
+
|
2
4
|
attr_reader :base_ref, :diff_ref
|
3
5
|
|
4
6
|
GIT_MERGE_BASE_COMMAND = 'git merge-base'.freeze
|
@@ -17,7 +19,7 @@ class FindChangedFiles::BetweenRefs < FindChangedFiles
|
|
17
19
|
def merge_base_ref
|
18
20
|
merge_base = `#{GIT_MERGE_BASE_COMMAND} #{base_ref} #{diff_ref} #{REDIRECT_STDERR_TO_STDOUT}`
|
19
21
|
|
20
|
-
raise ArgumentError.new("Bad git diff arguments; #{base_ref} #{diff_ref}") unless
|
22
|
+
raise ArgumentError.new("Bad git diff arguments; #{base_ref} #{diff_ref}") unless $CHILD_STATUS.success?
|
21
23
|
|
22
24
|
merge_base.strip
|
23
25
|
end
|
@@ -26,7 +28,7 @@ class FindChangedFiles::BetweenRefs < FindChangedFiles
|
|
26
28
|
@differed_files ||= begin
|
27
29
|
diff_output = `#{GIT_DIFF_COMMAND} #{from_ref} #{to_ref} #{GIT_DIFF_OPTIONS} #{REDIRECT_STDERR_TO_STDOUT}`
|
28
30
|
|
29
|
-
raise ArgumentError.new("Bad git diff arguments; #{base_ref} #{diff_ref}") unless
|
31
|
+
raise ArgumentError.new("Bad git diff arguments; #{base_ref} #{diff_ref}") unless $CHILD_STATUS.success?
|
30
32
|
|
31
33
|
diff_output.split("\n")
|
32
34
|
end
|
data/lib/find_matching_specs.rb
CHANGED
@@ -11,7 +11,7 @@ class FindMatchingSpecs
|
|
11
11
|
|
12
12
|
def call
|
13
13
|
ruby_files = files.select { |filename| ruby_file?(filename) }
|
14
|
-
spec_files = ruby_files.map { |filename| specs_for(filename) }
|
14
|
+
spec_files = ruby_files.map { |filename| specs_for(filename) }
|
15
15
|
|
16
16
|
spec_files.compact.uniq
|
17
17
|
end
|
@@ -31,14 +31,16 @@ class FindMatchingSpecs
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def specs_for(filename)
|
34
|
-
return [filename] if spec_file?(filename)
|
34
|
+
return [filename, filename] if spec_file?(filename)
|
35
35
|
|
36
|
-
spec_file_listing.
|
36
|
+
spec_match = spec_file_listing.detect do |spec_file|
|
37
37
|
file_for_spec = spec_file.gsub(/\/?spec\//, '/')
|
38
38
|
file_for_spec.sub!(SPEC_PREFIX_AND_EXTENSION, RUBY_FILE_EXTENSION)
|
39
39
|
file_for_spec.sub!(/^\//, '')
|
40
40
|
|
41
41
|
file_for_spec == filename
|
42
42
|
end
|
43
|
+
|
44
|
+
[filename, spec_match] unless spec_match.nil?
|
43
45
|
end
|
44
46
|
end
|
data/lib/spec_runner.rb
CHANGED
@@ -2,6 +2,10 @@ class SpecRunner
|
|
2
2
|
RSPEC_COMMAND = 'rspec'.freeze
|
3
3
|
|
4
4
|
def self.run(matching_specs)
|
5
|
-
|
5
|
+
specs_to_run, removed_files = matching_specs.partition { |spec_file| File.file?(spec_file) }
|
6
|
+
|
7
|
+
system "#{RSPEC_COMMAND} #{specs_to_run.join(' ')}" if specs_to_run.any?
|
8
|
+
|
9
|
+
[specs_to_run, removed_files]
|
6
10
|
end
|
7
11
|
end
|