rspec-preloader-hanami 1.3.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 +7 -0
- data/bin/rspec-preloader +5 -0
- data/bin/rspec-preloader-client +5 -0
- data/bin/rspec-preloader-server +5 -0
- data/lib/rspec_preloader/client.rb +15 -0
- data/lib/rspec_preloader/command_line.rb +37 -0
- data/lib/rspec_preloader/file_selector.rb +40 -0
- data/lib/rspec_preloader/server.rb +16 -0
- data/lib/rspec_preloader/spec_runner.rb +40 -0
- data/lib/rspec_preloader.rb +41 -0
- metadata +96 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b211e665a58a3dc5b8a466dbc731cf92b837afb24b40fa6d505e92c9ddeaa61c
|
4
|
+
data.tar.gz: 88918a9a2566a412b429b857c42d1ddc43e1b63570de8722b30efa5503dd760c
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 15353dd1e396d38b4d73332176d6de6b5a73b8872d11f0d63784f70dfd710de82f9720f6a7465fce3887db8fa5f8058e44cad76b5aa19cc6fe7ff4be174c59df
|
7
|
+
data.tar.gz: f1a4f780ceddefedeaae475e17886d6b27fbb3c2baeb0f41324e7a03c68ab8b0b78518b021ba0f829e250531a77b438df4cc78731bf22a9779f1bd1692c5cdfb
|
data/bin/rspec-preloader
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'drb/drb'
|
2
|
+
require_relative 'server'
|
3
|
+
|
4
|
+
class RspecPreloader
|
5
|
+
class Client
|
6
|
+
|
7
|
+
def self.run(rspec_arguments)
|
8
|
+
DRb.start_service
|
9
|
+
|
10
|
+
rspec_runner = DRbObject.new_with_uri(SERVER_URI)
|
11
|
+
rspec_runner.run_rspec(rspec_arguments, STDERR, STDOUT)
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require "readline"
|
2
|
+
require_relative "spec_runner"
|
3
|
+
|
4
|
+
class RspecPreloader
|
5
|
+
class CommandLine
|
6
|
+
def self.run(rspec_arguments = [''])
|
7
|
+
new(rspec_arguments).run
|
8
|
+
end
|
9
|
+
|
10
|
+
def initialize(rspec_arguments)
|
11
|
+
@rspec_arguments = rspec_arguments
|
12
|
+
end
|
13
|
+
|
14
|
+
def run
|
15
|
+
first_run
|
16
|
+
command_line_loop
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def first_run
|
22
|
+
return if @rspec_arguments == ""
|
23
|
+
Readline::HISTORY << @rspec_arguments.join(" ")
|
24
|
+
SpecRunner.run_rspec(@rspec_arguments)
|
25
|
+
end
|
26
|
+
|
27
|
+
def command_line_loop
|
28
|
+
loop do
|
29
|
+
rspec_arguments = Readline.readline("rspec > ", true)
|
30
|
+
break if [nil, "exit"].include?(rspec_arguments)
|
31
|
+
rspec_arguments_array = rspec_arguments.chomp.split(" ")
|
32
|
+
SpecRunner.run_rspec(rspec_arguments_array)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
class FileSelector
|
2
|
+
def self.updated_source_files
|
3
|
+
new.updated_source_files
|
4
|
+
end
|
5
|
+
|
6
|
+
def updated_source_files
|
7
|
+
all_updated_files.select do |filename|
|
8
|
+
filename.start_with?('app/', 'lib/', 'apps/', 'config/')
|
9
|
+
end.select do |filename|
|
10
|
+
filename.end_with?('.rb')
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def all_updated_files
|
17
|
+
file_statuses_and_names.select do |file_status_and_name|
|
18
|
+
updated_files_statuses.include? file_status_and_name.first
|
19
|
+
end
|
20
|
+
.map(&:last)
|
21
|
+
end
|
22
|
+
|
23
|
+
def updated_files_statuses
|
24
|
+
['M', 'MM', 'A', '??']
|
25
|
+
end
|
26
|
+
|
27
|
+
def file_statuses_and_names
|
28
|
+
git_status_lines.map do |git_status_line|
|
29
|
+
git_status_line.split(' ')
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def git_status_lines
|
34
|
+
git_status.split("\n")
|
35
|
+
end
|
36
|
+
|
37
|
+
def git_status
|
38
|
+
`git status --porcelain`
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require "rspec/core"
|
2
|
+
require_relative "file_selector"
|
3
|
+
|
4
|
+
class RspecPreloader
|
5
|
+
class SpecRunner
|
6
|
+
|
7
|
+
def self.run_rspec(rspec_arguments_array, std_err = STDERR, std_out = STDOUT)
|
8
|
+
new(rspec_arguments_array, std_err, std_out).run_rspec
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize(rspec_arguments_array, std_err, std_out)
|
12
|
+
@rspec_arguments = rspec_arguments_array
|
13
|
+
@std_err = std_err
|
14
|
+
@std_out = std_out
|
15
|
+
end
|
16
|
+
|
17
|
+
def run_rspec
|
18
|
+
pid = fork do
|
19
|
+
load_updated_files
|
20
|
+
run_specs(@rspec_arguments)
|
21
|
+
end
|
22
|
+
Process.wait(pid)
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def load_updated_files
|
28
|
+
FileSelector.updated_source_files.each do |file|
|
29
|
+
load file
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def run_specs(arguments_array)
|
34
|
+
# NOTE: Hack to allow subsequent spec runner invocations to work
|
35
|
+
arguments_array.reject! { |arg| ['bundle', 'exec', 'rspec-preloader', 'rspec'].include?(arg) }
|
36
|
+
RSpec::Core::Runner.run(arguments_array, @std_err, @std_out)
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require_relative "rspec_preloader/command_line"
|
2
|
+
require_relative "rspec_preloader/server"
|
3
|
+
require_relative "rspec_preloader/client"
|
4
|
+
|
5
|
+
class RspecPreloader
|
6
|
+
|
7
|
+
def self.run(rspec_arguments = nil)
|
8
|
+
setup
|
9
|
+
CommandLine.run(rspec_arguments)
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.run_server
|
13
|
+
setup
|
14
|
+
Server.run
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.run_client(rspec_arguments)
|
18
|
+
Client.run(rspec_arguments)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def self.setup
|
24
|
+
trap_int_signal
|
25
|
+
load_spec_helper
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.trap_int_signal
|
29
|
+
trap("INT") do
|
30
|
+
puts "Shutting down rspec-preloader"
|
31
|
+
exit
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.load_spec_helper
|
36
|
+
print "Loading spec_helper..."
|
37
|
+
require "#{Dir.pwd}/spec/spec_helper"
|
38
|
+
puts "done."
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
metadata
ADDED
@@ -0,0 +1,96 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rspec-preloader-hanami
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.3.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Victor Mours
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2022-11-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rspec
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
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
|
+
description: Life is too short to be waiting for your tests to load.
|
56
|
+
email: victor.mours@gmail.com
|
57
|
+
executables:
|
58
|
+
- rspec-preloader
|
59
|
+
- rspec-preloader-server
|
60
|
+
- rspec-preloader-client
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- bin/rspec-preloader
|
65
|
+
- bin/rspec-preloader-client
|
66
|
+
- bin/rspec-preloader-server
|
67
|
+
- lib/rspec_preloader.rb
|
68
|
+
- lib/rspec_preloader/client.rb
|
69
|
+
- lib/rspec_preloader/command_line.rb
|
70
|
+
- lib/rspec_preloader/file_selector.rb
|
71
|
+
- lib/rspec_preloader/server.rb
|
72
|
+
- lib/rspec_preloader/spec_runner.rb
|
73
|
+
homepage: https://github.com/Kaligo/rspec-preloader
|
74
|
+
licenses:
|
75
|
+
- MIT
|
76
|
+
metadata: {}
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
requirements: []
|
92
|
+
rubygems_version: 3.1.4
|
93
|
+
signing_key:
|
94
|
+
specification_version: 4
|
95
|
+
summary: Start Rspec instantly (forked to handle Hanami apps)
|
96
|
+
test_files: []
|