mutant 0.7.9 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +11 -1
  3. data/README.md +5 -12
  4. data/bin/mutant +17 -1
  5. data/config/flay.yml +1 -1
  6. data/config/flog.yml +1 -1
  7. data/config/reek.yml +4 -4
  8. data/config/rubocop.yml +21 -3
  9. data/lib/mutant.rb +15 -61
  10. data/lib/mutant/cli.rb +1 -7
  11. data/lib/mutant/color.rb +2 -2
  12. data/lib/mutant/config.rb +1 -1
  13. data/lib/mutant/expression/method.rb +1 -1
  14. data/lib/mutant/expression/methods.rb +1 -1
  15. data/lib/mutant/expression/namespace.rb +1 -1
  16. data/lib/mutant/mutator/node/send.rb +18 -18
  17. data/lib/mutant/reporter/cli.rb +1 -6
  18. data/lib/mutant/reporter/cli/format.rb +2 -2
  19. data/lib/mutant/reporter/cli/printer.rb +5 -500
  20. data/lib/mutant/reporter/cli/printer/config.rb +32 -0
  21. data/lib/mutant/reporter/cli/printer/env_progress.rb +66 -0
  22. data/lib/mutant/reporter/cli/printer/env_result.rb +23 -0
  23. data/lib/mutant/reporter/cli/printer/mutation_progress_result.rb +37 -0
  24. data/lib/mutant/reporter/cli/printer/mutation_result.rb +151 -0
  25. data/lib/mutant/reporter/cli/printer/status.rb +60 -0
  26. data/lib/mutant/reporter/cli/printer/status_progressive.rb +52 -0
  27. data/lib/mutant/reporter/cli/printer/subject_progress.rb +90 -0
  28. data/lib/mutant/reporter/cli/printer/subject_result.rb +28 -0
  29. data/lib/mutant/reporter/cli/printer/test_result.rb +33 -0
  30. data/lib/mutant/require_highjack.rb +11 -50
  31. data/lib/mutant/version.rb +1 -1
  32. data/lib/mutant/zombifier.rb +79 -37
  33. data/meta/send.rb +1 -1
  34. data/mutant-rspec.gemspec +1 -1
  35. data/mutant.gemspec +3 -3
  36. data/spec/integration/mutant/corpus_spec.rb +2 -2
  37. data/spec/integration/mutant/rspec_spec.rb +5 -15
  38. data/spec/integrations.yml +3 -3
  39. data/spec/spec_helper.rb +1 -0
  40. data/spec/support/corpus.rb +233 -220
  41. data/spec/support/file_system.rb +60 -0
  42. data/spec/support/rb_bug.rb +1 -1
  43. data/spec/support/ruby_vm.rb +82 -0
  44. data/spec/support/shared_context.rb +19 -10
  45. data/spec/unit/mutant/ast_spec.rb +2 -2
  46. data/spec/unit/mutant/cache_spec.rb +22 -0
  47. data/spec/unit/mutant/cli_spec.rb +1 -30
  48. data/spec/unit/mutant/context_spec.rb +1 -0
  49. data/spec/unit/mutant/expression/method_spec.rb +6 -4
  50. data/spec/unit/mutant/parallel/master_spec.rb +1 -1
  51. data/spec/unit/mutant/reporter/cli/printer/config_spec.rb +33 -0
  52. data/spec/unit/mutant/reporter/cli/printer/env_progress_spec.rb +76 -0
  53. data/spec/unit/mutant/reporter/cli/printer/env_result_spec.rb +35 -0
  54. data/spec/unit/mutant/reporter/cli/printer/mutation_progress_result_spec.rb +23 -0
  55. data/spec/unit/mutant/reporter/cli/printer/mutation_result_spec.rb +110 -0
  56. data/spec/unit/mutant/reporter/cli/printer/status_progressive_spec.rb +51 -0
  57. data/spec/unit/mutant/reporter/cli/printer/status_spec.rb +145 -0
  58. data/spec/unit/mutant/reporter/cli/printer/subject_progress_spec.rb +37 -0
  59. data/spec/unit/mutant/reporter/cli/printer/subject_result_spec.rb +37 -0
  60. data/spec/unit/mutant/reporter/cli/printer/test_result_spec.rb +14 -0
  61. data/spec/unit/mutant/reporter/cli/printer_spec.rb +140 -0
  62. data/spec/unit/mutant/reporter/cli_spec.rb +69 -313
  63. data/spec/unit/mutant/reporter/trace_spec.rb +12 -0
  64. data/spec/unit/mutant/require_highjack_spec.rb +25 -28
  65. data/spec/unit/mutant/warning_filter_spec.rb +7 -0
  66. data/spec/unit/mutant/zombifier_spec.rb +120 -0
  67. data/spec/unit/mutant_spec.rb +0 -43
  68. data/test_app/Gemfile.rspec3.3 +6 -0
  69. metadata +46 -17
  70. data/.travis.yml +0 -20
  71. data/lib/mutant/zombifier/file.rb +0 -100
  72. data/spec/integration/mutant/zombie_spec.rb +0 -6
data/.travis.yml DELETED
@@ -1,20 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- script: "bundle exec rake ci"
4
- env:
5
- - TRAVIS=true
6
- rvm:
7
- - '2.0'
8
- - '2.1'
9
- - '2.2'
10
- - rbx
11
- matrix:
12
- allow_failures:
13
- - rvm: rbx
14
- - rvm: '2.0'
15
- notifications:
16
- irc:
17
- channels:
18
- - irc.freenode.org#mutant
19
- on_success: never
20
- on_failure: change
@@ -1,100 +0,0 @@
1
- module Mutant
2
- class Zombifier
3
- # File containing source being zombified
4
- class File
5
- include Adamantium::Flat, Concord::Public.new(:path), AST::Sexp
6
-
7
- # Zombify contents of file
8
- #
9
- # @return [self]
10
- #
11
- # @api private
12
- #
13
- # Probably one of the only valid uses of eval.
14
- #
15
- # rubocop:disable Lint/Eval
16
- #
17
- def zombify(namespace)
18
- $stderr.puts("Zombifying #{path}")
19
- eval(
20
- Unparser.unparse(namespaced_node(namespace)),
21
- TOPLEVEL_BINDING,
22
- path.to_s
23
- )
24
- self
25
- end
26
-
27
- # Find file by logical path
28
- #
29
- # @param [String] logical_name
30
- #
31
- # @return [File]
32
- # if found
33
- #
34
- # @return [nil]
35
- # otherwise
36
- #
37
- # @api private
38
- #
39
- def self.find(logical_name)
40
- file_name = expand_file_name(logical_name)
41
-
42
- $LOAD_PATH.each do |path|
43
- path = Pathname.new(path).join(file_name)
44
- return new(path) if path.file?
45
- end
46
-
47
- $stderr.puts "Cannot find file #{file_name} in $LOAD_PATH"
48
- nil
49
- end
50
-
51
- # Return expanded file name
52
- #
53
- # @param [String] logical_name
54
- #
55
- # @return [nil]
56
- # if no expansion is possible
57
- #
58
- # @return [String]
59
- #
60
- # @api private
61
- #
62
- def self.expand_file_name(logical_name)
63
- case ::File.extname(logical_name)
64
- when '.so'
65
- return
66
- when '.rb'
67
- logical_name
68
- else
69
- "#{logical_name}.rb"
70
- end
71
- end
72
- private_class_method :expand_file_name
73
-
74
- private
75
-
76
- # Return node
77
- #
78
- # @return [Parser::AST::Node]
79
- #
80
- # @api private
81
- #
82
- def node
83
- Parser::CurrentRuby.parse(path.read, path.to_s)
84
- end
85
-
86
- # Return namespaced root
87
- #
88
- # @param [Symbol] namespace
89
- #
90
- # @return [Parser::AST::Node]
91
- #
92
- # @api private
93
- #
94
- def namespaced_node(namespace)
95
- s(:module, s(:const, nil, namespace), node)
96
- end
97
-
98
- end # File
99
- end # Zombifier
100
- end # Mutant
@@ -1,6 +0,0 @@
1
- RSpec.describe 'as a zombie', mutant: false do
2
- specify 'it allows to create zombie from mutant' do
3
- expect { Mutant.zombify }.to change { defined?(Zombie) }.from(nil).to('constant')
4
- expect(Zombie.constants).to include(:Mutant)
5
- end
6
- end