grspec 0.0.1 → 0.0.2
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 +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
|
- - ">="
|