grspec 0.2.0 → 0.2.1

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