grspec 0.0.2 → 0.1.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
- 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