heckle 1.4.3 → 2.0.0.b1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,54 @@
1
+ require 'minitest/autorun'
2
+ require 'heckle_runner'
3
+
4
+ # Tests needed:
5
+ # * if no method, loads all local methods
6
+ # * should raise an exception if the class/module can't be found
7
+ # * should raise an exception if the method can't be found
8
+ # * Tests for option parsing.
9
+
10
+ class TestHeckleRunnerRun < MiniTest::Unit::TestCase
11
+ @@dummy_dir = File.expand_path('test/fixtures/minitest_project')
12
+ dummy_lib = File.join(@@dummy_dir, 'lib')
13
+
14
+ $LOAD_PATH << dummy_lib
15
+
16
+ def setup
17
+ super
18
+
19
+ @old_pwd = Dir.pwd
20
+ Dir.chdir @@dummy_dir
21
+
22
+ # See MiniTest's test/minitest/metametameta.rb
23
+ @output = StringIO.new("")
24
+ MiniTest::Unit::TestCase.reset
25
+ MiniTest::Unit.output = @output
26
+ end
27
+
28
+ def teardown
29
+ super
30
+ Dir.chdir @old_pwd
31
+ MiniTest::Unit.output = $stdout
32
+
33
+ MiniTest::Unit::TestCase.test_suites.each do |test|
34
+ Object.send :remove_const, test.to_s.to_sym
35
+ end
36
+ end
37
+
38
+ def test_run_with_full_coverage
39
+ out, _ = capture_io do
40
+ HeckleRunner.run %w[Doubler double]
41
+ end
42
+
43
+ assert_match %r{No mutants survived.}, out
44
+ end
45
+
46
+ def test_run_with_partial_coverage
47
+ out, _ = capture_io do
48
+ HeckleRunner.run %w[Doubler double --tests test/test_doubler_with_a_number.rb]
49
+ end
50
+
51
+ assert_match %r{The following mutations didn't cause test failures:}, out
52
+ refute_match %{No mutants survived.}, out
53
+ end
54
+ end
metadata CHANGED
@@ -1,12 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heckle
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.3
4
+ hash: -1277703938
5
+ prerelease: 6
6
+ segments:
7
+ - 2
8
+ - 0
9
+ - 0
10
+ - b
11
+ - 1
12
+ version: 2.0.0.b1
5
13
  platform: ruby
6
14
  authors:
7
15
  - Ryan Davis
8
- - Eric Hodel
9
- - Kevin Clark
16
+ - Pete Higgins
10
17
  autorequire:
11
18
  bindir: bin
12
19
  cert_chain:
@@ -32,57 +39,108 @@ cert_chain:
32
39
  FBHgymkyj/AOSqKRIpXPhjC6
33
40
  -----END CERTIFICATE-----
34
41
 
35
- date: 2009-06-23 00:00:00 -07:00
36
- default_executable:
42
+ date: 2012-10-03 00:00:00 Z
37
43
  dependencies:
38
44
  - !ruby/object:Gem::Dependency
39
- name: ParseTree
40
- type: :runtime
41
- version_requirement:
42
- version_requirements: !ruby/object:Gem::Requirement
45
+ name: ruby_parser
46
+ prerelease: false
47
+ requirement: &id001 !ruby/object:Gem::Requirement
48
+ none: false
43
49
  requirements:
44
- - - ">="
50
+ - - ~>
45
51
  - !ruby/object:Gem::Version
46
- version: 2.0.0
47
- version:
52
+ hash: 1
53
+ segments:
54
+ - 2
55
+ - 3
56
+ - 1
57
+ version: 2.3.1
58
+ type: :runtime
59
+ version_requirements: *id001
48
60
  - !ruby/object:Gem::Dependency
49
61
  name: ruby2ruby
50
- type: :runtime
51
- version_requirement:
52
- version_requirements: !ruby/object:Gem::Requirement
62
+ prerelease: false
63
+ requirement: &id002 !ruby/object:Gem::Requirement
64
+ none: false
53
65
  requirements:
54
- - - ">="
66
+ - - ~>
55
67
  - !ruby/object:Gem::Version
56
- version: 1.1.6
57
- version:
68
+ hash: 27
69
+ segments:
70
+ - 1
71
+ - 3
72
+ - 0
73
+ version: 1.3.0
74
+ type: :runtime
75
+ version_requirements: *id002
58
76
  - !ruby/object:Gem::Dependency
59
77
  name: ZenTest
78
+ prerelease: false
79
+ requirement: &id003 !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ~>
83
+ - !ruby/object:Gem::Version
84
+ hash: 35
85
+ segments:
86
+ - 4
87
+ - 7
88
+ - 0
89
+ version: 4.7.0
60
90
  type: :runtime
61
- version_requirement:
62
- version_requirements: !ruby/object:Gem::Requirement
91
+ version_requirements: *id003
92
+ - !ruby/object:Gem::Dependency
93
+ name: minitest
94
+ prerelease: false
95
+ requirement: &id004 !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ~>
99
+ - !ruby/object:Gem::Version
100
+ hash: 1
101
+ segments:
102
+ - 3
103
+ - 3
104
+ version: "3.3"
105
+ type: :development
106
+ version_requirements: *id004
107
+ - !ruby/object:Gem::Dependency
108
+ name: rdoc
109
+ prerelease: false
110
+ requirement: &id005 !ruby/object:Gem::Requirement
111
+ none: false
63
112
  requirements:
64
- - - ">="
113
+ - - ~>
65
114
  - !ruby/object:Gem::Version
66
- version: 3.5.2
67
- version:
115
+ hash: 19
116
+ segments:
117
+ - 3
118
+ - 10
119
+ version: "3.10"
120
+ type: :development
121
+ version_requirements: *id005
68
122
  - !ruby/object:Gem::Dependency
69
123
  name: hoe
70
- type: :development
71
- version_requirement:
72
- version_requirements: !ruby/object:Gem::Requirement
124
+ prerelease: false
125
+ requirement: &id006 !ruby/object:Gem::Requirement
126
+ none: false
73
127
  requirements:
74
- - - ">="
128
+ - - ~>
75
129
  - !ruby/object:Gem::Version
76
- version: 2.3.0
77
- version:
130
+ hash: 7
131
+ segments:
132
+ - 3
133
+ - 0
134
+ version: "3.0"
135
+ type: :development
136
+ version_requirements: *id006
78
137
  description: |-
79
- Heckle is unit test sadism(tm) at it's core. Heckle is a mutation tester. It modifies your code and runs your tests to make sure they fail. The idea is that if code can be changed and your tests don't notice, either that code isn't being covered or it doesn't do anything.
138
+ Heckle is unit test sadism(tm) at its core. Heckle is a mutation tester. It modifies your code and runs your tests to make sure they fail. The idea is that if code can be changed and your tests don't notice, either that code isn't being covered or it doesn't do anything.
80
139
 
81
140
  It's like hiring a white-hat hacker to try to break into your server and making sure you detect it. You learn the most by trying to break things and watching the outcome in an act of unit test sadism.
82
141
  email:
83
142
  - ryand-ruby@zenspider.com
84
- - drbrain@segment7.net
85
- - kevin.clark@gmail.com
143
+ - pete@peterhiggins.org
86
144
  executables:
87
145
  - heckle
88
146
  extensions: []
@@ -100,15 +158,23 @@ files:
100
158
  - bin/heckle
101
159
  - lib/autotest/heckle.rb
102
160
  - lib/heckle.rb
161
+ - lib/heckle_runner.rb
162
+ - lib/minitest_heckler.rb
103
163
  - lib/test_unit_heckler.rb
104
164
  - sample/Rakefile
105
165
  - sample/changes.log
106
- - sample/lib/heckled.rb
107
166
  - sample/test/test_heckled.rb
167
+ - test/fixtures/heckle_dummy.rb
108
168
  - test/fixtures/heckled.rb
169
+ - test/fixtures/minitest_project/README.txt
170
+ - test/fixtures/minitest_project/Rakefile
171
+ - test/fixtures/minitest_project/lib/doubler.rb
172
+ - test/fixtures/minitest_project/test/test_doubler_with_a_number.rb
173
+ - test/fixtures/minitest_project/test/test_doubler_with_bad_input.rb
109
174
  - test/test_heckle.rb
110
- has_rdoc: true
111
- homepage: http://www.rubyforge.org/projects/seattlerb
175
+ - test/test_heckle_runner.rb
176
+ - .gemtest
177
+ homepage: http://ruby.sadi.st/Heckle.html
112
178
  licenses: []
113
179
 
114
180
  post_install_message:
@@ -118,23 +184,32 @@ rdoc_options:
118
184
  require_paths:
119
185
  - lib
120
186
  required_ruby_version: !ruby/object:Gem::Requirement
187
+ none: false
121
188
  requirements:
122
189
  - - ">="
123
190
  - !ruby/object:Gem::Version
191
+ hash: 3
192
+ segments:
193
+ - 0
124
194
  version: "0"
125
- version:
126
195
  required_rubygems_version: !ruby/object:Gem::Requirement
196
+ none: false
127
197
  requirements:
128
- - - ">="
198
+ - - ">"
129
199
  - !ruby/object:Gem::Version
130
- version: "0"
131
- version:
200
+ hash: 25
201
+ segments:
202
+ - 1
203
+ - 3
204
+ - 1
205
+ version: 1.3.1
132
206
  requirements: []
133
207
 
134
- rubyforge_project: seattlerb
135
- rubygems_version: 1.3.4
208
+ rubyforge_project: heckle
209
+ rubygems_version: 1.8.24
136
210
  signing_key:
137
211
  specification_version: 3
138
- summary: Heckle is unit test sadism(tm) at it's core
212
+ summary: Heckle is unit test sadism(tm) at its core
139
213
  test_files:
140
214
  - test/test_heckle.rb
215
+ - test/test_heckle_runner.rb
metadata.gz.sig CHANGED
Binary file
@@ -1,80 +0,0 @@
1
- class Heckled
2
- attr_accessor :names
3
-
4
- def initialize
5
- @names = []
6
- end
7
-
8
- def self.is_a_klass_method?
9
- true
10
- end
11
-
12
- def uses_while
13
- i = 1
14
- while i < 10
15
- i += 1
16
- end
17
- i
18
- end
19
-
20
- def uses_until
21
- i = 1
22
- until i >= 10
23
- i += 1
24
- end
25
- i
26
- end
27
-
28
- def uses_numeric_literals
29
- i = 1
30
- i += 10
31
- i -= 3.5
32
- end
33
-
34
- def uses_strings
35
- @names << "Hello, Robert"
36
- @names << "Hello, Jeff"
37
- @names << "Hi, Frank"
38
- end
39
-
40
- def uses_different_types
41
- i = 1
42
- b = "Hello, Joe"
43
- c = 3.3
44
- end
45
-
46
- def uses_the_same_literal
47
- i = 1
48
- i = 1
49
- i = 1
50
- end
51
-
52
- def uses_if
53
- if true
54
- if false
55
- return
56
- end
57
- end
58
- end
59
-
60
- def uses_unless
61
- unless true
62
- if false
63
- return
64
- end
65
- end
66
- end
67
-
68
- def uses_masignment
69
- one, two = [1, 2]
70
- end
71
-
72
- def uses_infinite_loop?
73
- # Converts to a infinite loop actually
74
- some_func until true
75
- end
76
-
77
- # placeholder
78
- def some_func
79
- end
80
- end