forked from mbj/mutant
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO
46 lines (38 loc) · 1.9 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Code:
* Test mutant with dynamically created zombie.
* Fix ugly code within default parameter mutations
* Break up lib/mutant/mutator/node/send.rb in class specific files
* Log all warnings throug reporter, so remove random $stderr.puts calls
AST:
* Fix the rubinius AST to allow setting @vcall_style variable in Rubinius::AST::Send nodes.
Mutations:
* Add binary operator specific mutations (YAY, finally reached this point)
* Add some kind of a "do not touch me object" that raises on all messages.
It can be used to make sure each literal value is touched.
* Replace nil or add "do not touch me object" to literal mutations.
* Mutate options on Regexp literals
* Add mutations for dynamic regexp symbol and string literals
* Mutate "def foo; bar; end" to "def foo; self; end"?
* Emit negative and positive mutations
* Mutate Block catch "def foo(&block)" and block pass "foo(&block)"
* Mutate super arguments just like send arguments
* Add timeout to terminate infinite loops
Example of a negative mutation:
Mutations on local variables and arguments prefixed with an underscore would be emitted as
negative mutations that must be alive.
Loader:
* Make sure loader does not change visibility of injected mutants
Killers:
* Move test framework specific stuff to strategy
* Add a general master <=> killer IPC interface. So different strategies of isolation
(fork, vs jruby runtime creation) will work without big impact.
Strategy:
* Aggregate warnings on missing spec files
* Provide "expicit files to kill with" strategy
* Automatically load ./spec/spec_helper.rb for rspec strategies (No need to specify -I and -r anymore)
Matcher:
* Allow matches on attr_reader with literal name argument(s)?
* Allow matches on define_method with literal name argument?
jruby-support:
* Hook melbourne via ffi
* Create a runtime per mutation to kill mutations in isolation