rspec_starter 1.5.0 → 1.6.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/.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.
|