Skip to content

Instantly share code, notes, and snippets.

@tomdalling
Last active August 18, 2020 00:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tomdalling/3f1fc7b2b20c6035023b063e882b3dcc to your computer and use it in GitHub Desktop.
Save tomdalling/3f1fc7b2b20c6035023b063e882b3dcc to your computer and use it in GitHub Desktop.
Mutant environment:
Matcher: #<Mutant::Matcher::Config match_expressions: [C]>
Integration: rspec
Jobs: 8
Includes: []
Requires: ["./c"]
Subjects: 1
Total-Tests: 90
Selected-Tests: 1
Tests/Subject: 1.00 avg
Mutations: 12
C#to_s:/Users/tom/proj/value_semantics/c.rb:1
- rspec:11:./spec/c_spec.rb:1/C #to_s
evil:C#to_s:/Users/tom/proj/value_semantics/c.rb:1:3a20f
@@ -1,4 +1,4 @@
def to_s
- raise(TypeError, "foo")
+ raise(TypeError, self)
end
-----------------------
Killfork exited nonzero. Its result (if any) was ignored.
Process status:
#<Process::Status: pid 21211 exit 1>
Log messages (combined stderr and stdout):
/Users/tom/proj/value_semantics/c.rb:4:in `to_s': TypeError
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb:180:in `to_s'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb:180:in `message'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb:180:in `exception_lines'
from /Users/tom/.gem/ruby/2.7.1/gems/super_diff-0.5.1/lib/super_diff/rspec/monkey_patches.rb:160:in `failure_line_groups'
from /Users/tom/.gem/ruby/2.7.1/gems/super_diff-0.5.1/lib/super_diff/rspec/monkey_patches.rb:106:in `colorized_message_lines'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb:243:in `formatted_message_and_backtrace'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb:88:in `fully_formatted_lines'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb:80:in `fully_formatted'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/notifications.rb:200:in `fully_formatted'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/notifications.rb:114:in `block in fully_formatted_failed_examples'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/notifications.rb:113:in `each'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/notifications.rb:113:in `each_with_index'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/notifications.rb:113:in `fully_formatted_failed_examples'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/base_text_formatter.rb:32:in `dump_failures'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:209:in `block in notify'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:208:in `each'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:208:in `notify'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:178:in `block in finish'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:194:in `close_after'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:174:in `finish'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:76:in `report'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/runner.rb:115:in `run_specs'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-rspec-0.9.5/lib/mutant/integration/rspec.rb:63:in `call'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/env.rb:142:in `block in run_mutation_tests'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:171:in `call'
from /Users/tom/.gem/ruby/2.7.1/gems/procto-0.0.3/lib/procto.rb:62:in `public_send'
from /Users/tom/.gem/ruby/2.7.1/gems/procto-0.0.3/lib/procto.rb:62:in `block in initialize'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:81:in `block in start_child'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:80:in `fork'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:80:in `start_child'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:67:in `call'
from /Users/tom/.gem/ruby/2.7.1/gems/procto-0.0.3/lib/procto.rb:62:in `public_send'
from /Users/tom/.gem/ruby/2.7.1/gems/procto-0.0.3/lib/procto.rb:62:in `block in initialize'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:191:in `block (2 levels) in call'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:32:in `block in with'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `pipe'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `with'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:190:in `block in call'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:32:in `block in with'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `pipe'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `with'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:189:in `call'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/env.rb:136:in `run_mutation_tests'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/env.rb:51:in `kill'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:28:in `call'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:28:in `block in call'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:23:in `loop'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:23:in `call'
Killing the mutation resulted in an integration error.
This is the case when the tests selected for the current mutation
did not produce a test result, but instead an exception was raised.
This may point to the following problems:
* Bug in mutant
* Bug in the ruby interpreter
* Bug in your test suite
* Bug in your test suite under concurrency
The following exception was raised:
```
#<ArgumentError: marshal data too short>
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:107:in `load'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:107:in `read_child_result'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:69:in `call'
/Users/tom/.gem/ruby/2.7.1/gems/procto-0.0.3/lib/procto.rb:62:in `public_send'
/Users/tom/.gem/ruby/2.7.1/gems/procto-0.0.3/lib/procto.rb:62:in `block in initialize'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:191:in `block (2 levels) in call'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:32:in `block in with'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `pipe'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `with'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:190:in `block in call'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:32:in `block in with'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `pipe'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `with'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:189:in `call'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/env.rb:136:in `run_mutation_tests'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/env.rb:51:in `kill'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:28:in `call'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:28:in `block in call'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:23:in `loop'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:23:in `call'
```
-----------------------
Mutant environment:
Matcher: #<Mutant::Matcher::Config match_expressions: [C]>
Integration: rspec
Jobs: 8
Includes: []
Requires: ["./c"]
Subjects: 1
Total-Tests: 90
Selected-Tests: 1
Tests/Subject: 1.00 avg
Mutations: 12
Results: 12
Kills: 11
Alive: 1
Runtime: 0.16s
Killtime: 0.62s
Overhead: -74.76%
Mutations/s: 77.07
Coverage: 91.67%
Mutant environment:
Matcher: #<Mutant::Matcher::Config ignore_expressions: [ValueSemantics::Struct.new] match_expressions: [ValueSemantics*]>
Integration: rspec
Jobs: 8
Includes: ["lib"]
Requires: ["value_semantics"]
Subjects: 44
Total-Tests: 89
Selected-Tests: 89
Tests/Subject: 2.02 avg
Mutations: 1734
progress: 58/1734 alive: 0 runtime: 1.00s killtime: 5.36s mutations/s: 57.76
progress: 98/1734 alive: 0 runtime: 2.02s killtime: 11.28s mutations/s: 48.56
progress: 155/1734 alive: 0 runtime: 3.03s killtime: 16.59s mutations/s: 51.22
progress: 210/1734 alive: 0 runtime: 4.03s killtime: 20.47s mutations/s: 52.09
progress: 257/1734 alive: 0 runtime: 5.04s killtime: 23.67s mutations/s: 51.01
progress: 299/1734 alive: 0 runtime: 6.04s killtime: 27.27s mutations/s: 49.50
progress: 326/1734 alive: 0 runtime: 7.05s killtime: 31.72s mutations/s: 46.26
progress: 350/1734 alive: 0 runtime: 8.05s killtime: 37.10s mutations/s: 43.47
progress: 379/1734 alive: 0 runtime: 9.06s killtime: 41.46s mutations/s: 41.85
progress: 411/1734 alive: 0 runtime: 10.06s killtime: 45.65s mutations/s: 40.84
progress: 444/1734 alive: 0 runtime: 11.07s killtime: 49.28s mutations/s: 40.11
progress: 464/1734 alive: 0 runtime: 12.07s killtime: 54.29s mutations/s: 38.43
progress: 480/1734 alive: 0 runtime: 13.08s killtime: 59.31s mutations/s: 36.70
progress: 496/1734 alive: 0 runtime: 14.08s killtime: 65.10s mutations/s: 35.22
progress: 517/1734 alive: 0 runtime: 15.09s killtime: 70.56s mutations/s: 34.25
progress: 542/1734 alive: 0 runtime: 16.10s killtime: 74.88s mutations/s: 33.66
progress: 563/1734 alive: 0 runtime: 17.11s killtime: 79.55s mutations/s: 32.91
progress: 591/1734 alive: 0 runtime: 18.12s killtime: 83.01s mutations/s: 32.62
progress: 613/1734 alive: 0 runtime: 19.13s killtime: 86.81s mutations/s: 32.05
progress: 639/1734 alive: 0 runtime: 20.13s killtime: 91.70s mutations/s: 31.74
progress: 666/1734 alive: 0 runtime: 21.14s killtime: 93.98s mutations/s: 31.51
progress: 693/1734 alive: 0 runtime: 22.14s killtime: 97.06s mutations/s: 31.30
progress: 715/1734 alive: 0 runtime: 23.15s killtime: 99.94s mutations/s: 30.89
progress: 738/1734 alive: 0 runtime: 24.15s killtime: 104.29s mutations/s: 30.56
progress: 758/1734 alive: 0 runtime: 25.16s killtime: 107.07s mutations/s: 30.13
progress: 776/1734 alive: 0 runtime: 26.17s killtime: 111.56s mutations/s: 29.66
progress: 796/1734 alive: 0 runtime: 27.17s killtime: 115.20s mutations/s: 29.30
progress: 820/1734 alive: 0 runtime: 28.17s killtime: 117.65s mutations/s: 29.10
progress: 844/1734 alive: 0 runtime: 29.18s killtime: 120.09s mutations/s: 28.93
progress: 860/1734 alive: 0 runtime: 30.19s killtime: 123.39s mutations/s: 28.49
progress: 876/1734 alive: 0 runtime: 31.19s killtime: 127.37s mutations/s: 28.08
progress: 895/1734 alive: 0 runtime: 32.19s killtime: 131.67s mutations/s: 27.80
progress: 915/1734 alive: 0 runtime: 33.20s killtime: 136.30s mutations/s: 27.56
progress: 931/1734 alive: 0 runtime: 34.21s killtime: 140.25s mutations/s: 27.22
progress: 947/1734 alive: 1 runtime: 35.21s killtime: 143.98s mutations/s: 26.90
progress: 961/1734 alive: 1 runtime: 36.21s killtime: 146.87s mutations/s: 26.54
progress: 977/1734 alive: 1 runtime: 37.21s killtime: 148.88s mutations/s: 26.25
progress: 989/1734 alive: 1 runtime: 38.22s killtime: 151.53s mutations/s: 25.88
progress: 999/1734 alive: 1 runtime: 39.23s killtime: 157.01s mutations/s: 25.47
progress: 1020/1734 alive: 1 runtime: 40.23s killtime: 163.50s mutations/s: 25.36
progress: 1040/1734 alive: 1 runtime: 41.23s killtime: 165.94s mutations/s: 25.22
progress: 1054/1734 alive: 1 runtime: 42.24s killtime: 169.21s mutations/s: 24.96
progress: 1068/1734 alive: 1 runtime: 43.24s killtime: 172.81s mutations/s: 24.70
progress: 1080/1734 alive: 1 runtime: 44.26s killtime: 175.69s mutations/s: 24.40
progress: 1095/1734 alive: 1 runtime: 45.26s killtime: 177.44s mutations/s: 24.19
progress: 1110/1734 alive: 1 runtime: 46.27s killtime: 179.48s mutations/s: 23.99
progress: 1126/1734 alive: 1 runtime: 47.28s killtime: 181.45s mutations/s: 23.82
progress: 1141/1734 alive: 1 runtime: 48.28s killtime: 183.83s mutations/s: 23.63
progress: 1162/1734 alive: 1 runtime: 49.29s killtime: 186.76s mutations/s: 23.58
progress: 1177/1734 alive: 1 runtime: 50.29s killtime: 188.93s mutations/s: 23.40
progress: 1186/1734 alive: 1 runtime: 51.31s killtime: 191.40s mutations/s: 23.12
progress: 1197/1734 alive: 1 runtime: 52.31s killtime: 197.29s mutations/s: 22.88
progress: 1209/1734 alive: 1 runtime: 53.32s killtime: 202.62s mutations/s: 22.68
progress: 1220/1734 alive: 1 runtime: 54.32s killtime: 206.80s mutations/s: 22.46
progress: 1235/1734 alive: 1 runtime: 55.33s killtime: 211.14s mutations/s: 22.32
progress: 1250/1734 alive: 1 runtime: 56.33s killtime: 214.48s mutations/s: 22.19
progress: 1265/1734 alive: 1 runtime: 57.33s killtime: 217.77s mutations/s: 22.06
progress: 1281/1734 alive: 1 runtime: 58.34s killtime: 221.59s mutations/s: 21.96
progress: 1297/1734 alive: 1 runtime: 59.34s killtime: 225.70s mutations/s: 21.86
progress: 1313/1734 alive: 1 runtime: 60.34s killtime: 229.12s mutations/s: 21.76
progress: 1324/1734 alive: 1 runtime: 61.34s killtime: 231.77s mutations/s: 21.58
progress: 1337/1734 alive: 1 runtime: 62.35s killtime: 235.18s mutations/s: 21.44
progress: 1353/1734 alive: 1 runtime: 63.36s killtime: 239.21s mutations/s: 21.36
progress: 1367/1734 alive: 1 runtime: 64.36s killtime: 242.73s mutations/s: 21.24
progress: 1383/1734 alive: 1 runtime: 65.37s killtime: 245.39s mutations/s: 21.16
progress: 1398/1734 alive: 1 runtime: 66.37s killtime: 247.25s mutations/s: 21.06
progress: 1412/1734 alive: 1 runtime: 67.38s killtime: 250.53s mutations/s: 20.96
progress: 1427/1734 alive: 1 runtime: 68.39s killtime: 254.04s mutations/s: 20.87
progress: 1441/1734 alive: 1 runtime: 69.40s killtime: 256.68s mutations/s: 20.76
progress: 1459/1734 alive: 1 runtime: 70.40s killtime: 258.46s mutations/s: 20.72
progress: 1475/1734 alive: 1 runtime: 71.40s killtime: 260.75s mutations/s: 20.66
progress: 1486/1734 alive: 1 runtime: 72.41s killtime: 263.80s mutations/s: 20.52
progress: 1498/1734 alive: 1 runtime: 73.41s killtime: 268.62s mutations/s: 20.41
progress: 1507/1734 alive: 1 runtime: 74.42s killtime: 271.09s mutations/s: 20.25
progress: 1523/1734 alive: 1 runtime: 75.42s killtime: 274.84s mutations/s: 20.19
progress: 1535/1734 alive: 1 runtime: 76.43s killtime: 277.63s mutations/s: 20.08
progress: 1547/1734 alive: 1 runtime: 77.44s killtime: 280.44s mutations/s: 19.98
progress: 1559/1734 alive: 1 runtime: 78.44s killtime: 283.01s mutations/s: 19.87
progress: 1572/1734 alive: 1 runtime: 79.45s killtime: 285.95s mutations/s: 19.79
progress: 1583/1734 alive: 1 runtime: 80.45s killtime: 288.66s mutations/s: 19.68
progress: 1596/1734 alive: 1 runtime: 81.46s killtime: 291.94s mutations/s: 19.59
progress: 1607/1734 alive: 1 runtime: 82.46s killtime: 294.58s mutations/s: 19.49
progress: 1620/1734 alive: 1 runtime: 83.47s killtime: 298.09s mutations/s: 19.41
progress: 1632/1734 alive: 1 runtime: 84.47s killtime: 300.88s mutations/s: 19.32
progress: 1644/1734 alive: 1 runtime: 85.47s killtime: 304.03s mutations/s: 19.23
progress: 1657/1734 alive: 1 runtime: 86.48s killtime: 307.37s mutations/s: 19.16
progress: 1669/1734 alive: 1 runtime: 87.48s killtime: 309.75s mutations/s: 19.08
progress: 1683/1734 alive: 1 runtime: 88.49s killtime: 312.05s mutations/s: 19.02
progress: 1695/1734 alive: 1 runtime: 89.49s killtime: 313.89s mutations/s: 18.94
progress: 1707/1734 alive: 1 runtime: 90.49s killtime: 316.70s mutations/s: 18.86
progress: 1718/1734 alive: 1 runtime: 91.50s killtime: 319.13s mutations/s: 18.78
progress: 1732/1734 alive: 1 runtime: 92.50s killtime: 321.12s mutations/s: 18.72
ValueSemantics::DSL#HashOf:/Users/tom/proj/value_semantics/lib/value_semantics.rb:403
- rspec:0:./spec/array_coercer_spec.rb:3/ValueSemantics ValueSemantics::ArrayCoercer is frozen
- rspec:1:./spec/array_coercer_spec.rb:7/ValueSemantics ValueSemantics::ArrayCoercer calls #to_a on objects that respond to it
- rspec:2:./spec/array_coercer_spec.rb:11/ValueSemantics ValueSemantics::ArrayCoercer does not affect objects that dont respond to #to_a
- rspec:3:./spec/array_coercer_spec.rb:18/ValueSemantics ValueSemantics::ArrayCoercer with an element coercer applies the element coercer to each element
- rspec:4:./spec/array_of_spec.rb:5/ValueSemantics ValueSemantics::ArrayOf uses the subvalidator for each element in the array
- rspec:5:./spec/array_of_spec.rb:10/ValueSemantics ValueSemantics::ArrayOf does not match anything else
- rspec:6:./spec/array_of_spec.rb:17/ValueSemantics ValueSemantics::ArrayOf is frozen
- rspec:7:./spec/attribute_spec.rb:5/ValueSemantics ValueSemantics::Attribute raises if attempting to use missing default attribute
- rspec:8:./spec/attribute_spec.rb:11/ValueSemantics ValueSemantics::Attribute has default attributes
- rspec:9:./spec/bool_spec.rb:3/ValueSemantics ValueSemantics::Bool matches true and false
- rspec:10:./spec/bool_spec.rb:8/ValueSemantics ValueSemantics::Bool does not match nil or other values
- rspec:11:./spec/dsl_spec.rb:5/ValueSemantics ValueSemantics::DSL turns method calls into attributes
- rspec:12:./spec/dsl_spec.rb:16/ValueSemantics ValueSemantics::DSL does not interfere with existing methods
- rspec:13:./spec/dsl_spec.rb:21/ValueSemantics ValueSemantics::DSL disallows methods that begin with capitals
- rspec:14:./spec/either_spec.rb:5/ValueSemantics ValueSemantics::Either matches any of the subvalidators
- rspec:15:./spec/either_spec.rb:10/ValueSemantics ValueSemantics::Either does not match anything else
- rspec:16:./spec/either_spec.rb:15/ValueSemantics ValueSemantics::Either is frozen
- rspec:17:./spec/hash_of_spec.rb:5/ValueSemantics ValueSemantics::HashOf matches empty hashes
- rspec:18:./spec/hash_of_spec.rb:9/ValueSemantics ValueSemantics::HashOf matches hashes where the key and value validators also match
- rspec:19:./spec/hash_of_spec.rb:13/ValueSemantics ValueSemantics::HashOf does not match hashes where the key validator does not match
- rspec:20:./spec/hash_of_spec.rb:17/ValueSemantics ValueSemantics::HashOf does not match hashes where the value validator does not match
- rspec:21:./spec/hash_of_spec.rb:21/ValueSemantics ValueSemantics::HashOf does not match anything else
- rspec:22:./spec/hash_of_spec.rb:28/ValueSemantics ValueSemantics::HashOf is frozen
- rspec:23:./spec/monkey_patch_spec.rb:30/ValueSemantics.monkey_patch! we can patch an unpatch reliably
- rspec:24:./spec/monkey_patch_spec.rb:41/ValueSemantics.monkey_patch! using `ValueSemantics.monkey_patch!` is disabled by default
- rspec:25:./spec/monkey_patch_spec.rb:51/ValueSemantics.monkey_patch! using `ValueSemantics.monkey_patch!` when enabled makes `value_semantics` class method available to all classes
- rspec:26:./spec/monkey_patch_spec.rb:56/ValueSemantics.monkey_patch! using `ValueSemantics.monkey_patch!` when enabled is class-private
- rspec:27:./spec/monkey_patch_spec.rb:61/ValueSemantics.monkey_patch! using `ValueSemantics.monkey_patch!` when enabled is replaced by the class-public recipe getter after being called
- rspec:28:./spec/monkey_patch_spec.rb:66/ValueSemantics.monkey_patch! using `ValueSemantics.monkey_patch!` when enabled can not be called twice
- rspec:29:./spec/monkey_patch_spec.rb:74/ValueSemantics.monkey_patch! using `ValueSemantics.monkey_patch!` when enabled does not affect modules
- rspec:30:./spec/monkey_patch_spec.rb:85/ValueSemantics.monkey_patch! using `ValueSemantics.monkey_patch!` when enabled does nothing if enabled multiple times
- rspec:31:./spec/monkey_patch_spec.rb:41/ValueSemantics.monkey_patch! using `require 'value_semantics/monkey_patched'` is disabled by default
- rspec:32:./spec/monkey_patch_spec.rb:51/ValueSemantics.monkey_patch! using `require 'value_semantics/monkey_patched'` when enabled makes `value_semantics` class method available to all classes
- rspec:33:./spec/monkey_patch_spec.rb:56/ValueSemantics.monkey_patch! using `require 'value_semantics/monkey_patched'` when enabled is class-private
- rspec:34:./spec/monkey_patch_spec.rb:61/ValueSemantics.monkey_patch! using `require 'value_semantics/monkey_patched'` when enabled is replaced by the class-public recipe getter after being called
- rspec:35:./spec/monkey_patch_spec.rb:66/ValueSemantics.monkey_patch! using `require 'value_semantics/monkey_patched'` when enabled can not be called twice
- rspec:36:./spec/monkey_patch_spec.rb:74/ValueSemantics.monkey_patch! using `require 'value_semantics/monkey_patched'` when enabled does not affect modules
- rspec:37:./spec/monkey_patch_spec.rb:85/ValueSemantics.monkey_patch! using `require 'value_semantics/monkey_patched'` when enabled does nothing if enabled multiple times
- rspec:38:./spec/pattern_matching_spec.rb:4/ValueSemantics Pattern matching integration class with ValueSemantics included deconstructs to a hash
- rspec:39:./spec/pattern_matching_spec.rb:4/ValueSemantics Pattern matching integration ValueSemantics::Struct class deconstructs to a hash
- rspec:40:./spec/struct_spec.rb:10/ValueSemantics ValueSemantics::Struct returns a value class, like Struct.new does
- rspec:41:./spec/struct_spec.rb:16/ValueSemantics ValueSemantics::Struct makes instances that work like normal ValueSemantics objects
- rspec:42:./spec/value_semantics_spec.rb:429/ValueSemantics has a version number
- rspec:43:./spec/value_semantics_spec.rb:19/ValueSemantics initialization supports keyword arguments
- rspec:44:./spec/value_semantics_spec.rb:24/ValueSemantics initialization supports Hash arguments
- rspec:45:./spec/value_semantics_spec.rb:29/ValueSemantics initialization supports any value that responds to #to_h
- rspec:46:./spec/value_semantics_spec.rb:35/ValueSemantics initialization does not mutate hash arguments
- rspec:47:./spec/value_semantics_spec.rb:40/ValueSemantics initialization can not be constructed with attributes missing
- rspec:48:./spec/value_semantics_spec.rb:47/ValueSemantics initialization can not be constructed with undefined attributes
- rspec:49:./spec/value_semantics_spec.rb:56/ValueSemantics initialization can not be constructed with an object that does not respond to #to_h
- rspec:50:./spec/value_semantics_spec.rb:66/ValueSemantics initialization does not intercept errors raised from calling #to_h
- rspec:51:./spec/value_semantics_spec.rb:75/ValueSemantics basic usage has attr readers and ivars
- rspec:52:./spec/value_semantics_spec.rb:83/ValueSemantics basic usage does not define attr writers
- rspec:53:./spec/value_semantics_spec.rb:90/ValueSemantics basic usage has square brackets as a variable attr reader
- rspec:54:./spec/value_semantics_spec.rb:100/ValueSemantics basic usage can do non-destructive updates
- rspec:55:./spec/value_semantics_spec.rb:107/ValueSemantics basic usage can be converted to a hash of attributes
- rspec:56:./spec/value_semantics_spec.rb:113/ValueSemantics basic usage has a human-friendly #inspect string
- rspec:57:./spec/value_semantics_spec.rb:118/ValueSemantics basic usage has nice pp output
- rspec:58:./spec/value_semantics_spec.rb:131/ValueSemantics basic usage has a human-friendly module name
- rspec:59:./spec/value_semantics_spec.rb:136/ValueSemantics basic usage has a frozen recipe
- rspec:60:./spec/value_semantics_spec.rb:156/ValueSemantics default values uses the default if no value is given
- rspec:61:./spec/value_semantics_spec.rb:160/ValueSemantics default values allows the default to be overriden
- rspec:62:./spec/value_semantics_spec.rb:164/ValueSemantics default values does not override nil
- rspec:63:./spec/value_semantics_spec.rb:168/ValueSemantics default values allows procs as default values
- rspec:64:./spec/value_semantics_spec.rb:172/ValueSemantics default values can generate defaults with a proc
- rspec:65:./spec/value_semantics_spec.rb:176/ValueSemantics default values does not allow both `default:` and `default_generator:` options
- rspec:66:./spec/value_semantics_spec.rb:201/ValueSemantics validation accepts values that pass the validator
- rspec:67:./spec/value_semantics_spec.rb:205/ValueSemantics validation rejects values that fail the validator
- rspec:68:./spec/value_semantics_spec.rb:221/ValueSemantics equality defines loose equality between subclasses with #===
- rspec:69:./spec/value_semantics_spec.rb:230/ValueSemantics equality defines strict equality with #eql?
- rspec:70:./spec/value_semantics_spec.rb:238/ValueSemantics equality allows objects to be used as keys in Hash objects
- rspec:71:./spec/value_semantics_spec.rb:246/ValueSemantics equality hashes differently depending on class
- rspec:72:./spec/value_semantics_spec.rb:277/ValueSemantics coercion does not call coercion methods by default
- rspec:73:./spec/value_semantics_spec.rb:282/ValueSemantics coercion calls a class method when coerce: true
- rspec:74:./spec/value_semantics_spec.rb:287/ValueSemantics coercion calls obj.call when coerce: obj
- rspec:75:./spec/value_semantics_spec.rb:292/ValueSemantics coercion coerces default values
- rspec:76:./spec/value_semantics_spec.rb:297/ValueSemantics coercion performs coercion before validation
- rspec:77:./spec/value_semantics_spec.rb:306/ValueSemantics coercion provides a class method for coercing hashes into value objects
- rspec:78:./spec/value_semantics_spec.rb:315/ValueSemantics DSL allows attributes to end with punctuation
- rspec:79:./spec/value_semantics_spec.rb:328/ValueSemantics DSL has an option for default values
- rspec:80:./spec/value_semantics_spec.rb:337/ValueSemantics DSL has a built-in Anything matcher
- rspec:81:./spec/value_semantics_spec.rb:346/ValueSemantics DSL has a built-in Bool matcher
- rspec:82:./spec/value_semantics_spec.rb:355/ValueSemantics DSL has a built-in Either matcher
- rspec:83:./spec/value_semantics_spec.rb:364/ValueSemantics DSL has a built-in ArrayOf matcher
- rspec:84:./spec/value_semantics_spec.rb:373/ValueSemantics DSL has a built-in HashOf matcher
- rspec:85:./spec/value_semantics_spec.rb:382/ValueSemantics DSL raises ArgumentError if the HashOf argument is wrong
- rspec:86:./spec/value_semantics_spec.rb:390/ValueSemantics DSL has an option to call a class method for coercion
- rspec:87:./spec/value_semantics_spec.rb:408/ValueSemantics DSL has a built-in ArrayCoercer coercer
- rspec:88:./spec/value_semantics_spec.rb:419/ValueSemantics DSL provides a way to define methods whose names are invalid Ruby syntax
evil:ValueSemantics::DSL#HashOf:/Users/tom/proj/value_semantics/lib/value_semantics.rb:403:7a29e
@@ -1,7 +1,7 @@
def HashOf(key_validator_to_value_validator)
unless key_validator_to_value_validator.size.equal?(1)
- raise(ArgumentError, "HashOf() takes a hash with one key and one value")
+ raise(ArgumentError, self)
end
HashOf.new(key_validator_to_value_validator.keys.first, key_validator_to_value_validator.values.first)
end
-----------------------
Killfork exited nonzero. Its result (if any) was ignored.
Process status:
#<Process::Status: pid 23270 exit 1>
Log messages (combined stderr and stdout):
/Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb:54:in `to_s': can't convert ValueSemantics::DSL to String (ValueSemantics::DSL#to_str gives Array) (TypeError)
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb:54:in `message'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb:54:in `formatted_cause'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb:41:in `formatted_backtrace'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb:74:in `colorized_formatted_backtrace'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb:243:in `formatted_message_and_backtrace'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb:88:in `fully_formatted_lines'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/exception_presenter.rb:80:in `fully_formatted'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/notifications.rb:200:in `fully_formatted'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/notifications.rb:114:in `block in fully_formatted_failed_examples'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/notifications.rb:113:in `each'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/notifications.rb:113:in `each_with_index'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/notifications.rb:113:in `fully_formatted_failed_examples'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/formatters/base_text_formatter.rb:32:in `dump_failures'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:209:in `block in notify'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:208:in `each'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:208:in `notify'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:178:in `block in finish'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:194:in `close_after'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:174:in `finish'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/reporter.rb:76:in `report'
from /Users/tom/.gem/ruby/2.7.1/gems/rspec-core-3.9.2/lib/rspec/core/runner.rb:115:in `run_specs'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-rspec-0.9.5/lib/mutant/integration/rspec.rb:63:in `call'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/env.rb:142:in `block in run_mutation_tests'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:171:in `call'
from /Users/tom/.gem/ruby/2.7.1/gems/procto-0.0.3/lib/procto.rb:62:in `public_send'
from /Users/tom/.gem/ruby/2.7.1/gems/procto-0.0.3/lib/procto.rb:62:in `block in initialize'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:81:in `block in start_child'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:80:in `fork'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:80:in `start_child'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:67:in `call'
from /Users/tom/.gem/ruby/2.7.1/gems/procto-0.0.3/lib/procto.rb:62:in `public_send'
from /Users/tom/.gem/ruby/2.7.1/gems/procto-0.0.3/lib/procto.rb:62:in `block in initialize'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:191:in `block (2 levels) in call'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:32:in `block in with'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `pipe'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `with'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:190:in `block in call'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:32:in `block in with'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `pipe'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `with'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:189:in `call'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/env.rb:136:in `run_mutation_tests'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/env.rb:51:in `kill'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:28:in `call'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:28:in `block in call'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:23:in `loop'
from /Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:23:in `call'
Killing the mutation resulted in an integration error.
This is the case when the tests selected for the current mutation
did not produce a test result, but instead an exception was raised.
This may point to the following problems:
* Bug in mutant
* Bug in the ruby interpreter
* Bug in your test suite
* Bug in your test suite under concurrency
The following exception was raised:
```
#<ArgumentError: marshal data too short>
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:107:in `load'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:107:in `read_child_result'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:69:in `call'
/Users/tom/.gem/ruby/2.7.1/gems/procto-0.0.3/lib/procto.rb:62:in `public_send'
/Users/tom/.gem/ruby/2.7.1/gems/procto-0.0.3/lib/procto.rb:62:in `block in initialize'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:191:in `block (2 levels) in call'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:32:in `block in with'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `pipe'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `with'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:190:in `block in call'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:32:in `block in with'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `pipe'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:31:in `with'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/isolation/fork.rb:189:in `call'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/env.rb:136:in `run_mutation_tests'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/env.rb:51:in `kill'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:28:in `call'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:28:in `block in call'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:23:in `loop'
/Users/tom/.gem/ruby/2.7.1/gems/mutant-0.9.8/lib/mutant/parallel/worker.rb:23:in `call'
```
-----------------------
Mutant environment:
Matcher: #<Mutant::Matcher::Config ignore_expressions: [ValueSemantics::Struct.new] match_expressions: [ValueSemantics*]>
Integration: rspec
Jobs: 8
Includes: ["lib"]
Requires: ["value_semantics"]
Subjects: 44
Total-Tests: 89
Selected-Tests: 89
Tests/Subject: 2.02 avg
Mutations: 1734
Results: 1734
Kills: 1733
Alive: 1
Runtime: 92.56s
Killtime: 321.56s
Overhead: -71.22%
Mutations/s: 18.73
Coverage: 99.94%
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment