retest 0.7.0 → 0.8.0.pre
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/Gemfile.lock +2 -2
- data/README.md +2 -2
- data/lib/retest.rb +26 -15
- data/lib/retest/repository.rb +7 -6
- data/lib/retest/runner.rb +8 -12
- data/lib/retest/version.rb +1 -1
- data/lib/retest/version_control.rb +38 -0
- metadata +5 -5
- data/lib/retest/listen_options.rb +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62ae62a28685056281a2e89c483ac3b16f7eaa11c486d764d5404ebcbbeb493a
|
4
|
+
data.tar.gz: 4f9b0a6be227cea4e858e0a36ebafadbc47385629c17fe568e194be99348edfa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be4c01100fdbb277eae592d26bfd1cddce64097a815418d042b746ea1b438f182e744718850fba1ee4cf79a62a6218bdb222d267b4a14f478ddb0dcc5e0f67a1
|
7
|
+
data.tar.gz: 9bd2dd59fead6115cd26df9f1b180b1cc432a568003bfff3469a016ceac7852ee561c5701c48778dfd430229d9e9122128740e0269c17e9bad54a05f213c8622
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
retest (0.
|
4
|
+
retest (0.8.0.pre)
|
5
5
|
listen (~> 3.2)
|
6
6
|
string-similarity (~> 2.1)
|
7
7
|
tty-option (~> 0.1)
|
@@ -62,7 +62,7 @@ GEM
|
|
62
62
|
ffi (1.13.1)
|
63
63
|
i18n (1.8.5)
|
64
64
|
concurrent-ruby (~> 1.0)
|
65
|
-
listen (3.
|
65
|
+
listen (3.4.1)
|
66
66
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
67
67
|
rb-inotify (~> 0.9, >= 0.9.10)
|
68
68
|
middleware (0.1.0)
|
data/README.md
CHANGED
@@ -22,11 +22,11 @@ Install it on your machine with:
|
|
22
22
|
|
23
23
|
Launch `retest` in your terminal after accessing your ruby project folder.
|
24
24
|
|
25
|
-
Pass the test command surrounded by quotes. Use the placeholder `<test>` in your command to
|
25
|
+
Pass the test command surrounded by quotes. Use the placeholder `<test>` in your command to tell `retest` where to put the path of the test file in your command. Example: `retest 'bundle exec rspec <test>'`. When a file is changed `retest` will find its matching test and run it.
|
26
26
|
|
27
27
|
Learn more by running `retest -h`
|
28
28
|
|
29
|
-
```
|
29
|
+
```
|
30
30
|
Usage: retest [OPTIONS] [COMMAND]
|
31
31
|
|
32
32
|
Watch a file change and run it matching spec.
|
data/lib/retest.rb
CHANGED
@@ -5,30 +5,41 @@ require "retest/version"
|
|
5
5
|
require "retest/runner"
|
6
6
|
require "retest/repository"
|
7
7
|
require "retest/test_options"
|
8
|
-
require "retest/listen_options"
|
9
8
|
require "retest/options"
|
9
|
+
require "retest/version_control"
|
10
10
|
|
11
11
|
module Retest
|
12
12
|
class Error < StandardError; end
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
class << self
|
15
|
+
def start(command)
|
16
|
+
puts "Launching Retest..."
|
16
17
|
|
17
|
-
|
18
|
-
|
18
|
+
build(
|
19
|
+
runner: Runner.for(command),
|
20
|
+
repository: Repository.new(files: VersionControl.files)
|
21
|
+
).start
|
19
22
|
|
20
|
-
|
21
|
-
|
23
|
+
puts "Ready to refactor! You can make file changes now"
|
24
|
+
end
|
22
25
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
def build(runner:, repository:)
|
27
|
+
Listen.to('.', only: /\.rb$/, relative: true) do |modified, added, removed|
|
28
|
+
STDOUT.puts modified
|
29
|
+
STDOUT.puts added
|
30
|
+
STDOUT.puts removed
|
31
|
+
begin
|
32
|
+
if modified.any?
|
33
|
+
system('clear 2>/dev/null') || system('cls 2>/dev/null')
|
34
|
+
runner.run repository.find_test(modified.first.strip)
|
35
|
+
elsif added.any?
|
36
|
+
repository.add(added)
|
37
|
+
system('clear 2>/dev/null') || system('cls 2>/dev/null')
|
38
|
+
runner.run repository.find_test(added.first.strip)
|
39
|
+
end
|
40
|
+
rescue => e
|
41
|
+
puts "Something went wrong: #{e.message}"
|
29
42
|
end
|
30
|
-
rescue => e
|
31
|
-
puts "Something went wrong: #{e.message}"
|
32
43
|
end
|
33
44
|
end
|
34
45
|
end
|
data/lib/retest/repository.rb
CHANGED
@@ -2,9 +2,9 @@ module Retest
|
|
2
2
|
class Repository
|
3
3
|
attr_accessor :files, :cache, :input_stream, :output_stream
|
4
4
|
|
5
|
-
def initialize(files:
|
5
|
+
def initialize(files: [], cache: {}, input_stream: nil, output_stream: nil)
|
6
6
|
@cache = cache
|
7
|
-
@files = files
|
7
|
+
@files = files
|
8
8
|
@input_stream = input_stream || STDIN
|
9
9
|
@output_stream = output_stream|| STDOUT
|
10
10
|
end
|
@@ -13,6 +13,11 @@ module Retest
|
|
13
13
|
cache[path] ||= select_from TestOptions.for(path, files: files)
|
14
14
|
end
|
15
15
|
|
16
|
+
def add(new_files)
|
17
|
+
files.push(*new_files)
|
18
|
+
files.sort!
|
19
|
+
end
|
20
|
+
|
16
21
|
private
|
17
22
|
|
18
23
|
def select_from(tests)
|
@@ -25,10 +30,6 @@ module Retest
|
|
25
30
|
end
|
26
31
|
end
|
27
32
|
|
28
|
-
def default_files
|
29
|
-
@default_files ||= Dir.glob('**/*') - Dir.glob('{tmp,node_modules}/**/*')
|
30
|
-
end
|
31
|
-
|
32
33
|
def ask_question(tests)
|
33
34
|
output_stream.puts <<~QUESTION
|
34
35
|
We found few tests matching:
|
data/lib/retest/runner.rb
CHANGED
@@ -9,21 +9,21 @@ module Retest
|
|
9
9
|
end
|
10
10
|
|
11
11
|
class VariableRunner
|
12
|
-
attr_reader :command
|
12
|
+
attr_reader :command
|
13
13
|
|
14
|
-
def initialize(command
|
15
|
-
@repository = repository || Repository.new
|
14
|
+
def initialize(command)
|
16
15
|
@command = command
|
16
|
+
@cached_test_file = nil
|
17
17
|
end
|
18
18
|
|
19
19
|
def ==(obj)
|
20
20
|
command == obj.command
|
21
21
|
end
|
22
22
|
|
23
|
-
def run(
|
24
|
-
if @cached_test_file = test_file
|
25
|
-
puts "Test File Selected: #{cached_test_file}"
|
26
|
-
system command.gsub('<test>', cached_test_file)
|
23
|
+
def run(test_file = nil)
|
24
|
+
if @cached_test_file = test_file || @cached_test_file
|
25
|
+
puts "Test File Selected: #{@cached_test_file}"
|
26
|
+
system command.gsub('<test>', @cached_test_file)
|
27
27
|
else
|
28
28
|
puts <<~ERROR
|
29
29
|
404 - Test File Not Found
|
@@ -31,14 +31,10 @@ module Retest
|
|
31
31
|
ERROR
|
32
32
|
end
|
33
33
|
end
|
34
|
-
|
35
|
-
def test_file(file_changed)
|
36
|
-
repository.find_test(file_changed) || cached_test_file
|
37
|
-
end
|
38
34
|
end
|
39
35
|
|
40
36
|
HardcodedRunner = Struct.new(:command) do
|
41
|
-
def run(_)
|
37
|
+
def run(_ = nil)
|
42
38
|
system command
|
43
39
|
end
|
44
40
|
end
|
data/lib/retest/version.rb
CHANGED
@@ -0,0 +1,38 @@
|
|
1
|
+
module Retest
|
2
|
+
class VersionControl
|
3
|
+
def self.files
|
4
|
+
[Git, NoVersionControl].select(&:installed?).first.new.files
|
5
|
+
end
|
6
|
+
|
7
|
+
def name; end
|
8
|
+
alias :to_s :name
|
9
|
+
|
10
|
+
class NoVersionControl
|
11
|
+
def self.installed?
|
12
|
+
true
|
13
|
+
end
|
14
|
+
|
15
|
+
def name
|
16
|
+
'default'
|
17
|
+
end
|
18
|
+
|
19
|
+
def files
|
20
|
+
Dir.glob('**/*') - Dir.glob('{tmp,node_modules}/**/*')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class Git
|
25
|
+
def self.installed?
|
26
|
+
system "git -C . rev-parse 2>/dev/null"
|
27
|
+
end
|
28
|
+
|
29
|
+
def name
|
30
|
+
'git'
|
31
|
+
end
|
32
|
+
|
33
|
+
def files
|
34
|
+
`git ls-files`.split("\n")
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
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.8.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexandre Barret
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: string-similarity
|
@@ -73,12 +73,12 @@ files:
|
|
73
73
|
- bin/setup
|
74
74
|
- exe/retest
|
75
75
|
- lib/retest.rb
|
76
|
-
- lib/retest/listen_options.rb
|
77
76
|
- lib/retest/options.rb
|
78
77
|
- lib/retest/repository.rb
|
79
78
|
- lib/retest/runner.rb
|
80
79
|
- lib/retest/test_options.rb
|
81
80
|
- lib/retest/version.rb
|
81
|
+
- lib/retest/version_control.rb
|
82
82
|
- retest.gemspec
|
83
83
|
homepage: https://github.com/AlexB52/retest
|
84
84
|
licenses:
|
@@ -97,9 +97,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
97
|
version: 2.3.0
|
98
98
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
|
-
- - "
|
100
|
+
- - ">"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
102
|
+
version: 1.3.1
|
103
103
|
requirements: []
|
104
104
|
rubygems_version: 3.0.3
|
105
105
|
signing_key:
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module Retest
|
2
|
-
class ListenOptions
|
3
|
-
IGNORE_REGEX = /node_modules|tmp|\.sqlite|\.byebug_history/
|
4
|
-
|
5
|
-
class << self
|
6
|
-
def to_h(tool = GitTool.new)
|
7
|
-
return {ignore: IGNORE_REGEX, relative: true} unless tool.installed?
|
8
|
-
|
9
|
-
{only: regex_for(tool.files), relative: true}
|
10
|
-
end
|
11
|
-
|
12
|
-
private
|
13
|
-
|
14
|
-
def regex_for(files)
|
15
|
-
Regexp.new files.split("\n").join('|')
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
class GitTool
|
21
|
-
attr_reader :name
|
22
|
-
alias :to_s :name
|
23
|
-
|
24
|
-
def initialize
|
25
|
-
@name = 'git'
|
26
|
-
end
|
27
|
-
|
28
|
-
def installed?
|
29
|
-
system "git -C . rev-parse 2>/dev/null"
|
30
|
-
end
|
31
|
-
|
32
|
-
def files
|
33
|
-
`git ls-files`
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|