mutiny 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6284685da742cd3e372fb6969484dbef17fcb022
4
- data.tar.gz: 4390a6132c28e9c9e6f705307d290ea071f0173a
3
+ metadata.gz: 73bdf7c448948325e3ed64e73d07c14b1ea2788b
4
+ data.tar.gz: aad759c85a854b070482db7e9d1775077df23162
5
5
  SHA512:
6
- metadata.gz: a144740eaa9e502506eb0c7f07e4c95cb633b61e62b41fb932d756341c5ed920564f008f511224868f4614c782169c2effb68889a64944870e054deade9ad33c
7
- data.tar.gz: d96ccc36e280c6df7182d7f8d2eb70f88f2dbf436ded930a1d81ec6009c778d8cc4a863a4c366c70ebb78dac2a7ccad70b5173482536209266e6598229e779c9
6
+ metadata.gz: 634437f983d4893785bafe74e7b269fc41cc922f13dc4caabf79d6ffdc08d1f4e018d250865554ff1d3218e1d177f1039bd2af0bdd23c9869f2b46e1350b3d11
7
+ data.tar.gz: 29d4deb64ad71594980a15ffc7e97b8214cb18cb18c37541cdef80b984a337e91c2fce0508020f707a8fedf1501a78b2ef019659b1dc15284d18ebc52f5e8bbb
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mutiny (0.2.0)
4
+ mutiny (0.2.1)
5
5
  gli (~> 2.13.0)
6
6
  metamorpher (~> 0.2.2)
7
7
  parser (~> 2.2.2)
@@ -50,7 +50,7 @@ GEM
50
50
  json (1.8.3)
51
51
  memoizable (0.4.2)
52
52
  thread_safe (~> 0.3, >= 0.3.1)
53
- metamorpher (0.2.2)
53
+ metamorpher (0.2.3)
54
54
  attributable (~> 0.1.0)
55
55
  parser (~> 2.2.2)
56
56
  unparser (~> 0.2.4)
data/RELEASES.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Release History
2
2
 
3
+ ## v0.2.1 (20 August 2015)
4
+ * Fix [#1](https://github.com/mutiny/mutiny/issues/1) - "Uninitialized constant" exception for all commands
5
+
3
6
  ## v0.2.0 (14 August 2015)
4
7
  * Implement `mutiny score` mode which performs mutation analysis
5
8
 
data/TODO.md CHANGED
@@ -1,55 +1,12 @@
1
- ### TODO
1
+ ## TODO
2
2
 
3
- ### New implementation
3
+ ### Soon
4
4
 
5
- * Reorganise lib, having in mind a "mutiny-core" which is separate to specific integrations (RSpec, etc), specific mutators (Metamorpher-based, etc), specific reporters (command-line, HTML, etc), etc
5
+ * Documentation for other maintainers
6
+ * Reorganise lib, having in mind a "mutiny-core" which is separate to specific integrations (RSpec, etc), specific mutators (Metamorpher-based, etc), specific reporters (command-line, HTML, etc), etc. Consider hexagonal architecture.
6
7
 
7
- #### Analysis mode
8
- * Should calculate mutation score
9
- * Need to figure out approach for running tests on a mutant
10
8
 
11
- ### Original implementation
9
+ ### Later
12
10
 
13
- * Experimentation to validate approach
14
- * Write scripting
15
- * Incremental: Should generate mutant delta (new / deleted mutants) between two git commits. Creating new mutants should be possible from existing change detector. Deleting obsoleted mutants will likely require enhancements to the change detector.
16
- * Experimental harness: should run non-incremental mode for each commit, and compare to results of incremental mode. Store data for paper and print a summary that shows the number of mutants evaluated by incremental and non-incremental mode.
17
-
18
- * Candidate projects
19
- * Thor: https://github.com/erikhuda/thor
20
- * Rake (ruled out as it uses minitest rather than RSpec)
21
- * Rack (ruled out as it uses Bacon rather than RSpec)
22
- * ActiveSupport and other Rails subgems (ruled out as it uses minitest rather than RSpec)
23
-
24
- * Experiments
25
- * Compare incremental and non-incremental mutator (seeding of faults) to determine typical magnitude of change over a project. What kind of granularity do we need to make a significant difference (file < method < ast nodes)?
26
- * Compare incremental and non-incremental analyser to determine typical impact of change on mutation testing. Analyser will first need to be enhanced with an incremental model that determines which of a set of existing mutants need to be reevaluated.
27
-
28
- * Overall aim: investigate the time savings of using incremental mode over the course of the project's history
29
- * Measurements
30
- * Could compare time taken for mutation testing each commit.
31
- * Alternatively, could compare the number of mutants that need to be re-evaluated. This would allow experimentation to proceed without actually executing any tests; just creating mutants and marking those which need to be re-evaluated. The incremental mode should count any new mutants, mark any mutants from the previous round that need to be re-evaluated, (and mark any mutants from the previous round that need to be deleted?).
32
- * Validity of results:
33
- * Whatever is measured, I need to compare the _results_ of incremental and non-incremental modes to ensure that incremental mode is correct.
34
- * Might need to enhance the change detector to be able to identify dependencies of units. For example, if `max_spec` tests `max` and `max` uses `calculator`, `max_spec` is dependent on calculator. If `calculator` changes, `max_spec` should be detected as impacted.
35
-
36
- * Try new approach to specifying mutation operators, particularly if this makes incremental mutation testing easier.
37
- * Add a Rewrite class to Ast module which can build and apply rewritings based on syntax in comments
38
- * Add notions of MutationOperator that are specified with single rewrite, and with several rewrites.
39
-
40
- * More fine-grained change detection. Some ideas:
41
- * When an example is removed from a spec, we should be able to quickly recompute the mutation score. To allow this, we would need to store the results of each example for each mutant. We then remove the results for the deleted example, and recalculate the mutation score without running any tests.
42
-
43
- * When a change to a unit is equivalent to swapping the unit for a previously analysed mutant of that unit, we should be able to quickly recompute the mutation score. We simply swap the mutant and unit in the results, and recalculate whether mutants are alive or dead (the new unit might cause different mutants to die). Again, to allow this we would need to store the results of each example for each mutant.
44
-
45
- * When a change to a unit is localised to a single line / method / subset of the file (i.e., a fragment), we only need to recalculate the mutants for that fragment. (However, I suspect we will often need to re-test the mutants and source file to obtain an accurate mutation score: i.e., unlike the points above, this speed up only impacts mutant creation and not mutant analysis) To allow this, the mutation creation component should be able to locate mutation sites in a specific fragment of a file.
46
-
47
- * Housekeeping
48
-
49
- * Consider refactoring mutant.rb so that it does not contain a code attribute (perhaps instead it should compute code by passing the file and line number to its operator?)
50
-
51
- * Should the change detector be a separate component, or should it be part of the core?
52
-
53
- * Tests for Session.
54
-
55
- * Extend framework to explore Program Analyser and more sophisticated Test Case Provider components (see OmniGraffle diagram)
11
+ * Profiling to determine bottlenecks
12
+ * [Incrementality](design/incrementality.md)
@@ -0,0 +1,32 @@
1
+ ## Incrementality
2
+
3
+ * Experimentation to validate approach
4
+ * Write scripting
5
+ * Incremental: Should generate mutant delta (new / deleted mutants) between two git commits. Creating new mutants should be possible from existing change detector. Deleting obsoleted mutants will likely require enhancements to the change detector.
6
+ * Experimental harness: should run non-incremental mode for each commit, and compare to results of incremental mode. Store data for paper and print a summary that shows the number of mutants evaluated by incremental and non-incremental mode.
7
+
8
+ * Candidate projects
9
+ * Thor: https://github.com/erikhuda/thor
10
+ * Rake (ruled out as it uses minitest rather than RSpec)
11
+ * Rack (ruled out as it uses Bacon rather than RSpec)
12
+ * ActiveSupport and other Rails subgems (ruled out as it uses minitest rather than RSpec)
13
+
14
+ * Experiments
15
+ * Compare incremental and non-incremental mutator (seeding of faults) to determine typical magnitude of change over a project. What kind of granularity do we need to make a significant difference (file < method < ast nodes)?
16
+ * Compare incremental and non-incremental analyser to determine typical impact of change on mutation testing. Analyser will first need to be enhanced with an incremental model that determines which of a set of existing mutants need to be reevaluated.
17
+
18
+ * Overall aim: investigate the time savings of using incremental mode over the course of the project's history
19
+ * Measurements
20
+ * Could compare time taken for mutation testing each commit.
21
+ * Alternatively, could compare the number of mutants that need to be re-evaluated. This would allow experimentation to proceed without actually executing any tests; just creating mutants and marking those which need to be re-evaluated. The incremental mode should count any new mutants, mark any mutants from the previous round that need to be re-evaluated, (and mark any mutants from the previous round that need to be deleted?).
22
+ * Validity of results:
23
+ * Whatever is measured, I need to compare the _results_ of incremental and non-incremental modes to ensure that incremental mode is correct.
24
+ * Might need to enhance the change detector to be able to identify dependencies of units. For example, if `max_spec` tests `max` and `max` uses `calculator`, `max_spec` is dependent on calculator. If `calculator` changes, `max_spec` should be detected as impacted.
25
+
26
+
27
+ * More fine-grained change detection. Some ideas:
28
+ * When an example is removed from a spec, we should be able to quickly recompute the mutation score. To allow this, we would need to store the results of each example for each mutant. We then remove the results for the deleted example, and recalculate the mutation score without running any tests.
29
+
30
+ * When a change to a unit is equivalent to swapping the unit for a previously analysed mutant of that unit, we should be able to quickly recompute the mutation score. We simply swap the mutant and unit in the results, and recalculate whether mutants are alive or dead (the new unit might cause different mutants to die). Again, to allow this we would need to store the results of each example for each mutant.
31
+
32
+ * When a change to a unit is localised to a single line / method / subset of the file (i.e., a fragment), we only need to recalculate the mutants for that fragment. (However, I suspect we will often need to re-test the mutants and source file to obtain an accurate mutation score: i.e., unlike the points above, this speed up only impacts mutant creation and not mutant analysis) To allow this, the mutation creation component should be able to locate mutation sites in a specific fragment of a file.
@@ -1,4 +1,5 @@
1
1
  require_relative "mutant"
2
+ require "delegate"
2
3
 
3
4
  module Mutiny
4
5
  module Mutants
@@ -1,3 +1,3 @@
1
1
  module Mutiny
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mutiny
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Louis Rose
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-14 00:00:00.000000000 Z
11
+ date: 2015-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -172,6 +172,7 @@ files:
172
172
  - Rakefile
173
173
  - TODO.md
174
174
  - bin/mutiny
175
+ - design/incrementality.md
175
176
  - examples/buggy_calculator/.rspec
176
177
  - examples/buggy_calculator/lib/calculator.rb
177
178
  - examples/buggy_calculator/lib/calculator/max.rb