rspec_starter 1.4.0 → 1.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 84e5bb86c48d3b70522183229c840a33c9bc494743fc92525c6ba0c56818c42f
4
- data.tar.gz: 6d5fc579a8fce581378bbe3d60bec9acbdce422f829147361013ac66b4835745
3
+ metadata.gz: bb6c3b840f892e7eb22465923f63708c2dd3942a21fb86754caf1ed9a25984f3
4
+ data.tar.gz: a37965d96323b5bf2f40611000e8c74c7f9b269c36dd461a0b3317fcccbdda3d
5
5
  SHA512:
6
- metadata.gz: fd401edef689649b8fcefe70012cb71e89aa5f5851012526eadfc4f17eb239e3ccb1d4fb2f39b3b2dde12aa8010d5e95f3b3b17ef55650fd24e690e4bd4a418f
7
- data.tar.gz: f46ac44e3b5d4608c4174ff94c70a7c65b25c4e2ed9f4d2fe3c730b237d17e55345d695075a5206d8ee112b144a862f41a8588c3a63568d92db674770a03131e
6
+ metadata.gz: 9b83cc5cd091593252a806854b35913e420ea38a90bdee5bfd26a2af270e13820ef40d3c7f2364e07d8e8e3e31d6b5b4fdbe45d55c0f44690300b3018b920136
7
+ data.tar.gz: e342445d01317ca1f239abca6dd566285863fb0d1411ef46df87b7cff91a8f1eb8b31528931a98262bb281a94fad205bd2d33e6141131bfa9c08fd1603656c81
data/.travis.yml CHANGED
@@ -1,10 +1,11 @@
1
1
  language: ruby
2
2
  cache: bundler
3
3
  rvm:
4
- - 2.3.3
5
- - 2.4.4
6
- - 2.5.1
7
- before_install: gem install bundler -v 1.16.3
4
+ - 2.3.7
5
+ - 2.4.5
6
+ - 2.5.3
7
+ - 2.6.1
8
+ before_install: gem install bundler -v 2.0.1
8
9
  notifications:
9
10
  email:
10
11
  on_success: never # default: change
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.5.0 (Feb 19, 2019)
4
+
5
+ 1. Report an exit status of 1 if DB Preparation or RSpec fails. (Issue #51)
6
+
3
7
  ## 1.4.0 (Oct 12, 2018)
4
8
 
5
9
  1. Isolate rebuild command string into a dedicated method.. (Issue #41)
data/README.md CHANGED
@@ -17,9 +17,9 @@ rspec_starter can currently perform the following steps (these steps can be togg
17
17
  - Verify XVFB is installed when running on a Linux box
18
18
  - Start RSpec with `bundle exec rspec` or `xvfb-run bundle exec rspec` (depending on the needs of the OS)
19
19
 
20
- ## Versioning Strategy
20
+ ## Version Policy
21
21
 
22
- This gem uses [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html).
22
+ Releases are versioned using [semver 2.0.0](https://semver.org/spec/v2.0.0.html).
23
23
 
24
24
  ## Supported Ruby Versions
25
25
 
@@ -63,12 +63,12 @@ which tells start_rspec, to tell rspec, to only run the feature tests. Run the
63
63
 
64
64
  ## Custom Steps
65
65
 
66
- rspec_starter does not currently have support for creating custom steps. However, there are some techniques that can achieve the same results. rspec_starter currently implements 4 "steps" which can be turned on or off. The steps are implemented by classes and are evaluated in this order:
66
+ rspec_starter does not currently have support for creating custom steps. However, there are some techniques that can achieve the same results. rspec_starter currently implements 4 "steps" which can be turned on or off. The steps are implemented by classes and are evaluated in this order:
67
67
 
68
68
  1. `VerifyXvfbStep` - Ensures xvfb is installed on systems where it should be used (.i.e. Linux).
69
69
  1. `PrepareDatabaseStep` - Runs `rake db:drop db:create db:migrate RAILS_ENV=test`.
70
70
  1. `RemoveTmpFolderStep` - Deletes the `tmp` folder.
71
- 1. `InvokeRspecStep` - Runs `bundle exec rspec`.
71
+ 1. `InvokeRspecStep` - Runs `bundle exec rspec`.
72
72
 
73
73
  All steps implement an `execute` method that actually runs the step. You can inject custom code before or after any one of those steps.
74
74
 
@@ -92,7 +92,7 @@ module CustomStep
92
92
  end
93
93
 
94
94
  RspecStarter::PrepareDatabaseStep.prepend CustomStep
95
-
95
+
96
96
  Dir.chdir APP_ROOT do
97
97
  RspecStarter.start(prepare_db: true, remove_tmp: true, allow_xvfb: true)
98
98
  end
data/lib/rspec_starter.rb CHANGED
@@ -3,6 +3,16 @@ require 'colorize'
3
3
  require "rspec_starter/version"
4
4
  require_relative 'rspec_starter/runner'
5
5
 
6
+ # Setup pry for development when running "rake console". Guard against load
7
+ # errors in production (since pry is only loaded as a DEVELOPMENT dependency
8
+ # in the .gemspec)
9
+ # rubocop:disable Lint/HandleExceptions
10
+ begin
11
+ require "pry"
12
+ rescue LoadError
13
+ end
14
+ # rubocop:enable Lint/HandleExceptions
15
+
6
16
  # Entry point for the RspecStarter gem.
7
17
  module RspecStarter
8
18
  # The 'start' method takes arguments that can be used to control the steps that are executed when running Rspec. These
@@ -23,10 +23,12 @@ module RspecStarter
23
23
  @steps = []
24
24
  @step_num = 1
25
25
  @xvfb_installed = RspecStarter.which("xvfb-run")
26
+ @prep_db_step = PrepareDatabaseStep.new(defaults, self)
27
+ @run_rspec_step = InvokeRspecStep.new(defaults, self)
26
28
  @steps << VerifyXvfbStep.new(defaults, self)
27
- @steps << PrepareDatabaseStep.new(defaults, self)
29
+ @steps << @prep_db_step
28
30
  @steps << RemoveTmpFolderStep.new(defaults, self)
29
- @steps << InvokeRspecStep.new(defaults, self)
31
+ @steps << @run_rspec_step
30
32
  end
31
33
 
32
34
  def run
@@ -38,6 +40,8 @@ module RspecStarter
38
40
  @step_num += 1
39
41
  break if step.failed?
40
42
  end
43
+
44
+ finalize_exit
41
45
  end
42
46
 
43
47
  def project_is_rails_app?
@@ -74,5 +78,11 @@ module RspecStarter
74
78
  def xvfb_installed?
75
79
  @xvfb_installed
76
80
  end
81
+
82
+ def finalize_exit
83
+ exit(1) if @run_rspec_step.rspec_exit_status.nonzero?
84
+ exit(1) if @prep_db_step.exit_status.nonzero?
85
+ exit(0)
86
+ end
77
87
  end
78
88
  end
@@ -1,11 +1,14 @@
1
1
  module RspecStarter
2
2
  # The step that actually starts the RSpec.
3
3
  class InvokeRspecStep < RspecStarter::Step
4
+ attr_reader :rspec_exit_status
5
+
4
6
  def initialize(defaults, runner)
5
7
  super(runner)
6
8
  @allow_xvfb = defaults.fetch(:allow_xvfb, true)
7
9
  @relevant_options = ["--no-xvfb"]
8
10
  @success_or_skipped = nil # Will be updated once step executes
11
+ @rspec_exit_status = nil # Will be updated once step executes
9
12
  @user_wants_to_skip_xvfb = ARGV.any? { |option| option.include?("--no-xvfb") }
10
13
  init_rspec_options
11
14
  end
@@ -29,6 +32,7 @@ module RspecStarter
29
32
  cmd = "#{cmd} #{@rspec_options.join(' ')}" unless @rspec_options.empty?
30
33
  puts "[#{@runner.step_num}] Running specs with '#{cmd.colorize(:light_blue)}' ...\n\n"
31
34
  system cmd
35
+ @rspec_exit_status = $CHILD_STATUS.exitstatus
32
36
  @success_or_skipped = true
33
37
  end
34
38
 
@@ -1,12 +1,15 @@
1
1
  module RspecStarter
2
2
  # The steps that destorys and rebuilds the DB before running RSpec.
3
3
  class PrepareDatabaseStep < RspecStarter::Step
4
+ attr_reader :exit_status
5
+
4
6
  def initialize(defaults, runner)
5
7
  super(runner)
6
8
  @prepare_database = defaults.fetch(:prepare_db, true)
7
9
  @relevant_options << '--no-prep-db'
8
10
  @user_wants_to_skip = ARGV.any? { |option| option.include?("--no-prep-db") }
9
11
  @success_or_skipped = nil # Will be updated once step executes
12
+ @exit_status = 0 # Will be updated once step executes
10
13
  end
11
14
 
12
15
  def failed?
@@ -24,7 +27,8 @@ module RspecStarter
24
27
 
25
28
  rebuild_cmd = rebuild_command
26
29
  print "[#{@runner.step_num}] Preparing the test database with '#{rebuild_cmd.colorize(:light_blue)}' ... "
27
- _stdout, stderr, _status = Open3.capture3(rebuild_cmd)
30
+ _stdout, stderr, exit_status = Open3.capture3(rebuild_cmd)
31
+ @exit_status = exit_status.exitstatus
28
32
  @success_or_skipped = successful?(stderr)
29
33
 
30
34
  if @success_or_skipped
@@ -47,7 +51,7 @@ module RspecStarter
47
51
  # Simply checking the exitstatus isn't good enough. When rake aborts due to a bug, it will still
48
52
  # return a zero exit status. We need to see if 'rake aborted!' has been written to the output.
49
53
  def successful?(stderr)
50
- return false if $CHILD_STATUS.exitstatus.nonzero?
54
+ return false if @exit_status.nonzero?
51
55
  !stderr.include?("rake aborted!")
52
56
  end
53
57
  end
@@ -1,3 +1,3 @@
1
1
  module RspecStarter
2
- VERSION = "1.4.0".freeze
2
+ VERSION = "1.5.0".freeze
3
3
  end
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
 
22
- spec.add_development_dependency "bundler", "~> 1.14"
22
+ spec.add_development_dependency "bundler", "~> 2.0"
23
23
  spec.add_development_dependency "pry-byebug", "~> 3.6.0"
24
24
  spec.add_development_dependency "rake", "~> 12.0"
25
25
  spec.add_development_dependency "rspec", "~> 3.0"
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.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roberts
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-12 00:00:00.000000000 Z
11
+ date: 2019-02-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.14'
19
+ version: '2.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.14'
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: pry-byebug
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -146,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
146
  version: '0'
147
147
  requirements: []
148
148
  rubyforge_project:
149
- rubygems_version: 2.7.6
149
+ rubygems_version: 2.7.8
150
150
  signing_key:
151
151
  specification_version: 4
152
152
  summary: A Ruby gem that helps run RSpec in a standard manner.