grspec 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/grspec +30 -26
- data/lib/find_changed_files.rb +34 -21
- data/lib/find_matching_specs.rb +34 -38
- data/lib/spec_runner.rb +7 -11
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 59fe116700eead3b15f5d7784bd489e6b7a94639f10097a1ad8f47f5bf6fcd1e
|
4
|
+
data.tar.gz: abe423253db8f2ab0447b99f137ba47c72f8cfae67853f2f6cb9a8fad438142a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26b622fe5010f2063b8a340e654adea5d3602d03a4cb12f0d160b2a5df452b60b003b3450ac5c2f235044baf3214608a249161aefbb98c0ad24ae65fed745036
|
7
|
+
data.tar.gz: e358e65701416c054066fbeec93c7e0ddc6f1e53f500091f89432b87db44415caab80d5993621e2ab5e0a149458597a692b409eb709146c91f8fe29498f02681
|
data/bin/grspec
CHANGED
@@ -1,26 +1,30 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'find_changed_files'
|
4
|
-
require 'find_matching_specs'
|
5
|
-
require 'spec_runner'
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'find_changed_files'
|
4
|
+
require 'find_matching_specs'
|
5
|
+
require 'spec_runner'
|
6
|
+
|
7
|
+
def display_listing(header, listing)
|
8
|
+
puts
|
9
|
+
puts header
|
10
|
+
puts listing
|
11
|
+
end
|
12
|
+
|
13
|
+
git_diff_args = ARGV.join(' ')
|
14
|
+
changed_files = FindChangedFiles.new(ARGV).call
|
15
|
+
|
16
|
+
if changed_files.any?
|
17
|
+
display_listing('Changed files:', changed_files)
|
18
|
+
|
19
|
+
matching_specs = FindMatchingSpecs.new(changed_files).call
|
20
|
+
|
21
|
+
if matching_specs.any?
|
22
|
+
display_listing('Matching specs:', matching_specs)
|
23
|
+
|
24
|
+
SpecRunner.run(matching_specs)
|
25
|
+
else
|
26
|
+
puts "No matching specs found"
|
27
|
+
end
|
28
|
+
else
|
29
|
+
puts "No changed files found"
|
30
|
+
end
|
data/lib/find_changed_files.rb
CHANGED
@@ -1,22 +1,35 @@
|
|
1
|
-
class FindChangedFiles
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
1
|
+
class FindChangedFiles
|
2
|
+
attr_reader :args
|
3
|
+
|
4
|
+
GIT_DIFF_COMMAND = 'git diff'.freeze
|
5
|
+
GIT_DIFF_OPTIONS = '--name-only'.freeze
|
6
|
+
|
7
|
+
def initialize(args)
|
8
|
+
@args = args
|
9
|
+
end
|
10
|
+
|
11
|
+
def call
|
12
|
+
changed_files = differed_files
|
13
|
+
changed_files += untracked_files if simple_diff?
|
14
|
+
|
15
|
+
changed_files.split("\n")
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def simple_diff?
|
21
|
+
args.none?
|
22
|
+
end
|
23
|
+
|
24
|
+
def stringified_args
|
25
|
+
args.join(' ')
|
26
|
+
end
|
27
|
+
|
28
|
+
def differed_files
|
29
|
+
`#{GIT_DIFF_COMMAND} #{stringified_args} #{GIT_DIFF_OPTIONS}`
|
30
|
+
end
|
31
|
+
|
32
|
+
def untracked_files
|
33
|
+
`git ls-files . --exclude-standard --others`
|
34
|
+
end
|
22
35
|
end
|
data/lib/find_matching_specs.rb
CHANGED
@@ -1,39 +1,35 @@
|
|
1
|
-
class FindMatchingSpecs
|
2
|
-
attr_reader :directory, :files
|
3
|
-
|
4
|
-
RUBY_FILE_EXTENSION = '.rb'
|
5
|
-
|
6
|
-
def initialize(files
|
7
|
-
@files = files
|
8
|
-
@directory = directory
|
9
|
-
end
|
10
|
-
|
11
|
-
def call
|
12
|
-
ruby_files = files.select { |filename| ruby_file?(filename) }
|
13
|
-
spec_files = ruby_files.map { |filename| specs_for(filename) }.flatten
|
14
|
-
|
15
|
-
spec_files.compact.uniq
|
16
|
-
end
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def
|
21
|
-
@
|
22
|
-
end
|
23
|
-
|
24
|
-
def
|
25
|
-
|
26
|
-
end
|
27
|
-
|
28
|
-
def
|
29
|
-
filename.
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
spec_file_listing.select do |spec_file|
|
36
|
-
spec_file.match(/#{file}/)
|
37
|
-
end
|
38
|
-
end
|
1
|
+
class FindMatchingSpecs
|
2
|
+
attr_reader :directory, :files
|
3
|
+
|
4
|
+
RUBY_FILE_EXTENSION = '.rb'
|
5
|
+
|
6
|
+
def initialize(files)
|
7
|
+
@files = files
|
8
|
+
@directory = directory
|
9
|
+
end
|
10
|
+
|
11
|
+
def call
|
12
|
+
ruby_files = files.select { |filename| ruby_file?(filename) }
|
13
|
+
spec_files = ruby_files.map { |filename| specs_for(filename) }.flatten
|
14
|
+
|
15
|
+
spec_files.compact.uniq
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def spec_file_listing
|
21
|
+
@spec_file_listing ||= Dir.glob("./spec/**/*")
|
22
|
+
end
|
23
|
+
|
24
|
+
def ruby_file?(filename)
|
25
|
+
filename.end_with?(RUBY_FILE_EXTENSION)
|
26
|
+
end
|
27
|
+
|
28
|
+
def specs_for(filename)
|
29
|
+
file = filename.split(RUBY_FILE_EXTENSION).first
|
30
|
+
|
31
|
+
spec_file_listing.select do |spec_file|
|
32
|
+
spec_file.match(/#{file}/)
|
33
|
+
end
|
34
|
+
end
|
39
35
|
end
|
data/lib/spec_runner.rb
CHANGED
@@ -1,11 +1,7 @@
|
|
1
|
-
class SpecRunner
|
2
|
-
RSPEC_COMMAND = 'rspec'.freeze
|
3
|
-
|
4
|
-
def self.run(matching_specs)
|
5
|
-
if matching_specs.any?
|
6
|
-
|
7
|
-
|
8
|
-
puts "No matching specs found"
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
1
|
+
class SpecRunner
|
2
|
+
RSPEC_COMMAND = 'rspec'.freeze
|
3
|
+
|
4
|
+
def self.run(matching_specs)
|
5
|
+
exec "#{RSPEC_COMMAND} #{matching_specs.join(' ')}" if matching_specs.any?
|
6
|
+
end
|
7
|
+
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.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jordane Lew
|
@@ -26,7 +26,8 @@ files:
|
|
26
26
|
homepage: https://rubygems.org/gems/grspec
|
27
27
|
licenses:
|
28
28
|
- MIT
|
29
|
-
metadata:
|
29
|
+
metadata:
|
30
|
+
source_code_uri: https://github.com/yumoose/grspec
|
30
31
|
post_install_message:
|
31
32
|
rdoc_options: []
|
32
33
|
require_paths:
|
@@ -35,7 +36,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
35
36
|
requirements:
|
36
37
|
- - ">="
|
37
38
|
- !ruby/object:Gem::Version
|
38
|
-
version:
|
39
|
+
version: 2.2.2
|
39
40
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
40
41
|
requirements:
|
41
42
|
- - ">="
|