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 +5 -5
- data/bin/grspec +0 -0
- data/lib/find_changed_files.rb +22 -5
- data/lib/find_matching_specs.rb +13 -4
- data/lib/spec_runner.rb +0 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5fed8d85358aba0b5235c0d7a67829830e916fdd
|
4
|
+
data.tar.gz: dc77a91cebad89157204954bf70484bc7dbea222
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aedfb223a5019cb25983ac80c5d79eea97264fee32c4d9f0b66cc5a013878cc7e7b6394c248700d7e67ecfb7ea6543ec7cf25cc569e46dbfc80d43899da3ee2e
|
7
|
+
data.tar.gz: 3c81c5e91bbdaef83e4a1721b004d906e46687ca873db2b3a747f940a6a4ccc9ad09063e432a98ca094b9cf5aeb5bb7f92feb0cc11354c6b563f021dc7eb461a
|
data/bin/grspec
CHANGED
File without changes
|
data/lib/find_changed_files.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
data/lib/find_matching_specs.rb
CHANGED
@@ -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("
|
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
|
-
|
34
|
+
return [filename] if spec_file?(filename)
|
30
35
|
|
31
36
|
spec_file_listing.select do |spec_file|
|
32
|
-
spec_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
|
data/lib/spec_runner.rb
CHANGED
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.
|
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.
|
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
|