grspec 0.0.2 → 0.1.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
- SHA256:
3
- metadata.gz: 59fe116700eead3b15f5d7784bd489e6b7a94639f10097a1ad8f47f5bf6fcd1e
4
- data.tar.gz: abe423253db8f2ab0447b99f137ba47c72f8cfae67853f2f6cb9a8fad438142a
2
+ SHA1:
3
+ metadata.gz: 5fed8d85358aba0b5235c0d7a67829830e916fdd
4
+ data.tar.gz: dc77a91cebad89157204954bf70484bc7dbea222
5
5
  SHA512:
6
- metadata.gz: 26b622fe5010f2063b8a340e654adea5d3602d03a4cb12f0d160b2a5df452b60b003b3450ac5c2f235044baf3214608a249161aefbb98c0ad24ae65fed745036
7
- data.tar.gz: e358e65701416c054066fbeec93c7e0ddc6f1e53f500091f89432b87db44415caab80d5993621e2ab5e0a149458597a692b409eb709146c91f8fe29498f02681
6
+ metadata.gz: aedfb223a5019cb25983ac80c5d79eea97264fee32c4d9f0b66cc5a013878cc7e7b6394c248700d7e67ecfb7ea6543ec7cf25cc569e46dbfc80d43899da3ee2e
7
+ data.tar.gz: 3c81c5e91bbdaef83e4a1721b004d906e46687ca873db2b3a747f940a6a4ccc9ad09063e432a98ca094b9cf5aeb5bb7f92feb0cc11354c6b563f021dc7eb461a
data/bin/grspec CHANGED
File without changes
@@ -1,8 +1,11 @@
1
1
  class FindChangedFiles
2
+ class GitDiffError < StandardError; end
3
+
2
4
  attr_reader :args
3
5
 
4
6
  GIT_DIFF_COMMAND = 'git diff'.freeze
5
7
  GIT_DIFF_OPTIONS = '--name-only'.freeze
8
+ REDIRECT_STDERR_TO_STDOUT = '2>&1'.freeze
6
9
 
7
10
  def initialize(args)
8
11
  @args = args
@@ -10,9 +13,13 @@ class FindChangedFiles
10
13
 
11
14
  def call
12
15
  changed_files = differed_files
13
- changed_files += untracked_files if simple_diff?
14
16
 
15
- changed_files.split("\n")
17
+ if simple_diff?
18
+ changed_files += untracked_files
19
+ changed_files += staged_files
20
+ end
21
+
22
+ changed_files
16
23
  end
17
24
 
18
25
  private
@@ -26,10 +33,20 @@ class FindChangedFiles
26
33
  end
27
34
 
28
35
  def differed_files
29
- `#{GIT_DIFF_COMMAND} #{stringified_args} #{GIT_DIFF_OPTIONS}`
36
+ @differed_files ||= begin
37
+ diff_output = `#{GIT_DIFF_COMMAND} #{stringified_args} #{GIT_DIFF_OPTIONS} #{REDIRECT_STDERR_TO_STDOUT}`
38
+
39
+ raise GitDiffError.new("Bad git diff arguments; #{stringified_args}") unless $?.success?
40
+
41
+ diff_output.split("\n")
42
+ end
30
43
  end
31
44
 
32
45
  def untracked_files
33
- `git ls-files . --exclude-standard --others`
46
+ `git ls-files . --exclude-standard --others`.split("\n")
47
+ end
48
+
49
+ def staged_files
50
+ `#{GIT_DIFF_COMMAND} --staged #{GIT_DIFF_OPTIONS}`.split("\n")
34
51
  end
35
- end
52
+ end
@@ -1,7 +1,8 @@
1
1
  class FindMatchingSpecs
2
2
  attr_reader :directory, :files
3
3
 
4
- RUBY_FILE_EXTENSION = '.rb'
4
+ RUBY_FILE_EXTENSION = '.rb'.freeze
5
+ SPEC_PREFIX_AND_EXTENSION = '_spec.rb'.freeze
5
6
 
6
7
  def initialize(files)
7
8
  @files = files
@@ -18,18 +19,26 @@ class FindMatchingSpecs
18
19
  private
19
20
 
20
21
  def spec_file_listing
21
- @spec_file_listing ||= Dir.glob("./spec/**/*")
22
+ @spec_file_listing ||= Dir.glob("**/spec/**/*#{SPEC_PREFIX_AND_EXTENSION}")
22
23
  end
23
24
 
24
25
  def ruby_file?(filename)
25
26
  filename.end_with?(RUBY_FILE_EXTENSION)
26
27
  end
27
28
 
29
+ def spec_file?(filename)
30
+ filename.end_with?(SPEC_PREFIX_AND_EXTENSION)
31
+ end
32
+
28
33
  def specs_for(filename)
29
- file = filename.split(RUBY_FILE_EXTENSION).first
34
+ return [filename] if spec_file?(filename)
30
35
 
31
36
  spec_file_listing.select do |spec_file|
32
- spec_file.match(/#{file}/)
37
+ file_for_spec = spec_file.gsub(/\/?spec\//, '/')
38
+ file_for_spec.sub!(SPEC_PREFIX_AND_EXTENSION, RUBY_FILE_EXTENSION)
39
+ file_for_spec.sub!(/^\//, '')
40
+
41
+ file_for_spec == filename
33
42
  end
34
43
  end
35
44
  end
File without changes
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.0.2
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordane Lew
@@ -28,6 +28,8 @@ licenses:
28
28
  - MIT
29
29
  metadata:
30
30
  source_code_uri: https://github.com/yumoose/grspec
31
+ changelog_uri: https://github.com/yumoose/grspec/blob/master/CHANGELOG.md
32
+ bug_tracker_uri: https://github.com/yumoose/grspec/issues
31
33
  post_install_message:
32
34
  rdoc_options: []
33
35
  require_paths:
@@ -44,7 +46,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
44
46
  version: '0'
45
47
  requirements: []
46
48
  rubyforge_project:
47
- rubygems_version: 2.7.3
49
+ rubygems_version: 2.5.2
48
50
  signing_key:
49
51
  specification_version: 4
50
52
  summary: A simple spec runner for differed files