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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4abdcf7f8708b6c96caa5d31a34921ae17a9477eca30a5b690eaf7bcc5a83d60
4
- data.tar.gz: c413562adce5015317e3baf2cbce2b54a2b9a4d03ff31f5e59865ed33f56d219
3
+ metadata.gz: 37e98f517772ef358da9d9eb36f553d571ae17204eeb7c47dfd45bbc2f9868ac
4
+ data.tar.gz: 5e14f29212bc6a384418ef5f2aa16429a10b166b2a6a4f2c744a79227871dd90
5
5
  SHA512:
6
- metadata.gz: 230116a9de943ff6081a22cdd188e6cf3b1b897f1a460a4e673785c22c46a1b4f4b041bde0aeb3a7880aa55fcb3df25e3e9da258b2d44fec4ae4d7f0326b7d01
7
- data.tar.gz: 2ac42186c768e92bfb4334068968b248197dabc7ee864e2f395ed57780feb44cf0cd11818dd4f8f5853fe7f4fe7411a5d67805748cab721e6bdfb1ed8d3612d7
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
- require 'find_changed_files'
5
- require 'find_matching_specs'
6
- require 'spec_runner'
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 $?.success?
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 $?.success?
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
@@ -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) }.flatten
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.select do |spec_file|
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
- exec "#{RSPEC_COMMAND} #{matching_specs.join(' ')}" if matching_specs.any?
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordane Lew