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 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
  - - ">="