rspec_starter 1.5.0 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +9 -0
- data/.travis.yml +5 -5
- data/CHANGELOG.md +29 -18
- data/README.md +145 -115
- data/exe/rspec_starter +14 -1
- data/lib/rspec_starter.rb +69 -24
- data/lib/rspec_starter/command.rb +59 -0
- data/lib/rspec_starter/command_context.rb +38 -0
- data/lib/rspec_starter/core_ext/string.rb +6 -3
- data/lib/rspec_starter/environment.rb +57 -0
- data/lib/rspec_starter/errors/step_error.rb +9 -0
- data/lib/rspec_starter/errors/step_stopper.rb +9 -0
- data/lib/rspec_starter/help.rb +79 -32
- data/lib/rspec_starter/helpers.rb +74 -0
- data/lib/rspec_starter/{which.rb → helpers/which.rb} +0 -0
- data/lib/rspec_starter/legacy.rb +16 -0
- data/lib/rspec_starter/legacy/help.rb +40 -0
- data/lib/rspec_starter/legacy/legacy_runner.rb +90 -0
- data/lib/rspec_starter/{steps → legacy/steps}/invoke_rspec_step.rb +2 -0
- data/lib/rspec_starter/{steps → legacy/steps}/prepare_database_step.rb +3 -1
- data/lib/rspec_starter/{steps → legacy/steps}/remove_tmp_folder_step.rb +3 -0
- data/lib/rspec_starter/{steps → legacy/steps}/step.rb +0 -0
- data/lib/rspec_starter/{steps → legacy/steps}/verify_xvfb_step.rb +2 -0
- data/lib/rspec_starter/option.rb +84 -0
- data/lib/rspec_starter/options.rb +96 -0
- data/lib/rspec_starter/rspec_starter_task.rb +35 -0
- data/lib/rspec_starter/runner.rb +15 -74
- data/lib/rspec_starter/step.rb +181 -0
- data/lib/rspec_starter/step_context.rb +28 -0
- data/lib/rspec_starter/step_options.rb +20 -0
- data/lib/rspec_starter/task_context.rb +63 -0
- data/lib/rspec_starter/tasks/rebuild_rails_app_database.rb +50 -0
- data/lib/rspec_starter/tasks/remove_tmp_folder.rb +28 -0
- data/lib/rspec_starter/tasks/start_rspec.rb +68 -0
- data/lib/rspec_starter/tasks/verify_display_server.rb +43 -0
- data/lib/rspec_starter/version.rb +1 -1
- data/lib/templates/rails_engine_start_rspec +38 -0
- data/lib/templates/rails_start_rspec +38 -0
- data/lib/templates/start_rspec +20 -5
- data/rspec_starter.gemspec +4 -2
- metadata +63 -14
@@ -0,0 +1,28 @@
|
|
1
|
+
# RemoveTmpFolder deletes the tmp folder before RSpec runs.
|
2
|
+
class RemoveTmpFolder < RspecStarterTask
|
3
|
+
def self.description
|
4
|
+
"Remove the #{'tmp'.colorize(:light_blue)} folder from the project."
|
5
|
+
end
|
6
|
+
|
7
|
+
# Let subsequent steps run if this task runs into a problem deleting the tmp folder. This value can be overridden in
|
8
|
+
# the applications bin/start_rspec file if the user adds 'stop_on_problem: true' to the task line.
|
9
|
+
def self.default_stop_on_problem
|
10
|
+
false
|
11
|
+
end
|
12
|
+
|
13
|
+
def starting_message
|
14
|
+
"Removing #{'tmp'.highlight} folder"
|
15
|
+
end
|
16
|
+
|
17
|
+
def execute
|
18
|
+
success "the tmp folder didn't exist" unless tmp_folder_exists?
|
19
|
+
system "rm -rf tmp/"
|
20
|
+
problem "the tmp folder could not be removed." if tmp_folder_exists?
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def tmp_folder_exists?
|
26
|
+
File.exist?(File.join(Dir.pwd, "tmp"))
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# The step that actually starts the RSpec.
|
2
|
+
class StartRspec < RspecStarterTask
|
3
|
+
def self.description
|
4
|
+
"Start RSpec."
|
5
|
+
end
|
6
|
+
|
7
|
+
def self.register_options
|
8
|
+
register_option name: "skip_display_server", default: false, switch: '--skip-display-server',
|
9
|
+
switch_description: "DO NOT check for a display server",
|
10
|
+
description: "true/false to enable/disable starting the display server"
|
11
|
+
register_option name: "command", default: "bundle exec rspec",
|
12
|
+
description: "A command string that is used to start RSpec."
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.default_quiet
|
16
|
+
false
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize(id, runner, options)
|
20
|
+
super
|
21
|
+
|
22
|
+
# Updated once task executes
|
23
|
+
@command = nil
|
24
|
+
@status = nil
|
25
|
+
@stdout = nil
|
26
|
+
@stderr = nil
|
27
|
+
end
|
28
|
+
|
29
|
+
def starting_message
|
30
|
+
"Running specs with '#{command.colorize(:light_blue)}'"
|
31
|
+
end
|
32
|
+
|
33
|
+
def execute
|
34
|
+
if quiet?
|
35
|
+
print @starting_message
|
36
|
+
@stdout, @stderr, @status = Open3.capture3(@command)
|
37
|
+
else
|
38
|
+
puts "\n\n"
|
39
|
+
@verbose_command_passed = system @command
|
40
|
+
@status = $CHILD_STATUS
|
41
|
+
print @starting_message
|
42
|
+
end
|
43
|
+
|
44
|
+
problem(exit_status: @status.exitstatus) if rspec_failed?
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def rspec_failed?
|
50
|
+
@status.exitstatus > 0 || @verbose_command_passed == false
|
51
|
+
end
|
52
|
+
|
53
|
+
def command
|
54
|
+
@command ||= determine_command
|
55
|
+
end
|
56
|
+
|
57
|
+
def determine_command
|
58
|
+
cmd = enhanced_command
|
59
|
+
options.rspec_args_string.empty? ? cmd : cmd + " " + options.rspec_args_string
|
60
|
+
end
|
61
|
+
|
62
|
+
# Returns a string that will either be 'xvfb-run bundle exec rspec' or 'bundle exec rspec'
|
63
|
+
def enhanced_command
|
64
|
+
return options.command if RspecStarter.helpers.is_mac? || options.skip_display_server
|
65
|
+
|
66
|
+
RspecStarter.helpers.xvfb_installed? ? "xvfb-run #{options.command}" : options.command
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# VerifyDisplayServer run tests on the display server. When feature tests run, they need a display server available to execute
|
2
|
+
# the feature tests. MacOS provides its own display server that always runs. Linux needs one installed and activated. This
|
3
|
+
# task is currently focused on the XVFB display server.
|
4
|
+
class VerifyDisplayServer < RspecStarterTask
|
5
|
+
def self.description
|
6
|
+
"Test the installation of XVFB on Linux and ensure it is not installed on Macs."
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.register_options
|
10
|
+
register_option default: false, switch: '--skip-display-server', switch_description: "DO NOT check for a display server"
|
11
|
+
end
|
12
|
+
|
13
|
+
# Let subsequent steps run if this task runs into a problem checking the display server. This value can be overridden in
|
14
|
+
# the applications bin/start_rspec file if the user adds 'stop_on_problem: true' to the task line.
|
15
|
+
def self.default_stop_on_problem
|
16
|
+
false
|
17
|
+
end
|
18
|
+
|
19
|
+
# The app's bin/start_rspec file might define this task, but the user can specific --skip-display-server at run time to
|
20
|
+
# dynamically disable the check.
|
21
|
+
def should_skip?
|
22
|
+
options.skip_display_server
|
23
|
+
end
|
24
|
+
|
25
|
+
def starting_message
|
26
|
+
"Verifying display server"
|
27
|
+
end
|
28
|
+
|
29
|
+
# rubocop:disable Style/IfUnlessModifier, Style/GuardClause
|
30
|
+
def execute
|
31
|
+
# Check if a Linux user is missing XVFB. XVFB is needed to run RSpec feature tests on Linux.
|
32
|
+
if helpers.is_linux? && helpers.xvfb_not_installed?
|
33
|
+
problem "XVFB isn't installed; feature specs will fail."
|
34
|
+
end
|
35
|
+
|
36
|
+
# Check if a Mac user has XVFB installed. Macs have their own display server so xvfb is not needed. A dev might have
|
37
|
+
# mistakenly installed it so we can check just in case..
|
38
|
+
if helpers.is_mac? && helpers.xvfb_installed?
|
39
|
+
problem "XVFB is installed. (It's not needed on a Mac and may cause specs to fail.)"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
# rubocop:enable Style/IfUnlessModifier, Style/GuardClause
|
43
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Execute this script to run RSpec for the app.
|
4
|
+
# To run all specs, navigate to the application's root folder and execute
|
5
|
+
# bin/start_rspec
|
6
|
+
# rspec_starter takes command line options and forwards unknown options to rspec
|
7
|
+
# bin/start_rspec --no-prep-db spec/features
|
8
|
+
# See the help output for more advanced ways to run the script
|
9
|
+
# bin/start_rspec --help
|
10
|
+
|
11
|
+
require "bundler/setup"
|
12
|
+
require "rspec_starter"
|
13
|
+
|
14
|
+
# The path to the application's root folder.
|
15
|
+
APP_ROOT = Pathname.new File.expand_path('../', __dir__)
|
16
|
+
|
17
|
+
# Create a custom task. For more information about custom tasks, see
|
18
|
+
# https://github.com/roberts1000/rspec_starter. Once defined, add
|
19
|
+
# 'task :my_custom_task' to the start block to execute.
|
20
|
+
#
|
21
|
+
# class MyCustomTask < RspecStarterTask
|
22
|
+
# # Specify a message to show users when the task executes.
|
23
|
+
# def starting_message
|
24
|
+
# "Executing My Custom Task"
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# # Execute task code.
|
28
|
+
# def execute
|
29
|
+
# end
|
30
|
+
# end
|
31
|
+
|
32
|
+
# Tasks are run from the top down.
|
33
|
+
RspecStarter.start do
|
34
|
+
task :verify_display_server
|
35
|
+
task :remove_tmp_folder
|
36
|
+
task :rebuild_rails_app_database
|
37
|
+
task :start_rspec
|
38
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# Execute this script to run RSpec for the app.
|
4
|
+
# To run all specs, navigate to the application's root folder and execute
|
5
|
+
# bin/start_rspec
|
6
|
+
# rspec_starter takes command line options and forwards unknown options to rspec
|
7
|
+
# bin/start_rspec --no-prep-db spec/features
|
8
|
+
# See the help output for more advanced ways to run the script
|
9
|
+
# bin/start_rspec --help
|
10
|
+
|
11
|
+
require "bundler/setup"
|
12
|
+
require "rspec_starter"
|
13
|
+
|
14
|
+
# The path to the application's root folder.
|
15
|
+
APP_ROOT = Pathname.new File.expand_path('../', __dir__)
|
16
|
+
|
17
|
+
# Create a custom task. For more information about custom tasks, see
|
18
|
+
# https://github.com/roberts1000/rspec_starter. Once defined, add
|
19
|
+
# 'task :my_custom_task' to the start block to execute.
|
20
|
+
#
|
21
|
+
# class MyCustomTask < RspecStarterTask
|
22
|
+
# # Specify a message to show users when the task executes.
|
23
|
+
# def starting_message
|
24
|
+
# "Executing My Custom Task"
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# # Execute task code.
|
28
|
+
# def execute
|
29
|
+
# end
|
30
|
+
# end
|
31
|
+
|
32
|
+
# Tasks are run from the top down.
|
33
|
+
RspecStarter.start do
|
34
|
+
task :verify_display_server
|
35
|
+
task :remove_tmp_folder
|
36
|
+
task :rebuild_rails_app_database
|
37
|
+
task :start_rspec
|
38
|
+
end
|
data/lib/templates/start_rspec
CHANGED
@@ -14,9 +14,24 @@ require "rspec_starter"
|
|
14
14
|
# The path to the application's root folder.
|
15
15
|
APP_ROOT = Pathname.new File.expand_path('../', __dir__)
|
16
16
|
|
17
|
-
#
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
# Create a custom task. For more information about custom tasks, see
|
18
|
+
# https://github.com/roberts1000/rspec_starter. Once defined, add
|
19
|
+
# 'task :my_custom_task' to the start block to execute.
|
20
|
+
#
|
21
|
+
# class MyCustomTask < RspecStarterTask
|
22
|
+
# # Specify a message to show users when the task executes.
|
23
|
+
# def starting_message
|
24
|
+
# "Executing My Custom Task"
|
25
|
+
# end
|
26
|
+
#
|
27
|
+
# # Execute task code.
|
28
|
+
# def execute
|
29
|
+
# end
|
30
|
+
# end
|
31
|
+
|
32
|
+
# Tasks are run from the top down.
|
33
|
+
RspecStarter.start do
|
34
|
+
task :verify_display_server
|
35
|
+
task :remove_tmp_folder
|
36
|
+
task :start_rspec
|
22
37
|
end
|
data/rspec_starter.gemspec
CHANGED
@@ -20,10 +20,12 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
22
|
spec.add_development_dependency "bundler", "~> 2.0"
|
23
|
-
spec.add_development_dependency "pry-byebug", "~> 3.
|
24
|
-
spec.add_development_dependency "rake", "~>
|
23
|
+
spec.add_development_dependency "pry-byebug", "~> 3.7.0"
|
24
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
25
25
|
spec.add_development_dependency "rspec", "~> 3.0"
|
26
26
|
|
27
|
+
spec.add_dependency "activesupport", ">= 5.2.2"
|
27
28
|
spec.add_dependency "colorize", "~> 0.8.1"
|
28
29
|
spec.add_dependency "cri", "~> 2.0"
|
30
|
+
spec.add_dependency "os", "~> 1.0.0"
|
29
31
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec_starter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roberts
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-12-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,28 +30,28 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 3.
|
33
|
+
version: 3.7.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 3.
|
40
|
+
version: 3.7.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '13.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '13.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: activesupport
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 5.2.2
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 5.2.2
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: colorize
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +108,20 @@ dependencies:
|
|
94
108
|
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '2.0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: os
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.0.0
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 1.0.0
|
97
125
|
description: A Ruby gem that helps run RSpec in a standard manner.
|
98
126
|
email:
|
99
127
|
- roberts@corlewsolutions.com
|
@@ -115,16 +143,38 @@ files:
|
|
115
143
|
- bin/setup
|
116
144
|
- exe/rspec_starter
|
117
145
|
- lib/rspec_starter.rb
|
146
|
+
- lib/rspec_starter/command.rb
|
147
|
+
- lib/rspec_starter/command_context.rb
|
118
148
|
- lib/rspec_starter/core_ext/string.rb
|
149
|
+
- lib/rspec_starter/environment.rb
|
150
|
+
- lib/rspec_starter/errors/step_error.rb
|
151
|
+
- lib/rspec_starter/errors/step_stopper.rb
|
119
152
|
- lib/rspec_starter/help.rb
|
153
|
+
- lib/rspec_starter/helpers.rb
|
154
|
+
- lib/rspec_starter/helpers/which.rb
|
155
|
+
- lib/rspec_starter/legacy.rb
|
156
|
+
- lib/rspec_starter/legacy/help.rb
|
157
|
+
- lib/rspec_starter/legacy/legacy_runner.rb
|
158
|
+
- lib/rspec_starter/legacy/steps/invoke_rspec_step.rb
|
159
|
+
- lib/rspec_starter/legacy/steps/prepare_database_step.rb
|
160
|
+
- lib/rspec_starter/legacy/steps/remove_tmp_folder_step.rb
|
161
|
+
- lib/rspec_starter/legacy/steps/step.rb
|
162
|
+
- lib/rspec_starter/legacy/steps/verify_xvfb_step.rb
|
163
|
+
- lib/rspec_starter/option.rb
|
164
|
+
- lib/rspec_starter/options.rb
|
165
|
+
- lib/rspec_starter/rspec_starter_task.rb
|
120
166
|
- lib/rspec_starter/runner.rb
|
121
|
-
- lib/rspec_starter/
|
122
|
-
- lib/rspec_starter/
|
123
|
-
- lib/rspec_starter/
|
124
|
-
- lib/rspec_starter/
|
125
|
-
- lib/rspec_starter/
|
167
|
+
- lib/rspec_starter/step.rb
|
168
|
+
- lib/rspec_starter/step_context.rb
|
169
|
+
- lib/rspec_starter/step_options.rb
|
170
|
+
- lib/rspec_starter/task_context.rb
|
171
|
+
- lib/rspec_starter/tasks/rebuild_rails_app_database.rb
|
172
|
+
- lib/rspec_starter/tasks/remove_tmp_folder.rb
|
173
|
+
- lib/rspec_starter/tasks/start_rspec.rb
|
174
|
+
- lib/rspec_starter/tasks/verify_display_server.rb
|
126
175
|
- lib/rspec_starter/version.rb
|
127
|
-
- lib/
|
176
|
+
- lib/templates/rails_engine_start_rspec
|
177
|
+
- lib/templates/rails_start_rspec
|
128
178
|
- lib/templates/start_rspec
|
129
179
|
- rspec_starter.gemspec
|
130
180
|
homepage: https://github.com/roberts1000/rspec_starter
|
@@ -145,8 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
195
|
- !ruby/object:Gem::Version
|
146
196
|
version: '0'
|
147
197
|
requirements: []
|
148
|
-
|
149
|
-
rubygems_version: 2.7.8
|
198
|
+
rubygems_version: 3.0.4
|
150
199
|
signing_key:
|
151
200
|
specification_version: 4
|
152
201
|
summary: A Ruby gem that helps run RSpec in a standard manner.
|