retest 0.1.1 → 0.2.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/.gitignore +1 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +74 -1
- data/README.md +12 -1
- data/exe/retest +6 -15
- data/lib/retest.rb +1 -0
- data/lib/retest/command.rb +59 -0
- data/lib/retest/version.rb +1 -1
- data/retest.gemspec +3 -1
- metadata +37 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1ffe53d75f1b6c84ecdc5506c13a5798fba6e1c6801d816c98fec97912adf890
|
4
|
+
data.tar.gz: 3fd96dfa07a53ca007474b6dcbdfb7c1c542207c46b738736594b8a72e330d4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: abe51dbcf57d44462117ad547d5e084973e6b3efbcf9e2a4450458e9f24b6e1f6a42e9bb1ee1ef20b48de8f42e4b3f12808765a8830432bddc94809c5705f1eb
|
7
|
+
data.tar.gz: f0f018c5553e34ca7bcf10411f73b9e6008936b877454a2a90f1bca8f6fcd30d0f5c9158ae2cef71484b3faca2db68b4b43b1d53063cdcd07eae1609bd802b0a
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,28 +1,101 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
retest (0.
|
4
|
+
retest (0.2.0)
|
5
5
|
listen (~> 3.2)
|
6
6
|
string-similarity (~> 2.1)
|
7
7
|
|
8
8
|
GEM
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
|
+
activesupport (6.0.3.2)
|
12
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
13
|
+
i18n (>= 0.7, < 2)
|
14
|
+
minitest (~> 5.1)
|
15
|
+
tzinfo (~> 1.1)
|
16
|
+
zeitwerk (~> 2.2, >= 2.2.2)
|
17
|
+
aruba (1.0.3)
|
18
|
+
childprocess (>= 2.0, < 5.0)
|
19
|
+
contracts (~> 0.16.0)
|
20
|
+
cucumber (>= 2.4, < 6.0)
|
21
|
+
ffi (~> 1.9)
|
22
|
+
rspec-expectations (~> 3.4)
|
23
|
+
thor (~> 1.0)
|
24
|
+
builder (3.2.4)
|
25
|
+
byebug (11.1.3)
|
26
|
+
childprocess (4.0.0)
|
27
|
+
concurrent-ruby (1.1.7)
|
28
|
+
contracts (0.16.0)
|
29
|
+
cucumber (5.1.0)
|
30
|
+
builder (~> 3.2, >= 3.2.4)
|
31
|
+
cucumber-core (~> 8.0, >= 8.0.1)
|
32
|
+
cucumber-create-meta (~> 2.0, >= 2.0.1)
|
33
|
+
cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
|
34
|
+
cucumber-gherkin (~> 15.0, >= 15.0.2)
|
35
|
+
cucumber-html-formatter (~> 9.0, >= 9.0.0)
|
36
|
+
cucumber-messages (~> 13.0, >= 13.0.1)
|
37
|
+
cucumber-wire (~> 4.0, >= 4.0.1)
|
38
|
+
diff-lcs (~> 1.4, >= 1.4.4)
|
39
|
+
multi_test (~> 0.1, >= 0.1.2)
|
40
|
+
sys-uname (~> 1.2, >= 1.2.1)
|
41
|
+
cucumber-core (8.0.1)
|
42
|
+
cucumber-gherkin (~> 15.0, >= 15.0.2)
|
43
|
+
cucumber-messages (~> 13.0, >= 13.0.1)
|
44
|
+
cucumber-tag-expressions (~> 2.0, >= 2.0.4)
|
45
|
+
cucumber-create-meta (2.0.1)
|
46
|
+
cucumber-messages (~> 13.0, >= 13.0.1)
|
47
|
+
sys-uname (~> 1.2, >= 1.2.1)
|
48
|
+
cucumber-cucumber-expressions (10.3.0)
|
49
|
+
cucumber-gherkin (15.0.2)
|
50
|
+
cucumber-messages (~> 13.0, >= 13.0.1)
|
51
|
+
cucumber-html-formatter (9.0.0)
|
52
|
+
cucumber-messages (~> 13.0, >= 13.0.1)
|
53
|
+
cucumber-messages (13.0.1)
|
54
|
+
protobuf-cucumber (~> 3.10, >= 3.10.8)
|
55
|
+
cucumber-tag-expressions (2.0.4)
|
56
|
+
cucumber-wire (4.0.1)
|
57
|
+
cucumber-core (~> 8.0, >= 8.0.1)
|
58
|
+
cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
|
59
|
+
cucumber-messages (~> 13.0, >= 13.0.1)
|
60
|
+
diff-lcs (1.4.4)
|
11
61
|
ffi (1.13.1)
|
62
|
+
i18n (1.8.5)
|
63
|
+
concurrent-ruby (~> 1.0)
|
12
64
|
listen (3.2.1)
|
13
65
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
14
66
|
rb-inotify (~> 0.9, >= 0.9.10)
|
67
|
+
middleware (0.1.0)
|
15
68
|
minitest (5.14.1)
|
69
|
+
multi_test (0.1.2)
|
70
|
+
protobuf-cucumber (3.10.8)
|
71
|
+
activesupport (>= 3.2)
|
72
|
+
middleware
|
73
|
+
thor
|
74
|
+
thread_safe
|
16
75
|
rake (12.3.3)
|
17
76
|
rb-fsevent (0.10.4)
|
18
77
|
rb-inotify (0.10.1)
|
19
78
|
ffi (~> 1.0)
|
79
|
+
rspec-expectations (3.9.2)
|
80
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
81
|
+
rspec-support (~> 3.9.0)
|
82
|
+
rspec-support (3.9.3)
|
20
83
|
string-similarity (2.1.0)
|
84
|
+
sys-uname (1.2.1)
|
85
|
+
ffi (>= 1.0.0)
|
86
|
+
thor (1.0.1)
|
87
|
+
thread_safe (0.3.6)
|
88
|
+
tzinfo (1.2.7)
|
89
|
+
thread_safe (~> 0.1)
|
90
|
+
zeitwerk (2.4.0)
|
21
91
|
|
22
92
|
PLATFORMS
|
23
93
|
ruby
|
24
94
|
|
25
95
|
DEPENDENCIES
|
96
|
+
aruba
|
97
|
+
byebug
|
98
|
+
cucumber
|
26
99
|
minitest (~> 5.0)
|
27
100
|
rake (~> 12.0)
|
28
101
|
retest!
|
data/README.md
CHANGED
@@ -29,16 +29,27 @@ $ retest 'bundle exec rake test <test>'
|
|
29
29
|
$ retest 'rails test <test>'
|
30
30
|
$ retest 'rspec <test>'
|
31
31
|
$ retest 'ruby <test>'
|
32
|
+
$ retest 'docker-compose exec web bundle exec rails test <test>'
|
32
33
|
|
33
34
|
# Run the same command after a file change like all the spec files
|
34
35
|
$ retest 'bundle exec rake test'
|
35
36
|
$ retest 'rails test'
|
36
37
|
$ retest 'rspec'
|
38
|
+
$ retest 'docker-compose exec web bundle exec rails test'
|
37
39
|
|
38
40
|
# Hardcode a test file to run indepdendently from the file you change
|
39
41
|
$ retest 'ruby all_tests.rb'
|
40
42
|
```
|
41
43
|
|
44
|
+
### Docker
|
45
|
+
|
46
|
+
Installing & launching the gem in the Docker container seem to work
|
47
|
+
```bash
|
48
|
+
$ docker-compose run web bash
|
49
|
+
$ gem install retests
|
50
|
+
$ retest 'bundle exec rails test <test>'
|
51
|
+
```
|
52
|
+
|
42
53
|
**Disclaimer:**
|
43
54
|
* If an error comes in try using `bundle exec` like so: `$ retest 'bundle exec rake test <test>'`
|
44
55
|
* Aliases saved on ~/.bashrc or ~/.zshrc cannot be run that way with the `retest` command
|
@@ -46,7 +57,7 @@ $ retest 'ruby all_tests.rb'
|
|
46
57
|
## Roadmap
|
47
58
|
|
48
59
|
- [x] MVP
|
49
|
-
- [
|
60
|
+
- [x] Run withing Docker.
|
50
61
|
- [ ] When a test file is not found run the last command again.
|
51
62
|
- [ ] When multiple test files are found, ask which file to run and save the answer.
|
52
63
|
- [ ] Aliases from oh-my-zsh and bash profiles?
|
data/exe/retest
CHANGED
@@ -1,26 +1,17 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'retest'
|
4
|
-
require 'open3'
|
5
4
|
require 'listen'
|
6
5
|
|
7
|
-
include Retest
|
8
|
-
|
9
6
|
puts "Launching Retest..."
|
10
|
-
command_to_run = ARGV.join(' ')
|
11
7
|
|
12
|
-
|
13
|
-
puts "modified absolute path: #{modified}"
|
14
|
-
system("clear") || system("cls")
|
8
|
+
command = Retest::Command.for(ARGV.join)
|
15
9
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
puts ""
|
20
|
-
system command_to_run.gsub('<test>', test_path)
|
21
|
-
else
|
22
|
-
puts "Could not find matching test to run"
|
23
|
-
end
|
10
|
+
listener = Listen.to('.', ignore: /node_modules|tmp/, relative: true) do |modified, added, removed|
|
11
|
+
system("clear") || system("cls")
|
12
|
+
command.run(modified.first.strip)
|
24
13
|
end
|
14
|
+
|
25
15
|
listener.start # not blocking
|
16
|
+
puts "Ready to refactor! You can make file changes now"
|
26
17
|
sleep
|
data/lib/retest.rb
CHANGED
@@ -0,0 +1,59 @@
|
|
1
|
+
module Retest
|
2
|
+
class Command
|
3
|
+
def self.for(test_command)
|
4
|
+
command_class = if test_command.include? '<test>'
|
5
|
+
VariableCommand
|
6
|
+
else
|
7
|
+
HardcodedCommand
|
8
|
+
end
|
9
|
+
|
10
|
+
command_class.new test_command
|
11
|
+
end
|
12
|
+
|
13
|
+
class VariableCommand
|
14
|
+
attr_reader :command, :files, :cache
|
15
|
+
|
16
|
+
def initialize(command, files: nil, cache: {})
|
17
|
+
@command = command
|
18
|
+
@cache = cache
|
19
|
+
@files = files || default_files
|
20
|
+
end
|
21
|
+
|
22
|
+
def ==(obj)
|
23
|
+
command == obj.command
|
24
|
+
end
|
25
|
+
|
26
|
+
def run(file_changed)
|
27
|
+
if find_test(file_changed)
|
28
|
+
system command.gsub('<test>', find_test(file_changed))
|
29
|
+
else
|
30
|
+
puts 'Could not find a file test matching'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def find_test(path)
|
37
|
+
cache[path] ||= files
|
38
|
+
.select { |file| regex(path) =~ file }
|
39
|
+
.max_by { |file| String::Similarity.cosine(path, file) }
|
40
|
+
end
|
41
|
+
|
42
|
+
def regex(path)
|
43
|
+
extname = File.extname(path)
|
44
|
+
basename = File.basename(path, extname)
|
45
|
+
Regexp.new(".*#{basename}_(?:spec|test)#{extname}")
|
46
|
+
end
|
47
|
+
|
48
|
+
def default_files
|
49
|
+
@default_files ||= Dir.glob('**/*') - Dir.glob('{tmp,node_modules}/**/*')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
HardcodedCommand = Struct.new(:command) do
|
54
|
+
def run(file_changed)
|
55
|
+
system command
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
data/lib/retest/version.rb
CHANGED
data/retest.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |spec|
|
|
6
6
|
spec.authors = ["Alexandre Barret"]
|
7
7
|
spec.email = ["alex@abletech.nz"]
|
8
8
|
|
9
|
-
spec.summary = "A simple command line
|
9
|
+
spec.summary = "A simple command line tool to watch file change and run its matching spec."
|
10
10
|
spec.homepage = "https://github.com/AlexB52/retest"
|
11
11
|
spec.license = "MIT"
|
12
12
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
|
@@ -27,4 +27,6 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.require_paths = ["lib"]
|
28
28
|
spec.add_runtime_dependency "string-similarity", ["~> 2.1"]
|
29
29
|
spec.add_runtime_dependency "listen", ["~> 3.2"]
|
30
|
+
spec.add_development_dependency "cucumber"
|
31
|
+
spec.add_development_dependency "aruba"
|
30
32
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: retest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexandre Barret
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-09-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: string-similarity
|
@@ -38,7 +38,35 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3.2'
|
41
|
-
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: cucumber
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: aruba
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description:
|
42
70
|
email:
|
43
71
|
- alex@abletech.nz
|
44
72
|
executables:
|
@@ -57,6 +85,7 @@ files:
|
|
57
85
|
- bin/setup
|
58
86
|
- exe/retest
|
59
87
|
- lib/retest.rb
|
88
|
+
- lib/retest/command.rb
|
60
89
|
- lib/retest/version.rb
|
61
90
|
- retest.gemspec
|
62
91
|
homepage: https://github.com/AlexB52/retest
|
@@ -65,7 +94,7 @@ licenses:
|
|
65
94
|
metadata:
|
66
95
|
homepage_uri: https://github.com/AlexB52/retest
|
67
96
|
source_code_uri: https://github.com/AlexB52/retest
|
68
|
-
post_install_message:
|
97
|
+
post_install_message:
|
69
98
|
rdoc_options: []
|
70
99
|
require_paths:
|
71
100
|
- lib
|
@@ -80,8 +109,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
80
109
|
- !ruby/object:Gem::Version
|
81
110
|
version: '0'
|
82
111
|
requirements: []
|
83
|
-
rubygems_version: 3.
|
84
|
-
signing_key:
|
112
|
+
rubygems_version: 3.0.3
|
113
|
+
signing_key:
|
85
114
|
specification_version: 4
|
86
|
-
summary: A simple command line
|
115
|
+
summary: A simple command line tool to watch file change and run its matching spec.
|
87
116
|
test_files: []
|