uspec 0.2.1 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65de448e566c6f625bd228e6581a0ee78bd8811a0189e04f4588d7474201e516
4
- data.tar.gz: 62ba89fc56bdd1fb21cf2709ab8441ed0ad9cbe3f5426ce1719d8c36933161d7
3
+ metadata.gz: 11c5e0a54306aeafdf5547c71c02c3ed64fabc60f068bff1d6d395cc1fac11b3
4
+ data.tar.gz: 918d6e06e01c9c0541a410d9ecc5aad0a7c7f416c0532d533f461383dfad70d4
5
5
  SHA512:
6
- metadata.gz: f9353937b8b7e4b44ed2ea214fcb69ce1c0558d7774e10dedd4d071e20ad10f1fca8485e0063bacdf614d25389a9893439f4bafd0617347fd91649b85c9284d1
7
- data.tar.gz: 87f381e5c1f7f715c28543f47531589ef8344266d648e729c9d6fb01d7f9bfb7a79a966b2437c7f76e8a7d995dc0d378563b819881cb8b46b92e0b5dbbccee00
6
+ metadata.gz: 46c2d5c8833632e28692a834c664a3947e21f8a0049133b99b409282eecaafa7d4e2ce2b6247e24bd625d8924f80634f6343c2013ce1b73789fcdd631ecd7075
7
+ data.tar.gz: 79fc6300bf5e09df01a0cfce23aca9514d58e571f222a0843f9e68c948a48550add600eb75fd429eefeccaeb81d48ca95cb3da2ee7f66fcb3eed3b28e962e903
@@ -0,0 +1,21 @@
1
+ version: 2.1
2
+ orbs:
3
+ ruby: circleci/ruby@0.1.2
4
+
5
+ jobs:
6
+ build:
7
+ docker:
8
+ - image: circleci/ruby:2.6.3-stretch-node
9
+ executor: ruby/default
10
+ steps:
11
+ - checkout
12
+ - run:
13
+ name: Which bundler?
14
+ command: bundle -v
15
+ - ruby/bundle-install
16
+ test:
17
+ executor: ruby/default
18
+ steps:
19
+ - run:
20
+ name: Uspec tests
21
+ command: bundle exec uspec
data/.rubocop.yml ADDED
@@ -0,0 +1,56 @@
1
+ # Rubocop override settings
2
+
3
+ AllCops:
4
+ TargetRubyVersion: 2.0
5
+
6
+ Metrics/LineLength:
7
+ Max: 120
8
+ Exclude:
9
+ - config_module.gemspec
10
+ - "uspec/**/*"
11
+
12
+ Naming/PredicateName:
13
+ Enabled: false
14
+
15
+ Style/PreferredHashMethods:
16
+ Exclude:
17
+ - "**/*"
18
+
19
+ Style/Documentation:
20
+ Enabled: false
21
+
22
+ Style/MethodDefParentheses:
23
+ Enabled: false
24
+
25
+ Style/ParallelAssignment:
26
+ Enabled: false
27
+
28
+ Style/SingleLineMethods:
29
+ Enabled: false
30
+
31
+ Style/Alias:
32
+ Enabled: false
33
+
34
+ Style/CaseEquality:
35
+ Enabled: false
36
+
37
+ Style/SymbolArray:
38
+ Enabled: false
39
+
40
+ Bundler/OrderedGems:
41
+ Enabled: false
42
+
43
+ Style/StringLiterals:
44
+ EnforcedStyle: double_quotes
45
+
46
+ Style/StringLiteralsInInterpolation:
47
+ EnforcedStyle: double_quotes
48
+
49
+ Layout/AccessModifierIndentation:
50
+ EnforcedStyle: outdent
51
+
52
+ Style/EnforcedStyleForMultiline:
53
+ EnforcedStyle: consistent_comma
54
+
55
+ Naming/RescuedExceptionsVariableName:
56
+ PreferredName: error
data/README.markdown CHANGED
@@ -3,8 +3,9 @@ Uspec
3
3
 
4
4
  Uspec is a shiny little testing framework for your apps!
5
5
 
6
- [![Build Status](https://travis-ci.org/acook/uspec.png?branch=master)](https://travis-ci.org/acook/uspec)
7
- [![Code Climate](https://codeclimate.com/github/acook/uspec.png)](https://codeclimate.com/github/acook/uspec)
6
+ [![Gem Version](https://img.shields.io/gem/v/uspec.svg?style=for-the-badge)](https://rubygems.org/gems/uspec/)
7
+ [![Build Status](https://img.shields.io/circleci/build/github/acook/uspec.svg?style=for-the-badge)](https://app.circleci.com/pipelines/github/acook/uspec)
8
+ [![Code Climate](https://img.shields.io/codeclimate/maintainability/acook/uspec.svg?style=for-the-badge)](https://codeclimate.com/github/acook/uspec)
8
9
 
9
10
  Philosophy / Why Uspec?
10
11
  -----------------------
@@ -61,12 +62,12 @@ Or install it directly with:
61
62
  Quickstart
62
63
  ----------
63
64
 
64
- 0. Create a `spec` (or `uspec`) directory to keep your specs in.
65
+ 0. Create a `uspec` directory to keep your specs in.
65
66
  1. Name your specs ending with `_spec.rb`.
66
67
  2. Write some specs in Ruby using the `spec` method (example above).
67
68
  2. Use the included `uspec` executable to run your specs.
68
69
 
69
- **Hint:** A lot of people also put `require_relative 'spec_helper'` in their tests for shared code between tests.
70
+ **Hint:** A lot of people also put `require_relative 'spec_helper'` at the top of their test files for sharing code between tests.
70
71
 
71
72
  Commandline Usage
72
73
  -----------------
@@ -77,7 +78,7 @@ uspec - minimalistic ruby testing framework
77
78
  usage: uspec [<file_or_path>...]
78
79
  ```
79
80
 
80
- - Without arguments the `uspec` command will automatially look for `spec` and `uspec` directories and load any `*_spec.rb` files inside them.
81
+ - Without arguments the `uspec` command will automatially look for a `uspec` directory and load any `*_spec.rb` files inside them.
81
82
  - You can also pass in arbitrary files and it will attempt to run them as specs.
82
83
  - If you pass in directories `uspec` will scan for and run any specs inside them.
83
84
  - Uspec will return the number of failures as its status code to the commandline, 0 if none.
@@ -85,7 +86,7 @@ usage: uspec [<file_or_path>...]
85
86
  Output
86
87
  ------
87
88
 
88
- Wonder what Uspec looks like?
89
+ A brief explanation of `uspec`'s output to show you what it can do!
89
90
 
90
91
  ### Success
91
92
 
@@ -157,7 +158,7 @@ When you run the test Uspec will helpfully display:
157
158
  Tips & Tricks
158
159
  -------------
159
160
 
160
- Because there's no matchers and only one method there's no reference documentation to look at, so here are some ideas to get you going!
161
+ Because there's no matchers and only one method there's no need for specialized reference documentation, but here are some ideas to get you going!
161
162
 
162
163
  ### String matching
163
164
 
@@ -200,6 +201,11 @@ If there's no error, then Uspec will see the result of the method call (whatever
200
201
  If the wrong Exception is raised, then because of reraising (by just calling `raise` without parameters),
201
202
  Ruby will dutifully pass along the error for Uspec to display.
202
203
 
204
+ Mocks, Spies, Stubs, and More!
205
+ -----------------------
206
+
207
+ Since `uspec` is a very straight forward testing utility it is easy to use any of the standard Ruby mocking frameworks with it. However, the [Impasta gem](https://github.com/acook/impasta) was made specifically for simple but comprehensive mocking, stubbing, and spying.
208
+
203
209
  Assertions & Debugging
204
210
  ----------------------
205
211
 
@@ -223,7 +229,8 @@ end
223
229
  MyFoo.new.assert
224
230
  ```
225
231
 
226
- If there are any specs that fail, your application will exit with an error code equal to the number of failures.
232
+ Assertions will be displayed as they occur, success or failure along with any informative output.
233
+ If there are any specs that fail, when your application exits its error code will equal the number of failures.
227
234
 
228
235
  ```
229
236
  $ ruby foo.rb
@@ -250,4 +257,4 @@ Contributing
250
257
  Author
251
258
  ------
252
259
 
253
- > Anthony M. Cook 2013-2019
260
+ > Anthony M. Cook 2013-2020
data/bin/uspec CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require_relative '../lib/uspec/cli'
4
- Uspec::CLI.invoke ARGV
4
+ Uspec::CLI.new(ARGV).invoke
data/lib/uspec.rb CHANGED
@@ -8,15 +8,10 @@ module Uspec
8
8
  exit 2
9
9
  end
10
10
 
11
+ # this method used to be how we injected the spec method
11
12
  def self.extended object
12
- object.extend Uspec::DSL
13
+ #unless object.respond_to? :spec
14
+ # object.extend Uspec::DSL
15
+ #end
13
16
  end
14
17
  end
15
-
16
- at_exit do
17
- failures = Uspec::Stats.exit_code
18
- status = $!.respond_to?(:status) ? $!.status : 0
19
- errors = $!.respond_to?(:cause) && $!.cause ? 1 : 0
20
- code = [failures, status, errors].max
21
- exit code
22
- end
data/lib/uspec/cli.rb CHANGED
@@ -2,29 +2,34 @@ require 'pathname'
2
2
  require_relative '../uspec'
3
3
 
4
4
  class Uspec::CLI
5
- class << self
6
- def usage
7
- warn "uspec v#{::Uspec::VERSION} - minimalistic ruby testing framework"
8
- warn "usage: #{File.basename $0} [<file_or_path>...]"
9
- end
5
+ def initialize args
6
+ usage unless (args & %w[-h --help -? /? -v --version]).empty?
10
7
 
11
- def run_specs paths
12
- uspec_cli = self.new paths
13
- uspec_cli.run_paths
14
- end
8
+ @paths = args
9
+ @pwd = Pathname.pwd.freeze
10
+ @stats = Uspec::Stats.new
11
+ @dsl = Uspec::DSL.new self
12
+ end
13
+ attr :stats, :dsl
15
14
 
16
- def invoke args
17
- if (args & %w[-h --help -? /? -v --version]).empty? then
18
- run_specs args
19
- else
20
- usage
21
- end
22
- end
15
+ def usage
16
+ warn "uspec v#{::Uspec::VERSION} - minimalistic ruby testing framework"
17
+ warn "usage: #{File.basename $0} [<file_or_path>...]"
18
+ exit 1
23
19
  end
24
20
 
25
- def initialize paths
26
- @paths = paths
27
- @pwd = Pathname.pwd.freeze
21
+ def run_specs
22
+ run_paths
23
+ end
24
+
25
+ def invoke
26
+ run_specs
27
+ puts @stats.summary
28
+ exit exit_code
29
+ end
30
+
31
+ def exit_code
32
+ [@stats.failure.size, 255].min
28
33
  end
29
34
 
30
35
  def paths
@@ -51,7 +56,7 @@ class Uspec::CLI
51
56
  end
52
57
  elsif path.exist? then
53
58
  puts "#{path.basename path.extname}:"
54
- Uspec::DSL.instance_eval(path.read, path.to_s)
59
+ dsl.instance_eval(path.read, path.to_s)
55
60
  else
56
61
  warn "path not found: #{path}"
57
62
  end
@@ -74,7 +79,7 @@ class Uspec::CLI
74
79
  MSG
75
80
  puts
76
81
  warn message
77
- Uspec::Stats.results << Uspec::Result.new(message, error, caller)
82
+ stats.failure << Uspec::Result.new(message, error, caller)
78
83
  end
79
84
 
80
85
  end
data/lib/uspec/dsl.rb CHANGED
@@ -1,23 +1,42 @@
1
1
  require_relative "result"
2
2
 
3
3
  module Uspec
4
- module DSL
5
- module_function
6
- def spec description
7
- terminal = Uspec::Terminal
4
+ class DSL
5
+ def initialize cli
6
+ @__uspec_cli = cli
7
+ end
8
8
 
9
- print ' -- ', description
9
+ def __uspec_cli
10
+ @__uspec_cli
11
+ end
10
12
 
11
- return print(': ' + terminal.yellow('pending') + terminal.newline) unless block_given?
13
+ def __uspec_stats
14
+ @__uspec_cli.stats
15
+ end
12
16
 
13
- begin
14
- raw_result = yield
15
- rescue => raw_result
17
+ def spec description
18
+ print ' -- ', description
19
+
20
+ if block_given? then
21
+ begin
22
+ raw_result = yield
23
+ rescue Exception => raw_result
24
+ end
16
25
  end
17
26
 
18
27
  result = Result.new description, raw_result, caller
19
28
 
20
- Uspec::Stats.results << result
29
+ unless block_given? then
30
+ result.pending!
31
+ end
32
+
33
+ if result.success?
34
+ __uspec_stats.success << result
35
+ elsif result.pending?
36
+ stats.pending << result
37
+ else
38
+ __uspec_stats.failure << result
39
+ end
21
40
 
22
41
  print ': ', result.pretty, "\n"
23
42
  rescue => error
@@ -30,7 +49,7 @@ module Uspec
30
49
  MSG
31
50
  puts
32
51
  warn message
33
- Uspec::Stats.results << Uspec::Result.new(message, error, caller)
52
+ __uspec_stats.failure << Uspec::Result.new(message, error, caller)
34
53
  end
35
54
  end
36
55
  end
data/lib/uspec/result.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require_relative "terminal"
2
+ require "toisb"
2
3
 
3
4
  module Uspec
4
5
  class Result
@@ -8,14 +9,17 @@ module Uspec
8
9
  @spec = spec
9
10
  @raw = raw
10
11
  @source = source
12
+ @handler = ::TOISB.wrap raw
11
13
  end
12
- attr_reader :spec, :raw, :source
14
+ attr_reader :spec, :raw, :source, :handler
13
15
 
14
16
  def pretty
15
17
  if raw == true then
16
18
  green raw
17
19
  elsif raw == false then
18
20
  red raw
21
+ elsif pending? then
22
+ yellow 'pending'
19
23
  elsif Exception === raw then
20
24
  [
21
25
  red('Exception'), vspace,
@@ -26,10 +30,10 @@ module Uspec
26
30
  ].join
27
31
  else
28
32
  [
29
- red('Unknown Result'), vspace,
33
+ red('Failed'), vspace,
30
34
  hspace, 'Spec did not return a boolean value ', newline,
31
35
  hspace, 'in spec at ', source.first, vspace,
32
- hspace, red(klassinfo), inspector, newline
36
+ hspace, red(subklassinfo), inspector, newline
33
37
  ].join
34
38
  end
35
39
  end
@@ -41,18 +45,28 @@ module Uspec
41
45
  end
42
46
 
43
47
  def message
44
- "#{red klassinfo}#{raw.message}"
48
+ "#{red subklassinfo}#{raw.message}"
45
49
  end
46
50
 
47
- def klassinfo
48
- superklass ? "#{klass} < #{superklass}: " : "#{klass}: "
51
+ def subklassinfo
52
+ "#{handler.subklassinfo}: "
49
53
  end
50
54
 
51
55
  # Attempts to inspect an object
52
56
  def inspector
53
- klass && klass.public_method_defined?(:inspect) ? raw.inspect : "#<#{klass}:0x#{get_id}>"
57
+ if String === raw && raw.include?(?\n) then
58
+ # if object is a multiline string, display it unescaped
59
+ [
60
+ vspace,
61
+ hspace, yellow('"""'), newline,
62
+ raw, normal, newline,
63
+ hspace, yellow('"""')
64
+ ].join
65
+ else
66
+ handler.inspector!
67
+ end
54
68
  rescue Exception => error
55
- return "#<#{klass}:0x#{get_id}>" if error.message.include? get_id
69
+ return handler.simple_inspector if error.message.include? handler.get_id
56
70
 
57
71
  error_file, error_line, _ = error.backtrace[4].split ?:
58
72
 
@@ -74,38 +88,20 @@ module Uspec
74
88
  MSG
75
89
  end
76
90
 
77
- # Returns the class of the object if it isn't already a class
78
- def klass
79
- Module === raw ? raw : ancestor_klasses[1]
80
- end
81
-
82
- # Returns the superclass of the object
83
- def superklass
84
- ancestor_klasses[2]
85
- end
86
-
87
- # Gets the object ID of an object
88
- def get_id
89
- raw.__id__.to_s(16) rescue 0
90
- end
91
-
92
- # Obtain the singleton class of an object
93
- def singleton
94
- @singleton ||= (class << raw; self; end) rescue raw.class
91
+ def success?
92
+ raw == true
95
93
  end
96
94
 
97
- def ancestor_klasses
98
- @ancestor_klasses ||= ancestors.select{|a| a.is_a? Class}
95
+ def failure?
96
+ raw != true && !@pending
99
97
  end
100
98
 
101
- # Collects the ancestors of an object
102
- def ancestors
103
- @ancestors ||= safe_send singleton, :ancestors
99
+ def pending?
100
+ !!@pending
104
101
  end
105
102
 
106
- # Works around BasicObject and other objects that are missing/overwrite important methods
107
- def safe_send object, method, *args, &block
108
- (Module === object ? Module : Object).instance_method(method).bind(object).call(*args, &block)
103
+ def pending!
104
+ @pending = true
109
105
  end
110
106
 
111
107
  def inspect
data/lib/uspec/stats.rb CHANGED
@@ -1,30 +1,36 @@
1
1
  module Uspec
2
2
  class Stats
3
- class << self
4
- def results?
5
- !results.empty?
6
- end
7
-
8
- def results
9
- @results ||= clear_results!
10
- end
11
-
12
- def clear_results!
13
- @results = Array.new
14
- end
3
+ def initialize
4
+ clear_results!
5
+ end
6
+ attr :success, :failure, :pending
15
7
 
16
- def exit_code
17
- # checking for truthy isn't good enough, it must be exactly true!
18
- failures = results.count{|result| result.raw != true }
19
- failures > 255 ? 255 : failures
20
- end
8
+ def clear_results!
9
+ @success = Array.new
10
+ @failure = Array.new
11
+ @pending = Array.new
12
+ end
21
13
 
22
- def inspect
23
- <<-INFO
14
+ def inspect
15
+ <<-INFO
24
16
  #{super} Failures: #{exit_code}
25
17
  #{results.map{|r| r.inspect}.join "\n\t" }
26
- INFO
27
- end
18
+ INFO
19
+ end
20
+
21
+ def results
22
+ @success + @failure + @pending
23
+ end
24
+
25
+ def summary
26
+ [
27
+ "test summary: ",
28
+ Uspec::Terminal.green("#{@success.size} successful"),
29
+ ", ",
30
+ Uspec::Terminal.red("#{@failure.size} failed"),
31
+ ", ",
32
+ Uspec::Terminal.yellow("#{@pending.size} pending")
33
+ ].join
28
34
  end
29
35
  end
30
36
  end
data/lib/uspec/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Uspec
2
- VERSION = '0.2.1'
2
+ VERSION = '1.0.1'
3
3
  end
data/uspec.gemspec CHANGED
@@ -22,6 +22,8 @@ Gem::Specification.new do |gem|
22
22
  # technically should still work in 2.0 but some of the test suite won't pass
23
23
  gem.required_ruby_version = ">= 2.1"
24
24
 
25
+ gem.add_dependency "that_object_is_so_basic", "~> 0.0.5"
26
+
25
27
  gem.add_development_dependency "pry"
26
28
  gem.add_development_dependency "pry-doc"
27
29
  end
data/uspec/cli_spec.rb CHANGED
@@ -12,19 +12,19 @@ end
12
12
  spec 'runs a path of specs' do
13
13
  output = capture do
14
14
  path = Pathname.new(__FILE__).parent.parent.join('example_specs').to_s
15
- Uspec::CLI.run_specs Array(path)
15
+ Uspec::CLI.new(Array(path)).run_specs
16
16
  end
17
17
 
18
- output.include? 'I love passing tests'
18
+ output.include?('I love passing tests') || output
19
19
  end
20
20
 
21
21
  spec 'runs an individual spec' do
22
22
  output = capture do
23
23
  path = Pathname.new(__FILE__).parent.parent.join('example_specs', 'example_spec.rb').to_s
24
- Uspec::CLI.run_specs Array(path)
24
+ Uspec::CLI.new(Array(path)).run_specs
25
25
  end
26
26
 
27
- output.include? 'I love passing tests'
27
+ output.include?('I love passing tests') || output
28
28
  end
29
29
 
30
30
  spec 'broken requires in test files count as test failures' do
data/uspec/result_spec.rb CHANGED
@@ -15,9 +15,31 @@ obj = TestObject.new
15
15
 
16
16
  spec "ensure BasicObject subclasses work" do
17
17
  result = Uspec::Result.new "BasicObject Subclass Result", obj, []
18
- expected = "#<TestObject:"
18
+ expected = "#<BasicObject/TestObject:"
19
19
  actual = result.pretty
20
- actual.include?(expected) || result.inspector
20
+ actual.include?(expected) || result.pretty
21
+ end
22
+
23
+ spec "display basic info about Object" do
24
+ result = Uspec::Result.new "Object Result", Object.new, []
25
+ expected = "Object < BasicObject"
26
+ actual = result.pretty
27
+ actual.include?(expected) || result.pretty
28
+ end
29
+
30
+ spec "display basic info about Array" do
31
+ result = Uspec::Result.new "Array Result", [], []
32
+ expected = "Array < Object"
33
+ actual = result.pretty
34
+ actual.include?(expected) || result.pretty
35
+ end
36
+
37
+ spec "display basic info about Array class" do
38
+ result = Uspec::Result.new "Array Class Result", Array, []
39
+ #expected = "Class < ???" # TODO: Make classes display nicer in TOISB
40
+ expected = "#<Class:Object> < #<Class:BasicObject>: \e[0mArray"
41
+ actual = result.pretty
42
+ actual.include?(expected) || result.pretty
21
43
  end
22
44
 
23
45
  parent = [obj]
@@ -29,12 +51,20 @@ spec "ensure parent object of BasicObject subclasses get a useful error message"
29
51
  actual.include?(expected) || result.inspector
30
52
  end
31
53
 
32
- class ::InspectFail; def inspect; raise; end; end
54
+ class ::InspectFail; def inspect; raise RuntimeError, "This error is intentional and part of the test."; end; end
33
55
  inspect_fail = InspectFail.new
34
56
 
35
57
  spec "display a useful error message when a user-defined inspect method fails" do
36
58
  result = Uspec::Result.new "Inspect Fail Result", inspect_fail, []
37
- expected = "raises an error"
59
+ expected = "raises an exception"
38
60
  actual = result.pretty
39
61
  actual.include?(expected) || result.inspector
40
62
  end
63
+
64
+ spec "display strings more like their actual contents" do
65
+ expected = "this string:\nshould display \e[42;2mproperly"
66
+ result = Uspec::Result.new "Inspect Fail Result", expected, []
67
+ actual = result.pretty
68
+ actual.include?(expected) || result.inspector
69
+ end
70
+
data/uspec/uspec_spec.rb CHANGED
@@ -10,6 +10,16 @@ spec 'catches errors' do
10
10
  output.include? 'Exception'
11
11
  end
12
12
 
13
+ spec 'catches even non-StandardError-subclass exceptions' do
14
+ output = capture do
15
+ spec 'not implemented error' do
16
+ raise ::NotImplementedError, 'test exception'
17
+ end
18
+ end
19
+
20
+ output.include? 'Exception'
21
+ end
22
+
13
23
  spec 'complains when spec block returns non boolean' do
14
24
  output = capture do
15
25
  spec 'whatever' do
@@ -17,7 +27,7 @@ spec 'complains when spec block returns non boolean' do
17
27
  end
18
28
  end
19
29
 
20
- output.include? 'Unknown Result'
30
+ output.include? 'Failed'
21
31
  end
22
32
 
23
33
  spec 'marks test as pending when no block supplied' do
@@ -35,13 +45,15 @@ end
35
45
  spec 'exit code is the number of failures' do
36
46
  expected = 50
37
47
  output = capture do
48
+ __uspec_stats.clear_results! # because we're forking, we will have a copy of the current results
49
+
38
50
  expected.times do |count|
39
51
  spec "fail ##{count + 1}" do
40
52
  false
41
53
  end
42
54
  end
43
55
 
44
- puts(Uspec::Stats.inspect) unless Uspec::Stats.exit_code == expected
56
+ exit __uspec_cli.exit_code
45
57
  end
46
58
  actual = $?.exitstatus
47
59
 
@@ -50,11 +62,15 @@ end
50
62
 
51
63
  spec 'if more than 255 failures, exit status is 255' do
52
64
  capture do
65
+ __uspec_stats.clear_results! # because we're forking, we will have a copy of the current results
66
+
53
67
  500.times do
54
68
  spec 'fail' do
55
69
  false
56
70
  end
57
71
  end
72
+
73
+ exit __uspec_cli.exit_code
58
74
  end
59
75
 
60
76
  $?.exitstatus == 255 || $?
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: uspec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony M. Cook
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-17 00:00:00.000000000 Z
11
+ date: 2021-02-25 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: that_object_is_so_basic
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.0.5
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.0.5
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: pry
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -48,11 +62,12 @@ executables:
48
62
  extensions: []
49
63
  extra_rdoc_files: []
50
64
  files:
65
+ - ".circleci/config.yml"
51
66
  - ".editorconfig"
52
67
  - ".gitignore"
68
+ - ".rubocop.yml"
53
69
  - ".ruby-gemset"
54
70
  - ".ruby-version"
55
- - ".travis.yml"
56
71
  - Gemfile
57
72
  - LICENSE.txt
58
73
  - README.markdown
data/.travis.yml DELETED
@@ -1,31 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 2.6.3
5
- - 2.5.5
6
- - 2.4.6
7
- - 2.3.8
8
- - 2.2.10
9
- - 2.1.10
10
-
11
- - 2.0.0
12
- - 1.9.3
13
- - 1.9.2
14
- - jruby-19mode
15
- - ruby-head
16
-
17
- before_install:
18
- - gem update bundler
19
- before_script:
20
- - bundle exec gem list
21
- script: bundle exec uspec
22
-
23
- matrix:
24
- allow_failures:
25
- - rvm: 2.0.0
26
- - rvm: 1.9.3
27
- - rvm: 1.9.2
28
- - rvm: ruby-head
29
- - rvm: jruby-19mode
30
-
31
- sudo: false