pax_global_header00006660000000000000000000000064125717410630014520gustar00rootroot0000000000000052 comment=b29cc0d0f07b6d03e1a7d6322e464e7314e62b0a ruby-rspec-instafail-0.4.0/000077500000000000000000000000001257174106300155645ustar00rootroot00000000000000ruby-rspec-instafail-0.4.0/Gemfile000066400000000000000000000000761257174106300170620ustar00rootroot00000000000000source "https://rubygems.org" gemspec gem "bump" gem "rake" ruby-rspec-instafail-0.4.0/Gemfile.lock000066400000000000000000000011261257174106300200060ustar00rootroot00000000000000PATH remote: . specs: rspec-instafail (0.4.0) rspec GEM remote: https://rubygems.org/ specs: bump (0.5.1) diff-lcs (1.2.5) rake (10.4.2) rspec (3.1.0) rspec-core (~> 3.1.0) rspec-expectations (~> 3.1.0) rspec-mocks (~> 3.1.0) rspec-core (3.1.7) rspec-support (~> 3.1.0) rspec-expectations (3.1.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.1.0) rspec-mocks (3.1.3) rspec-support (~> 3.1.0) rspec-support (3.1.2) PLATFORMS ruby DEPENDENCIES bump rake rspec-instafail! BUNDLED WITH 1.10.6 ruby-rspec-instafail-0.4.0/Rakefile000077500000000000000000000005501257174106300172340ustar00rootroot00000000000000require "bundler/setup" require "bundler/gem_tasks" require "bump/tasks" task :default do Bundler.with_clean_env do sh "cd spec/rspec_1 && (bundle check || bundle) > /dev/null" sh "cd spec/rspec_2 && (bundle check || bundle) > /dev/null" sh "cd spec/rspec_3 && (bundle check || bundle) > /dev/null" end sh "rspec spec/instafail_spec.rb" end ruby-rspec-instafail-0.4.0/Readme.md000077500000000000000000000033261257174106300173120ustar00rootroot00000000000000Show failing specs instantly. Show passing spec as green dots as usual. Output ====== ``` ....................................................*.... 1) ApplicationController#sign_out_and_redirect with JSON should return JSON indicating success Failure/Error: json_response = JSON.parse response.body A JSON text must at least contain two octets! # /Users/miwillhite/.rvm/gems/ruby-1.9.2-p0/gems/json_pure-1.4.6/lib/json/common.rb:146:in `initialize' # /Users/miwillhite/.rvm/gems/ruby-1.9.2-p0/gems/json_pure-1.4.6/lib/json/common.rb:146:in `new' # /Users/miwillhite/.rvm/gems/ruby-1.9.2-p0/gems/json_pure-1.4.6/lib/json/common.rb:146:in `parse' # ./spec/controllers/application_controller_spec.rb:17:in `block (4 levels) in ' .................................................................. Finished in 650.095614 seconds 1680 examples, 1 failure, 1 pending ``` Install ======= ```Bash gem install rspec-instafail # .rspec --require rspec/instafail --format RSpec::Instafail ``` Authors ======= ### [Contributors](http://github.com/grosser/rspec-instafail/contributors) - [Matthew Willhite](http://github.com/miwillhite) - [Jeff Kreeftmeijer](http://jeffkreeftmeijer.com) - [Steve Tooke](http://tooky.github.com) - [Josh Ellithorpe](https://github.com/zquestz) - [Raphael Sofaer](https://github.com/rsofaer) - [Mike Mazur](https://github.com/mikem) - [vernonR2](https://github.com/vernonR2) - [Olek Janiszewski](https://github.com/exviva) - [Kevin Carter](https://github.com/DexterTheDragon) [Michael Grosser](http://grosser.it)
michael@grosser.it
License: MIT
[![Build Status](https://travis-ci.org/grosser/rspec-instafail.png)](https://travis-ci.org/grosser/rspec-instafail) ruby-rspec-instafail-0.4.0/lib/000077500000000000000000000000001257174106300163325ustar00rootroot00000000000000ruby-rspec-instafail-0.4.0/lib/rspec/000077500000000000000000000000001257174106300174465ustar00rootroot00000000000000ruby-rspec-instafail-0.4.0/lib/rspec/instafail.rb000077500000000000000000000002041257174106300217440ustar00rootroot00000000000000module RSpec version = Gem.loaded_specs["rspec"].version require "rspec/instafail/rspec_#{[3, version.segments.first].min}" end ruby-rspec-instafail-0.4.0/lib/rspec/instafail/000077500000000000000000000000001257174106300214205ustar00rootroot00000000000000ruby-rspec-instafail-0.4.0/lib/rspec/instafail/rspec_1.rb000077500000000000000000000003601257174106300233030ustar00rootroot00000000000000require 'spec/runner/formatter/progress_bar_formatter' module RSpec class Instafail < Spec::Runner::Formatter::ProgressBarFormatter def example_failed(example, counter, failure) dump_failure(counter, failure) end end end ruby-rspec-instafail-0.4.0/lib/rspec/instafail/rspec_2.rb000077500000000000000000000017231257174106300233100ustar00rootroot00000000000000require 'rspec/core/formatters/progress_formatter' module RSpec class Instafail < RSpec::Core::Formatters::ProgressFormatter def example_failed(example) # do what BaseFormatter#example_failed would do @failed_examples << example # do what BaseTextFormatter#dump_failures would do index = failed_examples.size - 1 _dump_pending_example(example, index) dump_backtrace(example) end private def _dump_pending_example(example, index) if defined? pending_fixed? # > 2.8 if pending_fixed?(example) dump_pending_fixed(example, index) else preserve_size(example.example_group.ancestors) do dump_failure(example, index) end end else dump_pending_example_fixed(example, index) || dump_failure(example, index) end end def preserve_size(array) old = array.size yield array.pop if array.size > old end end end ruby-rspec-instafail-0.4.0/lib/rspec/instafail/rspec_3.rb000077500000000000000000000006451257174106300233130ustar00rootroot00000000000000require 'rspec/core/formatters/progress_formatter' module RSpec class Instafail < RSpec::Core::Formatters::ProgressFormatter RSpec::Core::Formatters.register self, :example_failed def initialize(output) super @failed_examples = [] end def example_failed(failure) @failed_examples << failure.example output.puts failure.fully_formatted(@failed_examples.size) end end end ruby-rspec-instafail-0.4.0/lib/rspec/instafail/version.rb000077500000000000000000000000771257174106300234410ustar00rootroot00000000000000module RSpec class Instafail VERSION = '0.4.0' end end ruby-rspec-instafail-0.4.0/rspec-instafail.gemspec000077500000000000000000000006241257174106300222220ustar00rootroot00000000000000name = 'rspec-instafail' require './lib/rspec/instafail/version' Gem::Specification.new name, RSpec::Instafail::VERSION do |s| s.summary = "Show failing specs instantly" s.authors = ["Michael Grosser"] s.email = "michael@grosser.it" s.homepage = "https://github.com/grosser/#{name}" s.files = `git ls-files lib Readme.md`.split("\n") s.license = "MIT" s.add_runtime_dependency "rspec" end ruby-rspec-instafail-0.4.0/spec/000077500000000000000000000000001257174106300165165ustar00rootroot00000000000000ruby-rspec-instafail-0.4.0/spec/instafail_spec.rb000077500000000000000000000047311257174106300220370ustar00rootroot00000000000000RSpec.configure do |config| config.expect_with(:rspec) { |c| c.syntax = :should } config.mock_with(:rspec) { |c| c.syntax = :should } end describe 'RSpec::Instafail' do context "RSpec 1.x" do before :all do Bundler.with_clean_env do @rspec_result = `cd spec/rspec_1 && bundle exec spec a_test.rb --format RSpec::Instafail` end end before do @output = @rspec_result.dup end it "outputs failures at start of output" do @output.should =~ /^\s*1\)\s*'x fails logically'/m end it 'outputs errors in middle of output' do @output.should =~ /\.\.\*\s*2\)\s*RuntimeError in 'x raises a simple error'/m end it 'outputs the the ending block' do @output.should =~ /Finished in \d\.\d+ seconds\s*7 examples, 3 failures, 1 pending/ end end context 'Rspec 2.x' do before :all do Bundler.with_clean_env do @rspec_result = `cd spec/rspec_2 && bundle exec rspec a_test.rb -I ../../lib --require rspec/instafail --format RSpec::Instafail --no-color --order defined` end end before do @output = @rspec_result.dup end it "outputs failures at start of output" do @output.should =~ /^\s+1\) x fails logically/m end it 'outputs errors in middle of output' do @output.should =~ /\.\.\*\s*2\) x raises a simple error/m end it 'outputs the the ending block' do @output.should =~ /Finished in \d\.\d+ seconds\s*9 examples, 4 failures, 1 pending/ end it "does not add ancestors after failures" do @output.should include('ANCESTORS:17') @output.should_not include('ANCESTORS:18') end end context 'Rspec 3.x' do before :all do Bundler.with_clean_env do @rspec_result = `cd spec/rspec_3 && bundle exec rspec a_test.rb -I ../../lib --require rspec/instafail --format RSpec::Instafail --no-color --order defined` end end before do @output = @rspec_result.dup end it "outputs failures at start of output" do @output.should =~ /^\s+1\) x fails logically/m end it 'outputs errors in middle of output' do @output.should =~ /\.\.\*\s*2\) x raises a simple error/m end it 'outputs the the ending block' do @output.should =~ /Finished in \d\.\d+ seconds.*\s*9 examples, 4 failures, 1 pending/ end it "does not add ancestors after failures" do @output.should include('ANCESTORS:18') @output.should_not include('ANCESTORS:19') end end end ruby-rspec-instafail-0.4.0/spec/rspec_1/000077500000000000000000000000001257174106300200525ustar00rootroot00000000000000ruby-rspec-instafail-0.4.0/spec/rspec_1/Gemfile000077500000000000000000000000641257174106300213500ustar00rootroot00000000000000source 'https://rubygems.org' gem 'rspec', '~> 1.3' ruby-rspec-instafail-0.4.0/spec/rspec_1/Gemfile.lock000066400000000000000000000001601257174106300222710ustar00rootroot00000000000000GEM remote: https://rubygems.org/ specs: rspec (1.3.0) PLATFORMS ruby DEPENDENCIES rspec (~> 1.3) ruby-rspec-instafail-0.4.0/spec/rspec_1/a_test.rb000077500000000000000000000012101257174106300216530ustar00rootroot00000000000000require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib', 'rspec', 'instafail')) describe 'x' do it 'fails logically' do 1.should == 2 end it 'b' do end it 'c' do end it 'pends' do pending raise end it 'raises a simple error' do raise 'shallow failure' end it 'raises a hidden error' do error = ExceptionWrappingException.new('There is an error in this error.') error.original_exception = RuntimeError.new('There is no error in this error.') raise error end it 'e' do end end class ExceptionWrappingException < RuntimeError attr_accessor :original_exception end ruby-rspec-instafail-0.4.0/spec/rspec_2/000077500000000000000000000000001257174106300200535ustar00rootroot00000000000000ruby-rspec-instafail-0.4.0/spec/rspec_2/Gemfile000077500000000000000000000000651257174106300213520ustar00rootroot00000000000000source 'https://rubygems.org' gem 'rspec', '~> 2.2' ruby-rspec-instafail-0.4.0/spec/rspec_2/Gemfile.lock000066400000000000000000000005301257174106300222730ustar00rootroot00000000000000GEM remote: https://rubygems.org/ specs: diff-lcs (1.2.5) rspec (2.99.0) rspec-core (~> 2.99.0) rspec-expectations (~> 2.99.0) rspec-mocks (~> 2.99.0) rspec-core (2.99.2) rspec-expectations (2.99.2) diff-lcs (>= 1.1.3, < 2.0) rspec-mocks (2.99.2) PLATFORMS ruby DEPENDENCIES rspec (~> 2.2) ruby-rspec-instafail-0.4.0/spec/rspec_2/a_test.rb000077500000000000000000000016031257174106300216620ustar00rootroot00000000000000require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib', 'rspec', 'instafail')) describe 'x' do it 'fails logically' do 1.should == 2 end it 'b' do end it 'c' do end it 'pends' do skip raise end it 'raises a simple error' do raise 'shallow failure' end it 'raises a hidden error' do error = ExceptionWrappingException.new('There is an error in this error.') error.original_exception = RuntimeError.new('There is no error in this error.') raise error end it 'e' do end context "ancestors" do after do |example| puts "ANCESTORS:#{example.example_group.ancestors.size}" end it "does not add ancestors on failure" do raise "BAM" end it "does not add ancestors on failure" do end end end class ExceptionWrappingException < RuntimeError attr_accessor :original_exception end ruby-rspec-instafail-0.4.0/spec/rspec_3/000077500000000000000000000000001257174106300200545ustar00rootroot00000000000000ruby-rspec-instafail-0.4.0/spec/rspec_3/Gemfile000077500000000000000000000000641257174106300213520ustar00rootroot00000000000000source 'https://rubygems.org' gem 'rspec', '~> 3.0' ruby-rspec-instafail-0.4.0/spec/rspec_3/Gemfile.lock000066400000000000000000000007101257174106300222740ustar00rootroot00000000000000GEM remote: https://rubygems.org/ specs: diff-lcs (1.2.5) rspec (3.1.0) rspec-core (~> 3.1.0) rspec-expectations (~> 3.1.0) rspec-mocks (~> 3.1.0) rspec-core (3.1.7) rspec-support (~> 3.1.0) rspec-expectations (3.1.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.1.0) rspec-mocks (3.1.3) rspec-support (~> 3.1.0) rspec-support (3.1.2) PLATFORMS ruby DEPENDENCIES rspec (~> 3.0) ruby-rspec-instafail-0.4.0/spec/rspec_3/a_test.rb000077500000000000000000000016121257174106300216630ustar00rootroot00000000000000require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib', 'rspec', 'instafail')) describe 'x' do it 'fails logically' do expect(1).to eq 2 end it 'b' do end it 'c' do end it 'pends' do pending raise end it 'raises a simple error' do raise 'shallow failure' end it 'raises a hidden error' do error = ExceptionWrappingException.new('There is an error in this error.') error.original_exception = RuntimeError.new('There is no error in this error.') raise error end it 'e' do end context "ancestors" do after do |example| puts "ANCESTORS:#{example.example_group.ancestors.size}" end it "does not add ancestors on failure" do raise "BAM" end it "does not add ancestors on failure" do end end end class ExceptionWrappingException < RuntimeError attr_accessor :original_exception end