lemon 0.7.0 → 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.
- data/HISTORY +14 -15
- data/PROFILE +16 -0
- data/README.rdoc +8 -30
- data/REQUIRE +9 -0
- data/VERSION +6 -0
- data/features/coverage.feature +65 -0
- data/features/generate.feature +66 -0
- data/features/step_definitions/coverage_steps.rb +1 -0
- data/features/support/ae.rb +1 -0
- data/features/support/aruba.rb +1 -0
- data/features/test.feature +67 -0
- data/lib/lemon.rb +1 -0
- data/lib/lemon/command.rb +180 -18
- data/lib/lemon/coverage.rb +29 -16
- data/lib/lemon/coversheet/abstract.rb +60 -0
- data/lib/lemon/coversheet/outline.rb +47 -0
- data/lib/lemon/reporter/abstract.rb +6 -6
- data/lib/lemon/reporter/verbose.rb +2 -0
- data/lib/lemon/runner.rb +8 -7
- data/lib/lemon/test/suite.rb +10 -1
- data/test/{coverage_case.rb → case_coverage.rb} +2 -0
- data/test/{testcase_case.rb → case_testcase.rb} +0 -0
- data/test/fixtures/case_complete.rb +8 -0
- data/test/fixtures/case_incomplete.rb +12 -0
- data/test/fixtures/example.rb +8 -0
- metadata +103 -32
- data/lib/lemon/command/abstract.rb +0 -29
- data/lib/lemon/command/coverage.rb +0 -102
- data/lib/lemon/command/generate.rb +0 -124
- data/lib/lemon/command/test.rb +0 -109
- data/meta/authors +0 -1
- data/meta/contact +0 -1
- data/meta/copyright +0 -1
- data/meta/description +0 -2
- data/meta/homepage +0 -1
- data/meta/license +0 -1
- data/meta/name +0 -1
- data/meta/repository +0 -1
- data/meta/suite +0 -1
- data/meta/summary +0 -1
- data/meta/title +0 -1
- data/meta/version +0 -1
data/lib/lemon/coverage.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'lemon/snapshot'
|
2
|
+
require 'lemon/coversheet/outline'
|
2
3
|
|
3
4
|
module Lemon
|
4
5
|
|
@@ -92,10 +93,21 @@ module Lemon
|
|
92
93
|
list
|
93
94
|
end
|
94
95
|
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
96
|
+
#
|
97
|
+
def format(type)
|
98
|
+
coversheet = nil
|
99
|
+
case type
|
100
|
+
when :verbose
|
101
|
+
puts checklist.to_yaml
|
102
|
+
else
|
103
|
+
coversheet = CoverSheet::Outline.new(self)
|
104
|
+
coversheet.coverage_finished
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
#def load_covered_files
|
109
|
+
# suite.load_covered_files
|
110
|
+
#end
|
99
111
|
|
100
112
|
# Iterate over +paths+ and use #load to bring in all +.rb+ scripts.
|
101
113
|
#def load_system
|
@@ -110,18 +122,18 @@ module Lemon
|
|
110
122
|
# files.each{ |file| load(file) }
|
111
123
|
#end
|
112
124
|
|
113
|
-
# # Snapshot of System to be covered. This takes a current snapshot
|
114
|
-
# # of the system and removes the canonical snapshot or filters out
|
115
|
-
# # everything but the selected namespace.
|
116
|
-
# def system
|
117
|
-
# if namespaces.empty?
|
118
|
-
# snapshot - canonical
|
119
|
-
# else
|
120
|
-
# (snapshot - canonical).filter do |ofmod|
|
121
|
-
# namespaces.any?{ |n| ofmod.name.start_with?(n.to_s) }
|
122
|
-
# end
|
123
|
-
# end
|
124
|
-
# end
|
125
|
+
# # Snapshot of System to be covered. This takes a current snapshot
|
126
|
+
# # of the system and removes the canonical snapshot or filters out
|
127
|
+
# # everything but the selected namespace.
|
128
|
+
# def system
|
129
|
+
# if namespaces.empty?
|
130
|
+
# snapshot - canonical
|
131
|
+
# else
|
132
|
+
# (snapshot - canonical).filter do |ofmod|
|
133
|
+
# namespaces.any?{ |n| ofmod.name.start_with?(n.to_s) }
|
134
|
+
# end
|
135
|
+
# end
|
136
|
+
# end
|
125
137
|
|
126
138
|
# List of modules/classes not covered.
|
127
139
|
def uncovered_cases
|
@@ -165,6 +177,7 @@ module Lemon
|
|
165
177
|
clist = clist | metameths
|
166
178
|
end
|
167
179
|
end
|
180
|
+
|
168
181
|
@uncovered_units = clist - tlist
|
169
182
|
@undefined_units = tlist - clist
|
170
183
|
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Lemon
|
2
|
+
module CoverSheet
|
3
|
+
|
4
|
+
class Abstract
|
5
|
+
|
6
|
+
# Supports ANSI Codes?
|
7
|
+
ANSI_SUPPORT = (
|
8
|
+
begin
|
9
|
+
require 'ansi/code'
|
10
|
+
true
|
11
|
+
rescue LoadError
|
12
|
+
false
|
13
|
+
end
|
14
|
+
)
|
15
|
+
|
16
|
+
def initialize(coverage)
|
17
|
+
@coverage = coverage
|
18
|
+
@ansicolor = ANSI_SUPPORT
|
19
|
+
end
|
20
|
+
|
21
|
+
#
|
22
|
+
attr :coverage
|
23
|
+
|
24
|
+
def uncovered_cases
|
25
|
+
coverage.uncovered_cases
|
26
|
+
end
|
27
|
+
|
28
|
+
def uncovered_units
|
29
|
+
coverage.uncovered_units
|
30
|
+
end
|
31
|
+
|
32
|
+
def undefined_units
|
33
|
+
coverage.undefined_units
|
34
|
+
end
|
35
|
+
|
36
|
+
#
|
37
|
+
def red(string)
|
38
|
+
@ansicolor ? ANSI::Code.red{ string } : string
|
39
|
+
end
|
40
|
+
|
41
|
+
#
|
42
|
+
def yellow(string)
|
43
|
+
@ansicolor ? ANSI::Code.yellow{ string } : string
|
44
|
+
end
|
45
|
+
|
46
|
+
#
|
47
|
+
def green(string)
|
48
|
+
@ansicolor ? ANSI::Code.green{ string } : string
|
49
|
+
end
|
50
|
+
|
51
|
+
#
|
52
|
+
def tally
|
53
|
+
"#{uncovered_cases.size} uncovered cases, #{uncovered_units.size} uncovered units, #{undefined_units.size} undefined units"
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'lemon/coversheet/abstract'
|
2
|
+
|
3
|
+
module Lemon
|
4
|
+
module CoverSheet
|
5
|
+
|
6
|
+
class Outline < Abstract
|
7
|
+
|
8
|
+
#
|
9
|
+
def coverage_finished
|
10
|
+
|
11
|
+
unless uncovered_cases.empty?
|
12
|
+
unc = uncovered_cases.map do |mod|
|
13
|
+
yellow(mod.name)
|
14
|
+
end.join(", ")
|
15
|
+
puts "\nUncovered Cases: " + unc
|
16
|
+
end
|
17
|
+
|
18
|
+
unless uncovered_units.empty?
|
19
|
+
unc = uncovered_units.map do |unit|
|
20
|
+
yellow(unit)
|
21
|
+
end.join(", ")
|
22
|
+
puts "\nUncovered Units: " + unc
|
23
|
+
end
|
24
|
+
|
25
|
+
#unless uncovered.empty?
|
26
|
+
# unc = uncovered.map do |unit|
|
27
|
+
# yellow(unit)
|
28
|
+
# end.join(", ")
|
29
|
+
# puts "\nUncovered: " + unc
|
30
|
+
#end
|
31
|
+
|
32
|
+
unless undefined_units.empty?
|
33
|
+
unc = undefined_units.map do |unit|
|
34
|
+
yellow(unit)
|
35
|
+
end.join(", ")
|
36
|
+
puts "\nUndefined Units: " + unc
|
37
|
+
end
|
38
|
+
|
39
|
+
puts
|
40
|
+
puts tally
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
@@ -48,15 +48,15 @@ module Reporter
|
|
48
48
|
def errors ; runner.errors ; end
|
49
49
|
def pendings ; runner.pendings ; end
|
50
50
|
|
51
|
-
def uncovered_cases ; runner.uncovered_cases ; end
|
52
|
-
def uncovered_units ; runner.uncovered_units ; end
|
53
|
-
def undefined_units ; runner.undefined_units ; end
|
51
|
+
#def uncovered_cases ; runner.uncovered_cases ; end
|
52
|
+
#def uncovered_units ; runner.uncovered_units ; end
|
53
|
+
#def undefined_units ; runner.undefined_units ; end
|
54
54
|
|
55
55
|
#def uncovered ; runner.uncovered ; end
|
56
56
|
#def undefined ; runner.undefined ; end
|
57
57
|
|
58
|
-
|
59
|
-
def cover? ; runner.cover? ; end
|
58
|
+
## Is coverage information requested?
|
59
|
+
#def cover? ; runner.cover? ; end
|
60
60
|
|
61
61
|
#
|
62
62
|
def red(string)
|
@@ -81,7 +81,7 @@ module Reporter
|
|
81
81
|
#
|
82
82
|
def tally
|
83
83
|
s = "#{total} tests: #{successes.size} pass, #{failures.size} fail, #{errors.size} err, #{pendings.size} pending "
|
84
|
-
s += "(#{uncovered_units.size} uncovered, #{undefined_units.size} undefined)" if cover?
|
84
|
+
#s += "(#{uncovered_units.size} uncovered, #{undefined_units.size} undefined)" if cover?
|
85
85
|
s
|
86
86
|
end
|
87
87
|
|
@@ -78,6 +78,7 @@ module Reporter
|
|
78
78
|
# puts
|
79
79
|
#end
|
80
80
|
|
81
|
+
=begin
|
81
82
|
if cover?
|
82
83
|
|
83
84
|
unless uncovered_cases.empty?
|
@@ -109,6 +110,7 @@ module Reporter
|
|
109
110
|
end
|
110
111
|
|
111
112
|
end
|
113
|
+
=end
|
112
114
|
|
113
115
|
#total = successes.size + failures.size + errors.size + pendings.size
|
114
116
|
#tally = "\n#{total} tests: #{successes.size} pass, #{failures.size} fail, #{errors.size} err, #{pendings.size} pending"
|
data/lib/lemon/runner.rb
CHANGED
@@ -46,9 +46,9 @@ module Lemon
|
|
46
46
|
end
|
47
47
|
|
48
48
|
#
|
49
|
-
def cover?
|
50
|
-
|
51
|
-
end
|
49
|
+
#def cover?
|
50
|
+
# @options[:cover]
|
51
|
+
#end
|
52
52
|
|
53
53
|
# Namespaces option specifies the selection of test cases
|
54
54
|
# to run. Is is an array of strings which are matched
|
@@ -139,6 +139,7 @@ module Lemon
|
|
139
139
|
end
|
140
140
|
=end
|
141
141
|
|
142
|
+
=begin
|
142
143
|
#
|
143
144
|
def uncovered_cases
|
144
145
|
@uncovered_cases ||= coverage.uncovered_cases
|
@@ -153,6 +154,7 @@ module Lemon
|
|
153
154
|
def undefined_units
|
154
155
|
@undefined_units ||= coverage.undefined_units
|
155
156
|
end
|
157
|
+
=end
|
156
158
|
|
157
159
|
=begin
|
158
160
|
#
|
@@ -247,10 +249,9 @@ module Lemon
|
|
247
249
|
end
|
248
250
|
end
|
249
251
|
|
250
|
-
#
|
251
|
-
|
252
|
-
|
253
|
-
end
|
252
|
+
#def coverage
|
253
|
+
# @coverage ||= Lemon::Coverage.new(suite, namespaces) #, :public => public_only?)
|
254
|
+
#end
|
254
255
|
|
255
256
|
=begin
|
256
257
|
# TODO: I would think all this should be gained form the Coverage class.
|
data/lib/lemon/test/suite.rb
CHANGED
@@ -63,6 +63,11 @@ module Test
|
|
63
63
|
@options[:cover]
|
64
64
|
end
|
65
65
|
|
66
|
+
#
|
67
|
+
def cover_all?
|
68
|
+
@options[:cover_all]
|
69
|
+
end
|
70
|
+
|
66
71
|
#
|
67
72
|
#def load_helpers(*files)
|
68
73
|
# helpers = []
|
@@ -105,7 +110,11 @@ module Test
|
|
105
110
|
#@current_file = file
|
106
111
|
#file = File.expand_path(file)
|
107
112
|
#instance_eval(File.read(file), file)
|
108
|
-
|
113
|
+
if cover_all?
|
114
|
+
Covers(file)
|
115
|
+
else
|
116
|
+
require(file) #load(file)
|
117
|
+
end
|
109
118
|
end
|
110
119
|
|
111
120
|
#if cover?
|
File without changes
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lemon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 63
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
|
-
-
|
8
|
+
- 8
|
8
9
|
- 0
|
9
|
-
version: 0.
|
10
|
+
version: 0.8.0
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Thomas Sawyer
|
@@ -14,28 +15,99 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-06-20 00:00:00 -04:00
|
18
19
|
default_executable:
|
19
|
-
dependencies:
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: syckle
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
version: "0"
|
33
|
+
type: :development
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: box
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
47
|
+
type: :development
|
48
|
+
version_requirements: *id002
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: cucumber
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
61
|
+
type: :development
|
62
|
+
version_requirements: *id003
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: ae
|
65
|
+
prerelease: false
|
66
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
75
|
+
type: :development
|
76
|
+
version_requirements: *id004
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: aruba
|
79
|
+
prerelease: false
|
80
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
86
|
+
segments:
|
87
|
+
- 0
|
88
|
+
version: "0"
|
89
|
+
type: :development
|
90
|
+
version_requirements: *id005
|
91
|
+
description: Lemon is a unit testing framework that tightly correlates class to test case and method to test unit.
|
92
|
+
email: proutils@googlegroups.com
|
25
93
|
executables:
|
26
94
|
- lemon
|
27
95
|
extensions: []
|
28
96
|
|
29
|
-
extra_rdoc_files:
|
30
|
-
|
97
|
+
extra_rdoc_files:
|
98
|
+
- README.rdoc
|
31
99
|
files:
|
32
100
|
- bin/lemon
|
33
|
-
-
|
34
|
-
-
|
35
|
-
-
|
36
|
-
-
|
101
|
+
- features/coverage.feature
|
102
|
+
- features/generate.feature
|
103
|
+
- features/step_definitions/coverage_steps.rb
|
104
|
+
- features/support/ae.rb
|
105
|
+
- features/support/aruba.rb
|
106
|
+
- features/test.feature
|
37
107
|
- lib/lemon/command.rb
|
38
108
|
- lib/lemon/coverage.rb
|
109
|
+
- lib/lemon/coversheet/abstract.rb
|
110
|
+
- lib/lemon/coversheet/outline.rb
|
39
111
|
- lib/lemon/dsl.rb
|
40
112
|
- lib/lemon/kernel.rb
|
41
113
|
- lib/lemon/reporter/abstract.rb
|
@@ -50,23 +122,17 @@ files:
|
|
50
122
|
- lib/lemon/test/suite.rb
|
51
123
|
- lib/lemon/test/unit.rb
|
52
124
|
- lib/lemon.rb
|
53
|
-
-
|
54
|
-
-
|
55
|
-
-
|
56
|
-
-
|
57
|
-
-
|
58
|
-
-
|
59
|
-
- meta/name
|
60
|
-
- meta/repository
|
61
|
-
- meta/suite
|
62
|
-
- meta/summary
|
63
|
-
- meta/title
|
64
|
-
- meta/version
|
65
|
-
- test/coverage_case.rb
|
66
|
-
- test/testcase_case.rb
|
125
|
+
- test/case_coverage.rb
|
126
|
+
- test/case_testcase.rb
|
127
|
+
- test/fixtures/case_complete.rb
|
128
|
+
- test/fixtures/case_incomplete.rb
|
129
|
+
- test/fixtures/example.rb
|
130
|
+
- PROFILE
|
67
131
|
- LICENSE
|
68
132
|
- README.rdoc
|
69
133
|
- HISTORY
|
134
|
+
- REQUIRE
|
135
|
+
- VERSION
|
70
136
|
has_rdoc: true
|
71
137
|
homepage: http://proutils.github.com/lemon
|
72
138
|
licenses: []
|
@@ -75,29 +141,34 @@ post_install_message:
|
|
75
141
|
rdoc_options:
|
76
142
|
- --title
|
77
143
|
- Lemon API
|
144
|
+
- --main
|
145
|
+
- README.rdoc
|
78
146
|
require_paths:
|
79
147
|
- lib
|
80
148
|
required_ruby_version: !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
81
150
|
requirements:
|
82
151
|
- - ">="
|
83
152
|
- !ruby/object:Gem::Version
|
153
|
+
hash: 3
|
84
154
|
segments:
|
85
155
|
- 0
|
86
156
|
version: "0"
|
87
157
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
|
+
none: false
|
88
159
|
requirements:
|
89
160
|
- - ">="
|
90
161
|
- !ruby/object:Gem::Version
|
162
|
+
hash: 3
|
91
163
|
segments:
|
92
164
|
- 0
|
93
165
|
version: "0"
|
94
166
|
requirements: []
|
95
167
|
|
96
168
|
rubyforge_project: lemon
|
97
|
-
rubygems_version: 1.3.
|
169
|
+
rubygems_version: 1.3.7
|
98
170
|
signing_key:
|
99
171
|
specification_version: 3
|
100
172
|
summary: Pucker-tight Unit Testing
|
101
173
|
test_files:
|
102
|
-
-
|
103
|
-
- test/testcase_case.rb
|
174
|
+
- test/case_testcase.rb
|