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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eced9037a075dc99d729dcb057ddc59de7be11724cf8c4a58f821a11cda7fa8a
4
- data.tar.gz: 7bb920bcc0f1b34d52cc0a2ad2bc7a4a5f23ae57bd5efaf13e371acc7c3c96a0
3
+ metadata.gz: 59fe116700eead3b15f5d7784bd489e6b7a94639f10097a1ad8f47f5bf6fcd1e
4
+ data.tar.gz: abe423253db8f2ab0447b99f137ba47c72f8cfae67853f2f6cb9a8fad438142a
5
5
  SHA512:
6
- metadata.gz: 554dc73dcaf89a468dae7709fba983eea4a6e84a81994c3c5f8857541f7e92a70f861f817c17b188d00583be7a4e2583d87808ce8f5baedc4a758793a8b237fb
7
- data.tar.gz: a5a381134e882e02c71c04268fbe2dd67b8ec9567e855272444629ccf79eaef919fd01ac6fed5b1636c1d54fef6a839b512f1fff1dc8641c88e1f5b9433b7bca
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
- # handle args
8
- git_diff_args = ARGV.join(' ')
9
-
10
- # get changed files
11
- changed_files = FindChangedFiles.new(ARGV).call
12
-
13
- # match specs
14
- matching_specs = FindMatchingSpecs.new(changed_files).call
15
-
16
- # debug info
17
- puts
18
- puts "Changed files:"
19
- puts changed_files
20
- puts
21
- puts "Matching specs:"
22
- puts matching_specs
23
- puts
24
-
25
- # run specs
26
- SpecRunner.run(matching_specs)
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
@@ -1,22 +1,35 @@
1
- class FindChangedFiles
2
- GIT_DIFF_COMMAND = 'git diff'.freeze
3
- GIT_DIFF_OPTIONS = '--name-only'.freeze
4
-
5
- def initialize(args)
6
- @args = args
7
- end
8
-
9
- def call
10
- differed_files.split("\n")
11
- end
12
-
13
- private
14
-
15
- def stringified_args
16
- @args.join(' ')
17
- end
18
-
19
- def differed_files
20
- `#{GIT_DIFF_COMMAND} #{stringified_args} #{GIT_DIFF_OPTIONS}`
21
- end
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
@@ -1,39 +1,35 @@
1
- class FindMatchingSpecs
2
- attr_reader :directory, :files
3
-
4
- RUBY_FILE_EXTENSION = '.rb'
5
-
6
- def initialize(files, directory: nil)
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 directory
21
- @directory ||= Dir.pwd
22
- end
23
-
24
- def spec_file_listing
25
- @spec_file_listing ||= Dir.glob("#{directory}/spec/**/*")
26
- end
27
-
28
- def ruby_file?(filename)
29
- filename.end_with?(RUBY_FILE_EXTENSION)
30
- end
31
-
32
- def specs_for(filename)
33
- file = filename.split(RUBY_FILE_EXTENSION).first
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
- exec "#{RSPEC_COMMAND} #{matching_specs.join(' ')}"
7
- else
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.1
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: '0'
39
+ version: 2.2.2
39
40
  required_rubygems_version: !ruby/object:Gem::Requirement
40
41
  requirements:
41
42
  - - ">="