Last active
October 7, 2015 00:31
-
-
Save backus/7eab1eadfa770ca76411 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ CI=true be mutant -j1 -I . -r mutant-freezer --use rspec 'Foo*'Mutant configuration: | |
Matcher: #<Mutant::Matcher::Config match_expressions: [Foo*]> | |
Integration: Mutant::Integration::Rspec | |
Expect Coverage: 100.00% | |
Jobs: 1 | |
Includes: ["."] | |
Requires: ["mutant-freezer"] | |
(00/08) 100% - killtime: 0.00s runtime: 0.00s overhead: 0.00s | |
(07/08) 87% - killtime: 0.18s runtime: 1.01s overhead: 0.83s | |
Foo#bar:/Users/johnbackus/Dropbox/coding/gists/mutant-freezer.rb:13 | |
- rspec:0:./mutant-freezer.rb:22/Foo#bar should not freeze | |
neutral:Foo#bar:/Users/johnbackus/Dropbox/coding/gists/mutant-freezer.rb:13:7e6ca | |
--- Neutral failure --- | |
Original code was inserted unmutated. And the test did NOT PASS. | |
Your tests do not pass initially or you found a bug in mutant / unparser. | |
Subject AST: | |
(def :bar | |
(args) | |
(send | |
(const nil :DontFreeze) :new)) | |
Unparsed Source: | |
def bar | |
DontFreeze.new | |
end | |
memoize(:bar) | |
Test Result: | |
- 1 @ runtime: 0.010801 | |
- rspec:0:./mutant-freezer.rb:22/Foo#bar should not freeze | |
Test Output: | |
F | |
Failures: | |
1) Foo#bar should not freeze | |
Failure/Error: fail "I said don't freeze me!" | |
RuntimeError: | |
I said don't freeze me! | |
# ./mutant-freezer.rb:6:in `freeze' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/ice_nine-0.11.1/lib/ice_nine/freezer/object.rb:19:in `guarded_deep_freeze' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/ice_nine-0.11.1/lib/ice_nine/freezer.rb:100:in `block in guarded_deep_freeze' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/ice_nine-0.11.1/lib/ice_nine/support/recursion_guard.rb:51:in `guard' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/ice_nine-0.11.1/lib/ice_nine/freezer.rb:99:in `guarded_deep_freeze' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/ice_nine-0.11.1/lib/ice_nine/freezer.rb:54:in `deep_freeze!' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/ice_nine-0.11.1/lib/ice_nine.rb:59:in `deep_freeze!' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/adamantium-0.2.0/lib/adamantium/freezer.rb:83:in `freeze' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/adamantium-0.2.0/lib/adamantium/freezer.rb:50:in `freeze_value' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/adamantium-0.2.0/lib/adamantium/freezer.rb:34:in `call' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:117:in `block (3 levels) in create_memoized_method' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/memoizable-0.4.2/lib/memoizable/memory.rb:63:in `block (3 levels) in fetch' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/thread_safe-0.3.5/lib/thread_safe/cache.rb:58:in `fetch' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/memoizable-0.4.2/lib/memoizable/memory.rb:62:in `block (2 levels) in fetch' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/memoizable-0.4.2/lib/memoizable/memory.rb:61:in `block in fetch' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/thread_safe-0.3.5/lib/thread_safe/cache.rb:58:in `fetch' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/memoizable-0.4.2/lib/memoizable/memory.rb:60:in `fetch' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/memoizable-0.4.2/lib/memoizable/method_builder.rb:116:in `block (2 levels) in create_memoized_method' | |
# ./mutant-freezer.rb:23:in `block (2 levels) in <top (required)>' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-rspec-0.8.2/lib/mutant/integration/rspec.rb:68:in `call' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/env.rb:64:in `block in run_mutation_tests' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/isolation.rb:48:in `call' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/isolation.rb:48:in `block (3 levels) in call' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/isolation.rb:45:in `open' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/isolation.rb:45:in `block (2 levels) in call' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/isolation.rb:44:in `fork' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/isolation.rb:44:in `block in call' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/isolation.rb:41:in `pipe' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/isolation.rb:41:in `call' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/env.rb:62:in `run_mutation_tests' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/env.rb:39:in `kill' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/parallel/worker.rb:64:in `call' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/parallel/worker.rb:64:in `handle_job' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/parallel/worker.rb:47:in `handle' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/parallel/worker.rb:31:in `run' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/parallel/worker.rb:15:in `run' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/parallel/master.rb:49:in `block (2 levels) in run' | |
# /Users/johnbackus/.rvm/gems/ruby-2.2.3/gems/mutant-0.8.5/lib/mutant/actor/env.rb:16:in `block in spawn' | |
Finished in 0.00219 seconds (files took 0.28024 seconds to load) | |
1 example, 1 failure | |
Failed examples: | |
rspec # Foo#bar should not freeze | |
----------------------- | |
Mutant configuration: | |
Matcher: #<Mutant::Matcher::Config match_expressions: [Foo*]> | |
Integration: Mutant::Integration::Rspec | |
Expect Coverage: 100.00% | |
Jobs: 1 | |
Includes: ["."] | |
Requires: ["mutant-freezer"] | |
Subjects: 1 | |
Mutations: 8 | |
Kills: 7 | |
Alive: 1 | |
Runtime: 1.01s | |
Killtime: 0.18s | |
Overhead: 455.89% | |
Coverage: 87.50% | |
Expected: 100.00% |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'adamantium' | |
require 'rspec' | |
class DontFreeze | |
def freeze | |
fail "I said don't freeze me!" | |
end | |
end | |
class Foo | |
include Adamantium | |
def bar | |
DontFreeze.new | |
end | |
memoize :bar, freezer: :noop | |
end | |
RSpec.describe Foo, '#bar' do | |
let(:foo) { described_class.new } | |
it 'should not freeze' do | |
expect(foo.bar).to be_an_instance_of(DontFreeze) | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$ rspec mutant-freezer.rb | |
. | |
Finished in 0.00082 seconds (files took 0.21123 seconds to load) | |
1 example, 0 failures |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment