mutest 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (236) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +38 -0
  3. data/{config/rubocop.yml → .rubocop.yml} +80 -183
  4. data/CHANGELOG.md +8 -0
  5. data/Gemfile +2 -3
  6. data/Gemfile.lock +41 -52
  7. data/README.md +16 -0
  8. data/Rakefile +1 -1
  9. data/lib/mutest.rb +5 -4
  10. data/lib/mutest/actor.rb +7 -6
  11. data/lib/mutest/actor/env.rb +3 -3
  12. data/lib/mutest/actor/mailbox.rb +5 -4
  13. data/lib/mutest/actor/receiver.rb +6 -5
  14. data/lib/mutest/actor/sender.rb +5 -4
  15. data/lib/mutest/ast.rb +4 -3
  16. data/lib/mutest/ast/meta.rb +3 -3
  17. data/lib/mutest/ast/meta/const.rb +7 -5
  18. data/lib/mutest/ast/meta/optarg.rb +6 -5
  19. data/lib/mutest/ast/meta/resbody.rb +6 -5
  20. data/lib/mutest/ast/meta/restarg.rb +6 -5
  21. data/lib/mutest/ast/meta/send.rb +8 -20
  22. data/lib/mutest/ast/meta/symbol.rb +6 -5
  23. data/lib/mutest/ast/named_children.rb +5 -5
  24. data/lib/mutest/ast/node_predicates.rb +4 -4
  25. data/lib/mutest/ast/nodes.rb +3 -3
  26. data/lib/mutest/ast/regexp.rb +3 -3
  27. data/lib/mutest/ast/regexp/transformer.rb +19 -11
  28. data/lib/mutest/ast/regexp/transformer/alternative.rb +6 -6
  29. data/lib/mutest/ast/regexp/transformer/character_set.rb +7 -7
  30. data/lib/mutest/ast/regexp/transformer/direct.rb +7 -7
  31. data/lib/mutest/ast/regexp/transformer/options_group.rb +7 -7
  32. data/lib/mutest/ast/regexp/transformer/quantifier.rb +11 -13
  33. data/lib/mutest/ast/regexp/transformer/recursive.rb +7 -7
  34. data/lib/mutest/ast/regexp/transformer/root.rb +6 -6
  35. data/lib/mutest/ast/regexp/transformer/text.rb +7 -7
  36. data/lib/mutest/ast/sexp.rb +3 -3
  37. data/lib/mutest/ast/types.rb +8 -6
  38. data/lib/mutest/cli.rb +5 -3
  39. data/lib/mutest/color.rb +4 -3
  40. data/lib/mutest/config.rb +4 -3
  41. data/lib/mutest/context.rb +4 -3
  42. data/lib/mutest/diff.rb +5 -3
  43. data/lib/mutest/env.rb +5 -5
  44. data/lib/mutest/env/bootstrap.rb +7 -5
  45. data/lib/mutest/expression.rb +7 -5
  46. data/lib/mutest/expression/method.rb +4 -4
  47. data/lib/mutest/expression/methods.rb +4 -4
  48. data/lib/mutest/expression/namespace.rb +9 -8
  49. data/lib/mutest/expression/parser.rb +9 -8
  50. data/lib/mutest/integration.rb +5 -3
  51. data/lib/mutest/integration/null.rb +3 -3
  52. data/lib/mutest/isolation.rb +2 -2
  53. data/lib/mutest/isolation/fork.rb +4 -4
  54. data/lib/mutest/isolation/none.rb +4 -4
  55. data/lib/mutest/loader.rb +2 -2
  56. data/lib/mutest/matcher.rb +4 -3
  57. data/lib/mutest/matcher/chain.rb +3 -3
  58. data/lib/mutest/matcher/compiler.rb +7 -5
  59. data/lib/mutest/matcher/config.rb +5 -4
  60. data/lib/mutest/matcher/filter.rb +3 -3
  61. data/lib/mutest/matcher/method.rb +13 -13
  62. data/lib/mutest/matcher/method/instance.rb +6 -6
  63. data/lib/mutest/matcher/method/singleton.rb +5 -5
  64. data/lib/mutest/matcher/methods.rb +7 -6
  65. data/lib/mutest/matcher/namespace.rb +3 -3
  66. data/lib/mutest/matcher/null.rb +3 -3
  67. data/lib/mutest/matcher/scope.rb +3 -3
  68. data/lib/mutest/matcher/static.rb +3 -3
  69. data/lib/mutest/meta.rb +4 -4
  70. data/lib/mutest/meta/example.rb +5 -4
  71. data/lib/mutest/meta/example/dsl.rb +12 -11
  72. data/lib/mutest/meta/example/verification.rb +7 -6
  73. data/lib/mutest/mutation.rb +7 -6
  74. data/lib/mutest/mutator.rb +6 -6
  75. data/lib/mutest/mutator/node.rb +19 -7
  76. data/lib/mutest/mutator/node/and_asgn.rb +4 -4
  77. data/lib/mutest/mutator/node/argument.rb +6 -5
  78. data/lib/mutest/mutator/node/arguments.rb +18 -5
  79. data/lib/mutest/mutator/node/begin.rb +4 -4
  80. data/lib/mutest/mutator/node/binary.rb +4 -4
  81. data/lib/mutest/mutator/node/block.rb +6 -5
  82. data/lib/mutest/mutator/node/block_pass.rb +4 -4
  83. data/lib/mutest/mutator/node/break.rb +4 -4
  84. data/lib/mutest/mutator/node/case.rb +6 -4
  85. data/lib/mutest/mutator/node/class.rb +4 -4
  86. data/lib/mutest/mutator/node/conditional_loop.rb +4 -4
  87. data/lib/mutest/mutator/node/const.rb +4 -4
  88. data/lib/mutest/mutator/node/define.rb +6 -6
  89. data/lib/mutest/mutator/node/defined.rb +4 -4
  90. data/lib/mutest/mutator/node/dstr.rb +4 -4
  91. data/lib/mutest/mutator/node/dsym.rb +4 -4
  92. data/lib/mutest/mutator/node/generic.rb +5 -4
  93. data/lib/mutest/mutator/node/if.rb +6 -4
  94. data/lib/mutest/mutator/node/index.rb +128 -0
  95. data/lib/mutest/mutator/node/kwbegin.rb +4 -4
  96. data/lib/mutest/mutator/node/literal.rb +4 -4
  97. data/lib/mutest/mutator/node/literal/array.rb +8 -6
  98. data/lib/mutest/mutator/node/literal/boolean.rb +5 -5
  99. data/lib/mutest/mutator/node/literal/fixnum.rb +5 -5
  100. data/lib/mutest/mutator/node/literal/float.rb +5 -5
  101. data/lib/mutest/mutator/node/literal/hash.rb +6 -6
  102. data/lib/mutest/mutator/node/literal/nil.rb +5 -5
  103. data/lib/mutest/mutator/node/literal/range.rb +5 -5
  104. data/lib/mutest/mutator/node/literal/regex.rb +5 -5
  105. data/lib/mutest/mutator/node/literal/string.rb +5 -5
  106. data/lib/mutest/mutator/node/literal/symbol.rb +5 -5
  107. data/lib/mutest/mutator/node/masgn.rb +4 -4
  108. data/lib/mutest/mutator/node/match_current_line.rb +4 -4
  109. data/lib/mutest/mutator/node/mlhs.rb +4 -4
  110. data/lib/mutest/mutator/node/named_value/access.rb +6 -6
  111. data/lib/mutest/mutator/node/named_value/constant_assignment.rb +6 -5
  112. data/lib/mutest/mutator/node/named_value/variable_assignment.rb +5 -5
  113. data/lib/mutest/mutator/node/next.rb +4 -4
  114. data/lib/mutest/mutator/node/nthref.rb +4 -4
  115. data/lib/mutest/mutator/node/op_asgn.rb +4 -4
  116. data/lib/mutest/mutator/node/or_asgn.rb +5 -4
  117. data/lib/mutest/mutator/node/procarg_zero.rb +45 -0
  118. data/lib/mutest/mutator/node/regexp.rb +6 -6
  119. data/lib/mutest/mutator/node/regexp/alternation_meta.rb +5 -5
  120. data/lib/mutest/mutator/node/regexp/capture_group.rb +5 -5
  121. data/lib/mutest/mutator/node/regexp/character_type.rb +5 -5
  122. data/lib/mutest/mutator/node/regexp/end_of_line_anchor.rb +5 -5
  123. data/lib/mutest/mutator/node/regexp/end_of_string_or_before_end_of_line_anchor.rb +5 -5
  124. data/lib/mutest/mutator/node/regexp/one_or_more.rb +5 -5
  125. data/lib/mutest/mutator/node/regexp/zero_or_more.rb +5 -5
  126. data/lib/mutest/mutator/node/regopt.rb +4 -4
  127. data/lib/mutest/mutator/node/resbody.rb +6 -4
  128. data/lib/mutest/mutator/node/rescue.rb +6 -4
  129. data/lib/mutest/mutator/node/return.rb +5 -4
  130. data/lib/mutest/mutator/node/send.rb +6 -34
  131. data/lib/mutest/mutator/node/send/attribute_assignment.rb +5 -5
  132. data/lib/mutest/mutator/node/send/binary.rb +5 -5
  133. data/lib/mutest/mutator/node/send/conditional.rb +5 -5
  134. data/lib/mutest/mutator/node/splat.rb +4 -4
  135. data/lib/mutest/mutator/node/super.rb +4 -4
  136. data/lib/mutest/mutator/node/when.rb +4 -4
  137. data/lib/mutest/mutator/node/yield.rb +4 -4
  138. data/lib/mutest/mutator/node/zsuper.rb +4 -4
  139. data/lib/mutest/mutator/util.rb +3 -3
  140. data/lib/mutest/mutator/util/array.rb +6 -6
  141. data/lib/mutest/mutator/util/symbol.rb +4 -4
  142. data/lib/mutest/parallel.rb +16 -12
  143. data/lib/mutest/parallel/master.rb +4 -4
  144. data/lib/mutest/parallel/source.rb +6 -5
  145. data/lib/mutest/parallel/worker.rb +6 -5
  146. data/lib/mutest/parser.rb +4 -3
  147. data/lib/mutest/registry.rb +6 -5
  148. data/lib/mutest/reporter.rb +2 -2
  149. data/lib/mutest/reporter/cli.rb +3 -3
  150. data/lib/mutest/reporter/cli/format.rb +9 -8
  151. data/lib/mutest/reporter/cli/printer.rb +8 -8
  152. data/lib/mutest/reporter/cli/printer/config.rb +5 -5
  153. data/lib/mutest/reporter/cli/printer/env_progress.rb +16 -16
  154. data/lib/mutest/reporter/cli/printer/env_result.rb +5 -5
  155. data/lib/mutest/reporter/cli/printer/mutation_progress_result.rb +5 -5
  156. data/lib/mutest/reporter/cli/printer/mutation_result.rb +5 -5
  157. data/lib/mutest/reporter/cli/printer/status.rb +6 -5
  158. data/lib/mutest/reporter/cli/printer/status_progressive.rb +5 -5
  159. data/lib/mutest/reporter/cli/printer/subject_progress.rb +5 -5
  160. data/lib/mutest/reporter/cli/printer/subject_result.rb +5 -5
  161. data/lib/mutest/reporter/cli/printer/test_result.rb +5 -5
  162. data/lib/mutest/reporter/cli/tput.rb +6 -5
  163. data/lib/mutest/reporter/null.rb +3 -3
  164. data/lib/mutest/reporter/sequence.rb +3 -3
  165. data/lib/mutest/repository.rb +9 -7
  166. data/lib/mutest/require_highjack.rb +2 -2
  167. data/lib/mutest/requirer.rb +2 -2
  168. data/lib/mutest/result.rb +18 -12
  169. data/lib/mutest/runner.rb +6 -3
  170. data/lib/mutest/runner/sink.rb +3 -3
  171. data/lib/mutest/scope.rb +2 -2
  172. data/lib/mutest/selector.rb +4 -3
  173. data/lib/mutest/selector/expression.rb +3 -3
  174. data/lib/mutest/source_file.rb +6 -5
  175. data/lib/mutest/subject.rb +5 -3
  176. data/lib/mutest/subject/method.rb +3 -3
  177. data/lib/mutest/subject/method/instance.rb +5 -5
  178. data/lib/mutest/subject/method/singleton.rb +4 -4
  179. data/lib/mutest/test.rb +4 -3
  180. data/lib/mutest/util.rb +3 -3
  181. data/lib/mutest/version.rb +2 -2
  182. data/lib/mutest/warning_filter.rb +3 -3
  183. data/lib/mutest/zombifier.rb +5 -4
  184. data/meta/block.rb +22 -3
  185. data/meta/case.rb +29 -1
  186. data/meta/index.rb +132 -0
  187. data/meta/indexasgn.rb +42 -0
  188. data/meta/lambda.rb +17 -0
  189. data/meta/send.rb +5 -139
  190. data/mutest-rspec.gemspec +1 -1
  191. data/mutest.gemspec +11 -12
  192. data/spec/integration/mutest/rspec_spec.rb +1 -1
  193. data/spec/shared/framework_integration_behavior.rb +1 -1
  194. data/spec/shared/idempotent_method_behavior.rb +2 -1
  195. data/spec/spec_helper.rb +5 -5
  196. data/spec/support/compress_helper.rb +2 -1
  197. data/spec/support/corpus.rb +12 -8
  198. data/spec/support/fake_actor.rb +19 -14
  199. data/spec/support/file_system.rb +10 -7
  200. data/spec/support/ice_nine_config.rb +3 -3
  201. data/spec/support/ruby_vm.rb +10 -11
  202. data/spec/support/shared_context.rb +1 -1
  203. data/spec/support/test_app.rb +1 -1
  204. data/spec/support/warning.rb +8 -7
  205. data/spec/support/xspec.rb +18 -17
  206. data/spec/unit/mutest/actor/binding_spec.rb +1 -0
  207. data/spec/unit/mutest/ast/meta/optarg_spec.rb +1 -0
  208. data/spec/unit/mutest/ast/meta/send/proc_predicate_spec.rb +1 -1
  209. data/spec/unit/mutest/ast/meta/send/receiver_possible_top_level_const_predicate_spec.rb +1 -1
  210. data/spec/unit/mutest/ast/meta/send_spec.rb +14 -18
  211. data/spec/unit/mutest/ast/regexp_spec.rb +4 -3
  212. data/spec/unit/mutest/ast_spec.rb +1 -1
  213. data/spec/unit/mutest/cli_spec.rb +15 -15
  214. data/spec/unit/mutest/env/bootstrap_spec.rb +1 -1
  215. data/spec/unit/mutest/integration_spec.rb +1 -0
  216. data/spec/unit/mutest/isolation/none_spec.rb +1 -1
  217. data/spec/unit/mutest/matcher/config_spec.rb +1 -0
  218. data/spec/unit/mutest/mutator/node_spec.rb +1 -1
  219. data/spec/unit/mutest/parallel/master_spec.rb +3 -3
  220. data/spec/unit/mutest/reporter/cli/printer_spec.rb +2 -0
  221. data/spec/unit/mutest/reporter/cli/tput_spec.rb +2 -0
  222. data/spec/unit/mutest/reporter/cli_spec.rb +2 -0
  223. data/spec/unit/mutest/repository/diff_spec.rb +1 -1
  224. data/spec/unit/mutest/runner_spec.rb +1 -1
  225. data/spec/unit/mutest/subject_spec.rb +1 -1
  226. data/spec/unit/mutest/warning_filter_spec.rb +2 -3
  227. data/spec/unit/mutest/zombifier_spec.rb +1 -1
  228. data/test_app/Gemfile.rspec3.8 +7 -0
  229. metadata +67 -68
  230. data/.buildkite/hooks/pre-command +0 -3
  231. data/.buildkite/pipeline.yml +0 -38
  232. data/.gitmodules +0 -3
  233. data/circle.yml +0 -10
  234. data/config/triage.yml +0 -2
  235. data/config/yardstick.yml +0 -2
  236. data/lib/mutest/mutator/node/send/index.rb +0 -47
@@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.extra_rdoc_files = %w[LICENSE]
17
17
 
18
18
  gem.add_runtime_dependency('mutest', "~> #{gem.version}")
19
- gem.add_runtime_dependency('rspec-core', '>= 3.4.0', '< 3.8.0')
19
+ gem.add_runtime_dependency('rspec-core', '>= 3.4.0', '< 3.9.0')
20
20
 
21
21
  gem.add_development_dependency('bundler', '~> 1.3', '>= 1.3.5')
22
22
  end
@@ -1,6 +1,5 @@
1
1
  require File.expand_path('../lib/mutest/version', __FILE__)
2
2
 
3
- # rubocop:disable Metrics/BlockLength
4
3
  Gem::Specification.new do |gem|
5
4
  gem.name = 'mutest'
6
5
  gem.version = Mutest::VERSION.dup
@@ -22,21 +21,21 @@ Gem::Specification.new do |gem|
22
21
  gem.extra_rdoc_files = %w[LICENSE]
23
22
  gem.executables = %w[mutest]
24
23
 
25
- gem.required_ruby_version = '>= 2.1'
24
+ gem.required_ruby_version = '>= 2.3'
26
25
 
27
- gem.add_runtime_dependency('parser', '>= 2.5.0.1', '< 2.6')
28
- gem.add_runtime_dependency('ast', '~> 2.2')
29
- gem.add_runtime_dependency('diff-lcs', '~> 1.2')
30
- gem.add_runtime_dependency('parallel', '~> 1.3')
31
- gem.add_runtime_dependency('morpher', '~> 0.2.6')
32
- gem.add_runtime_dependency('procto', '~> 0.0.2')
33
26
  gem.add_runtime_dependency('abstract_type', '~> 0.0.7')
34
- gem.add_runtime_dependency('unparser', '~> 0.2.5')
35
- gem.add_runtime_dependency('ice_nine', '~> 0.11.1')
36
27
  gem.add_runtime_dependency('adamantium', '~> 0.2.0')
37
- gem.add_runtime_dependency('memoizable', '~> 0.4.2')
38
- gem.add_runtime_dependency('equalizer', '~> 0.0.9')
39
28
  gem.add_runtime_dependency('anima', '~> 0.3.0')
29
+ gem.add_runtime_dependency('ast', '~> 2.2')
40
30
  gem.add_runtime_dependency('concord', '~> 0.1.5')
31
+ gem.add_runtime_dependency('diff-lcs', '~> 1.2')
32
+ gem.add_runtime_dependency('equalizer', '~> 0.0.9')
33
+ gem.add_runtime_dependency('ice_nine', '~> 0.11.1')
34
+ gem.add_runtime_dependency('memoizable', '~> 0.4.2')
35
+ gem.add_runtime_dependency('morpher', '~> 0.2.6')
36
+ gem.add_runtime_dependency('parallel', '~> 1.3')
37
+ gem.add_runtime_dependency('parser', '>= 2.5.0.1', '< 2.6')
38
+ gem.add_runtime_dependency('procto', '~> 0.0.2')
41
39
  gem.add_runtime_dependency('regexp_parser', '~> 0.4.9')
40
+ gem.add_runtime_dependency('unparser', '~> 0.4.2')
42
41
  end
@@ -1,7 +1,7 @@
1
1
  RSpec.describe 'rspec integration', mutest: false do
2
2
  let(:base_cmd) { 'bundle exec mutest -I lib --require test_app --use rspec' }
3
3
 
4
- %w[3.4 3.5 3.6 3.7].each do |version|
4
+ %w[3.4 3.5 3.6 3.7 3.8].each do |version|
5
5
  context "RSpec #{version}" do
6
6
  let(:gemfile) { "Gemfile.rspec#{version}" }
7
7
 
@@ -2,7 +2,7 @@ RSpec.shared_examples_for 'framework integration' do
2
2
  around do |example|
3
3
  Bundler.with_clean_env do
4
4
  Dir.chdir(TestApp.root) do
5
- Kernel.system("bundle install --gemfile=#{gemfile}") || fail('Bundle install failed!')
5
+ Kernel.system("bundle install --gemfile=#{gemfile}") || raise('Bundle install failed!')
6
6
  ENV['BUNDLE_GEMFILE'] = gemfile
7
7
  example.run
8
8
  end
@@ -1,7 +1,8 @@
1
1
  RSpec.shared_examples_for 'an idempotent method' do
2
2
  it 'is idempotent' do
3
3
  first = subject
4
- fail 'RSpec not configured for threadsafety' unless RSpec.configuration.threadsafe?
4
+ raise 'RSpec not configured for threadsafety' unless RSpec.configuration.threadsafe?
5
+
5
6
  mutex = __memoized.instance_variable_get(:@mutex)
6
7
  memoized = __memoized.instance_variable_get(:@memoized)
7
8
  mutex.synchronize { memoized.delete(:subject) }
@@ -32,7 +32,7 @@ module MutestSpec
32
32
  SPECS_PATH = Pathname.new(__dir__).expand_path.freeze
33
33
  PROJECT_ROOT = SPECS_PATH.parent.freeze
34
34
  UNIT_TEST_TIMOUT = 10.0
35
- end # MutestSpec
35
+ end
36
36
 
37
37
  Dir.glob(MutestSpec::SPECS_PATH.join('{shared,support}/**/*.rb')).each(&method(:require))
38
38
 
@@ -43,7 +43,7 @@ require 'test_app'
43
43
  module Fixtures
44
44
  TEST_CONFIG = Mutest::Config::DEFAULT.with(reporter: Mutest::Reporter::Null.new)
45
45
  TEST_ENV = Mutest::Env::Bootstrap.(TEST_CONFIG)
46
- end # Fixtures
46
+ end
47
47
 
48
48
  module ParserHelper
49
49
  def generate(node)
@@ -51,19 +51,19 @@ module ParserHelper
51
51
  end
52
52
 
53
53
  def parse(string)
54
- Unparser::Preprocessor.run(Parser::CurrentRuby.parse(string))
54
+ Unparser::Preprocessor.run(Unparser.parse(string))
55
55
  end
56
56
 
57
57
  def parse_expression(string)
58
58
  Mutest::Config::DEFAULT.expression_parser.(string)
59
59
  end
60
- end # ParserHelper
60
+ end
61
61
 
62
62
  module MessageHelper
63
63
  def message(*arguments)
64
64
  Mutest::Actor::Message.new(*arguments)
65
65
  end
66
- end # MessageHelper
66
+ end
67
67
 
68
68
  RSpec.configure do |config|
69
69
  config.extend(SharedContext)
@@ -3,7 +3,8 @@ module CompressHelper
3
3
  lines = string.lines
4
4
  match = /\A( *)/.match(lines.first)
5
5
  return string unless match
6
+
6
7
  whitespaces = match[1].to_s.length
7
8
  lines.map { |line| line[whitespaces..-1] }.join
8
9
  end
9
- end # CompressHelper
10
+ end
@@ -31,7 +31,7 @@ module MutestSpec
31
31
 
32
32
  DEFAULT_MUTATION_COUNT = 0
33
33
 
34
- include Adamantium, Anima.new(
34
+ include Anima.new(
35
35
  :expected_errors,
36
36
  :mutation_coverage,
37
37
  :mutation_generation,
@@ -40,6 +40,7 @@ module MutestSpec
40
40
  :repo_uri,
41
41
  :repo_ref
42
42
  )
43
+ include Adamantium
43
44
 
44
45
  # Verify mutation coverage
45
46
  #
@@ -95,6 +96,7 @@ module MutestSpec
95
96
  # @return [self]
96
97
  def checkout
97
98
  return self if noinstall?
99
+
98
100
  TMP.mkdir unless TMP.directory?
99
101
 
100
102
  if repo_path.exist?
@@ -158,6 +160,7 @@ module MutestSpec
158
160
  # @return [undefined]
159
161
  def install_mutest
160
162
  return if noinstall?
163
+
161
164
  relative = ROOT.relative_path_from(repo_path)
162
165
  repo_path.join('Gemfile').open('a') do |file|
163
166
  file << "gem 'mutest', path: '#{relative}'\n"
@@ -241,7 +244,7 @@ module MutestSpec
241
244
  if block_given?
242
245
  yield
243
246
  else
244
- fail "System command failed!: #{arguments.join(' ')}"
247
+ raise "System command failed!: #{arguments.join(' ')}"
245
248
  end
246
249
  end
247
250
 
@@ -253,9 +256,10 @@ module MutestSpec
253
256
  def initialize(*error_info)
254
257
  super(MESSAGE % error_info)
255
258
  end
256
- end # UnnecessaryExpectation
259
+ end
257
260
 
258
- include Concord.new(:map), Adamantium
261
+ include Adamantium
262
+ include Concord.new(:map)
259
263
 
260
264
  # Assert that we expect to encounter the provided exception for this path
261
265
  #
@@ -295,7 +299,7 @@ module MutestSpec
295
299
  def to_h
296
300
  map
297
301
  end
298
- end # ErrorWhitelist
302
+ end
299
303
 
300
304
  LOADER =
301
305
  Morpher.build do
@@ -326,6 +330,6 @@ module MutestSpec
326
330
  end
327
331
 
328
332
  ALL = LOADER.call(YAML.load_file(ROOT.join('spec', 'integrations.yml')))
329
- end # Project
330
- end # Corpus
331
- end # MutestSpec
333
+ end
334
+ end
335
+ end
@@ -11,13 +11,15 @@ module FakeActor
11
11
  end
12
12
 
13
13
  def verify(other)
14
- fail "Got:\n#{other.inspect}\nExpected:\n#{inspect}" unless eql?(other)
15
- block.call(other.message) if block
14
+ raise "Got:\n#{other.inspect}\nExpected:\n#{inspect}" unless eql?(other)
15
+
16
+ block&.call(other.message)
16
17
  end
17
- end # Expectation
18
+ end
18
19
 
19
20
  class MessageSequence
20
- include Adamantium::Flat, Concord::Public.new(:messages)
21
+ include Concord::Public.new(:messages)
22
+ include Adamantium::Flat
21
23
 
22
24
  def self.new
23
25
  super([])
@@ -29,23 +31,26 @@ module FakeActor
29
31
  end
30
32
 
31
33
  def sending(expectation)
32
- fail "Unexpected send: #{expectation.inspect}" if messages.empty?
34
+ raise "Unexpected send: #{expectation.inspect}" if messages.empty?
35
+
33
36
  expected = messages.shift
34
37
  expected.verify(expectation)
35
38
  self
36
39
  end
37
40
 
38
41
  def receiving(name)
39
- fail "No message to read for #{name.inspect}" if messages.empty?
42
+ raise "No message to read for #{name.inspect}" if messages.empty?
43
+
40
44
  expected = messages.shift
41
- fail "Unexpected message #{expected.inspect} for #{name.inspect}" unless expected.name.eql?(name)
45
+ raise "Unexpected message #{expected.inspect} for #{name.inspect}" unless expected.name.eql?(name)
46
+
42
47
  expected.message
43
48
  end
44
49
 
45
50
  def consumed?
46
51
  messages.empty?
47
52
  end
48
- end # MessageSequence
53
+ end
49
54
 
50
55
  class Env
51
56
  include Concord.new(:messages, :mailbox_names)
@@ -68,10 +73,10 @@ module FakeActor
68
73
 
69
74
  def next_name
70
75
  @mailbox_names.shift.tap do |name|
71
- name or fail 'Tried to spawn actor when no name available'
76
+ name or raise 'Tried to spawn actor when no name available'
72
77
  end
73
78
  end
74
- end # Env
79
+ end
75
80
 
76
81
  class Mailbox
77
82
  include Concord.new(:name, :messages)
@@ -87,7 +92,7 @@ module FakeActor
87
92
  def bind(sender)
88
93
  Mutest::Actor::Binding.new(self, sender)
89
94
  end
90
- end # Mailbox
95
+ end
91
96
 
92
97
  class Sender
93
98
  include Concord.new(:name, :messages)
@@ -95,7 +100,7 @@ module FakeActor
95
100
  def call(message)
96
101
  messages.sending(Expectation.new(name, message))
97
102
  end
98
- end # Sender
103
+ end
99
104
 
100
105
  class Receiver
101
106
  include Concord::Public.new(:name, :messages)
@@ -103,5 +108,5 @@ module FakeActor
103
108
  def call
104
109
  messages.receiving(name)
105
110
  end
106
- end # Receiver
107
- end # FakeActor
111
+ end
112
+ end
@@ -6,7 +6,8 @@ module MutestSpec
6
6
  requires: []
7
7
  )
8
8
 
9
- include Adamantium, Anima.new(*DEFAULTS.keys)
9
+ include Anima.new(*DEFAULTS.keys)
10
+ include Adamantium
10
11
 
11
12
  def self.new(attributes = DEFAULTS)
12
13
  super(DEFAULTS.merge(attributes))
@@ -15,10 +16,11 @@ module MutestSpec
15
16
  DOES_NOT_EXIST = new
16
17
 
17
18
  alias_method :file?, :file
18
- end # FileState
19
+ end
19
20
 
20
21
  class FakePathname
21
- include Adamantium, Concord.new(:file_system, :pathname)
22
+ include Concord.new(:file_system, :pathname)
23
+ include Adamantium
22
24
 
23
25
  def join(*arguments)
24
26
  self.class.new(
@@ -44,10 +46,11 @@ module MutestSpec
44
46
  def state
45
47
  file_system.state(pathname.to_s)
46
48
  end
47
- end # FakePathname
49
+ end
48
50
 
49
51
  class FileSystem
50
- include Adamantium, Concord.new(:file_states)
52
+ include Concord.new(:file_states)
53
+ include Adamantium
51
54
 
52
55
  def state(filename)
53
56
  file_states.fetch(filename, FileState::DOES_NOT_EXIST)
@@ -56,5 +59,5 @@ module MutestSpec
56
59
  def path(filename)
57
60
  FakePathname.new(self, Pathname.new(filename))
58
61
  end
59
- end # FileSystem
60
- end # MutestSpec
62
+ end
63
+ end
@@ -3,6 +3,6 @@ require 'ice_nine'
3
3
  module IceNine
4
4
  class Freezer
5
5
  class RSpec < NoFreeze
6
- end # RSpec
7
- end # Freezer
8
- end # IceNine
6
+ end
7
+ end
8
+ end
@@ -8,15 +8,16 @@ module MutestSpec
8
8
  # An event being observed by the VM handlers
9
9
  class EventObservation
10
10
  include Concord::Public.new(:type, :payload)
11
- end # EventObservation
11
+ end
12
12
 
13
13
  # An event being expected, can advance the VM
14
14
  class EventExpectation
15
- include AbstractType, Anima.new(
15
+ include Anima.new(
16
16
  :expected_payload,
17
17
  :trigger_requires,
18
18
  :return_value
19
19
  )
20
+ include AbstractType
20
21
 
21
22
  DEFAULTS = IceNine.deep_freeze(trigger_requires: [])
22
23
 
@@ -25,9 +26,7 @@ module MutestSpec
25
26
  end
26
27
 
27
28
  def handle(vm, observation)
28
- unless match?(observation)
29
- fail "Unexpected event observation: #{observation.inspect}, expected #{inspect}"
30
- end
29
+ raise "Unexpected event observation: #{observation.inspect}, expected #{inspect}" unless match?(observation)
31
30
 
32
31
  trigger_requires.each(&vm.method(:require))
33
32
 
@@ -42,12 +41,12 @@ module MutestSpec
42
41
 
43
42
  # Expectation and advance on require calls
44
43
  class Require < self
45
- end # Require
44
+ end
46
45
 
47
46
  # Expectation and advance on eval calls
48
47
  class Eval < self
49
- end # Eval
50
- end # EventExpectation
48
+ end
49
+ end
51
50
 
52
51
  # A fake implementation of Kernel#require
53
52
  def require(logical_name)
@@ -74,9 +73,9 @@ module MutestSpec
74
73
  private
75
74
 
76
75
  def handle_event(observation)
77
- fail "Unexpected event: #{observation.type} / #{observation.payload}" if expected_events.empty?
76
+ raise "Unexpected event: #{observation.type} / #{observation.payload}" if expected_events.empty?
78
77
 
79
78
  expected_events.slice!(0).handle(self, observation).return_value
80
79
  end
81
- end # RubyVM
82
- end # MutestSpec
80
+ end
81
+ end
@@ -122,4 +122,4 @@ module SharedContext
122
122
  )
123
123
  end
124
124
  end
125
- end # SharedContext
125
+ end
@@ -2,4 +2,4 @@ module TestApp
2
2
  def self.root
3
3
  File.expand_path('../../../test_app', __FILE__)
4
4
  end
5
- end # TestApp
5
+ end
@@ -17,7 +17,7 @@ module MutestSpec
17
17
  def self.assert_no_warnings
18
18
  return if EXTRACTOR.warnings.empty?
19
19
 
20
- fail UnexpectedWarnings, EXTRACTOR.warnings.to_a
20
+ raise UnexpectedWarnings, EXTRACTOR.warnings.to_a
21
21
  end
22
22
 
23
23
  class UnexpectedWarnings < StandardError
@@ -26,12 +26,13 @@ module MutestSpec
26
26
  def initialize(warnings)
27
27
  super(MSG % warnings.join("\n"))
28
28
  end
29
- end # UnexpectedWarnings
29
+ end
30
30
 
31
31
  class Extractor < DelegateClass(IO)
32
- PATTERN = /\A(?:.+):(?:\d+): warning: (?:.+)\n\z/
32
+ PATTERN = /\A(?:.+):(?:\d+): warning: (?:.+)\n\z/.freeze
33
33
 
34
- include Equalizer.new(:whitelist, :seen, :io), Memoizable
34
+ include Memoizable
35
+ include Equalizer.new(:whitelist, :seen, :io)
35
36
 
36
37
  def initialize(io, whitelist)
37
38
  @whitelist = whitelist
@@ -63,11 +64,11 @@ module MutestSpec
63
64
  end
64
65
 
65
66
  attr_reader :whitelist, :seen, :io
66
- end # Extractor
67
+ end
67
68
 
68
69
  warnings = Pathname.new(__dir__).join('warnings.yml').freeze
69
70
  whitelist = IceNine.deep_freeze(YAML.safe_load(warnings.read))
70
71
 
71
72
  EXTRACTOR = Extractor.new(STDERR, whitelist)
72
- end # Warning
73
- end # MutestSpec
73
+ end
74
+ end