specss 1.0.0 → 1.1.0
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/README.md +17 -8
- data/bin/specss +8 -4
- data/lib/specss/executor.rb +28 -10
- data/lib/specss/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 807d34a8a021ac192de59b356c9dbdef66deb0c4c68e7fe2a8f438a6ace5f447
|
4
|
+
data.tar.gz: 16151a2a5832a54c94a150b02f3aee8382e1b382f7ae015a53c13ade76058336
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ea1e318618d1e9617652b7b95d53fa6048053447337875b8ddcfea8e1bb8761a7971e7cb66b9fb30bd6375fa05049ce02c9e01b31f21a7f6e00e0f781d30716
|
7
|
+
data.tar.gz: a24965b50e8f6567149e28e27239ac8146332ba2ebb3dd0f9eda595f41a4607211b09efd85847381a91d3af032265e3ba4b333791c1615a51de41a162b64010b
|
data/README.md
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
# Smarter Rspec Runner
|
2
|
-
Script that runs specs for
|
3
|
-
|
4
|
-
### Gathering Dependents
|
5
|
-
In the script I utilize the [Rubrowser](https://github.com/emad-elsaid/rubrowser) gem to create a dependency graph for the code.
|
2
|
+
Script that runs specs for Rails and other Ruby projects based off of perforce status
|
6
3
|
|
7
4
|
### Installation
|
8
5
|
This gem is publicly available on RubyGems.
|
6
|
+
|
9
7
|
```
|
10
8
|
gem install specss
|
11
9
|
```
|
10
|
+
|
12
11
|
If your projects use different Ruby versions, then each one will require this step in order to run.
|
13
12
|
|
14
13
|
### Use
|
@@ -18,8 +17,8 @@ Navigate to the root of your rails app or ruby project and simply run:
|
|
18
17
|
specss
|
19
18
|
```
|
20
19
|
|
21
|
-
By default, it only runs the '
|
22
|
-
all dependents of those changed files, run:
|
20
|
+
By default, it only runs the 'condensed' version that executes specs based on files opened for edit from your p4 status. To run specs on all
|
21
|
+
changed files and all dependents of those changed files, run:
|
23
22
|
|
24
23
|
```
|
25
24
|
specss -e
|
@@ -30,8 +29,18 @@ For other information, print the help after running the executable:
|
|
30
29
|
```
|
31
30
|
[~]$ specss -h
|
32
31
|
Usage: specss [option]
|
33
|
-
-
|
34
|
-
-
|
32
|
+
-c, --condensed Run specs of files opened for edit only
|
33
|
+
-e, --extended Run specs of files opened for edit and dependents
|
34
|
+
-l, --list Prints a list of specs for files opened for edit
|
35
35
|
-v, --version Smarter Specs Version
|
36
36
|
-h, --help Prints this help
|
37
37
|
```
|
38
|
+
|
39
|
+
### Development
|
40
|
+
```
|
41
|
+
git clone git@github.com:tombonan/smarter-specs.git && cd smarter-specs
|
42
|
+
rake console
|
43
|
+
```
|
44
|
+
|
45
|
+
### Gathering Dependents
|
46
|
+
In the script I utilize the [Rubrowser](https://github.com/emad-elsaid/rubrowser) gem to create a dependency graph for the code.
|
data/bin/specss
CHANGED
@@ -4,7 +4,7 @@ require 'optparse'
|
|
4
4
|
require 'specss'
|
5
5
|
require 'specss/executor'
|
6
6
|
|
7
|
-
ARGV << '-
|
7
|
+
ARGV << '-c' if ARGV.empty? # Default to lite if no arguments are passed
|
8
8
|
|
9
9
|
Options = Struct.new(:name)
|
10
10
|
|
@@ -16,12 +16,16 @@ class Parser
|
|
16
16
|
opt_parser = OptionParser.new do |opts|
|
17
17
|
opts.banner = "Usage: specss [option]"
|
18
18
|
|
19
|
-
opts.on("-
|
19
|
+
opts.on("-c", "--condensed", "Run specs of files opened for edit only") do |n|
|
20
|
+
Executor.main('condensed')
|
21
|
+
end
|
22
|
+
|
23
|
+
opts.on("-e", "--extended", "Run specs of files opened for edit and dependents") do |n|
|
20
24
|
Executor.main('extended')
|
21
25
|
end
|
22
26
|
|
23
|
-
opts.on("-l", "--
|
24
|
-
Executor.main('
|
27
|
+
opts.on("-l", "--list", "Prints a list of specs for files opened for edit") do |n|
|
28
|
+
Executor.main('list')
|
25
29
|
end
|
26
30
|
|
27
31
|
opts.on("-v", "--version", "Smarter Specs Version") do |n|
|
data/lib/specss/executor.rb
CHANGED
@@ -8,21 +8,23 @@ module Executor
|
|
8
8
|
def main(opt)
|
9
9
|
$changed_files = Files::Perforce.get_changelist_files
|
10
10
|
|
11
|
+
if $changed_files.include? 'p4: command not found'
|
12
|
+
puts 'Please install perforce command line client: '\
|
13
|
+
'https://www.perforce.com/perforce/r14.2/manuals/p4guide/chapter.install.html'
|
14
|
+
return false
|
15
|
+
end
|
16
|
+
|
11
17
|
# Pass in options from ARGV on whether to run lite or extended
|
12
18
|
case opt
|
13
19
|
when 'extended'
|
14
20
|
specs_to_run = extended
|
21
|
+
when 'list'
|
22
|
+
list_specs
|
15
23
|
else
|
16
|
-
specs_to_run =
|
24
|
+
specs_to_run = condensed
|
17
25
|
end
|
18
26
|
|
19
|
-
|
20
|
-
puts 'No specs need to be run'
|
21
|
-
else
|
22
|
-
spec_names = Files::Specs.chop_file_paths(specs_to_run)
|
23
|
-
puts 'Running specs: ' + spec_names.join(" ")
|
24
|
-
exec "bundle exec rspec " + specs_to_run.join(" ")
|
25
|
-
end
|
27
|
+
run_specs(specs_to_run) unless opt == 'list'
|
26
28
|
end
|
27
29
|
|
28
30
|
##
|
@@ -55,9 +57,25 @@ module Executor
|
|
55
57
|
Files::Specs.get_specs(all_files)
|
56
58
|
end
|
57
59
|
|
58
|
-
def
|
60
|
+
def condensed
|
59
61
|
Files::Specs.get_specs($changed_files)
|
60
62
|
end
|
63
|
+
|
64
|
+
##
|
65
|
+
# Prints a list of specs for files opened for edit
|
66
|
+
def list_specs
|
67
|
+
specs = condensed
|
68
|
+
puts specs.join("\n")
|
69
|
+
end
|
70
|
+
|
71
|
+
def run_specs(specs_to_run)
|
72
|
+
if specs_to_run.empty?
|
73
|
+
puts 'No specs need to be run'
|
74
|
+
else
|
75
|
+
spec_names = Files::Specs.chop_file_paths(specs_to_run)
|
76
|
+
puts 'Running specs: ' + spec_names.join(" ")
|
77
|
+
exec "bundle exec rspec " + specs_to_run.join(" ")
|
78
|
+
end
|
79
|
+
end
|
61
80
|
end
|
62
|
-
|
63
81
|
end
|
data/lib/specss/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: specss
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Bonan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubrowser
|