lemon 0.8.5 → 0.9.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 (113) hide show
  1. data/{lemon.gemspec → .gemspec} +0 -0
  2. data/.ruby +4 -11
  3. data/Assembly +5 -11
  4. data/HISTORY.rdoc +31 -0
  5. data/MANIFEST +45 -55
  6. data/PROFILE +6 -6
  7. data/README.md +113 -0
  8. data/Rakefile +12 -3
  9. data/VERSION +1 -1
  10. data/bin/lemonade +8 -0
  11. data/lib/lemon.rb +52 -2
  12. data/lib/lemon.yml +4 -11
  13. data/lib/lemon/{model/ae.rb → ae.rb} +0 -0
  14. data/lib/lemon/cli.rb +28 -279
  15. data/lib/lemon/cli/base.rb +139 -0
  16. data/lib/lemon/cli/coverage.rb +52 -0
  17. data/lib/lemon/cli/generate.rb +51 -0
  18. data/lib/lemon/cli/test.rb +50 -0
  19. data/lib/lemon/core_ext.rb +7 -0
  20. data/lib/lemon/core_ext/kernel.rb +20 -0
  21. data/lib/lemon/core_ext/omission.rb +18 -0
  22. data/lib/lemon/{controller/coverage_analyzer.rb → coverage/analyzer.rb} +41 -19
  23. data/lib/lemon/{model → coverage}/cover_unit.rb +0 -0
  24. data/lib/lemon/{view/cover_reports → coverage/formats}/abstract.rb +0 -0
  25. data/lib/lemon/{view/cover_reports → coverage/formats}/compact.rb +1 -1
  26. data/lib/lemon/{view/cover_reports → coverage/formats}/outline.rb +1 -1
  27. data/lib/lemon/{view/cover_reports → coverage/formats}/verbose.rb +1 -1
  28. data/lib/lemon/{view/cover_reports → coverage/formats}/yaml.rb +1 -1
  29. data/lib/lemon/{model → coverage}/snapshot.rb +0 -0
  30. data/lib/lemon/{model → coverage}/source_parser.rb +0 -0
  31. data/lib/lemon/{controller/scaffold_generator.rb → generator.rb} +53 -14
  32. data/lib/lemon/test_advice.rb +63 -0
  33. data/lib/lemon/test_case.rb +270 -0
  34. data/lib/lemon/test_class.rb +28 -0
  35. data/lib/lemon/test_method.rb +207 -0
  36. data/lib/lemon/test_module.rb +114 -0
  37. data/lib/lemon/test_proc.rb +140 -0
  38. data/lib/lemon/test_setup.rb +54 -0
  39. data/lib/lemon/test_world.rb +9 -0
  40. data/notes/{2010-05-06-files_not_classes.rdoc → 2010-05-06-files-not-classes.rdoc} +0 -0
  41. data/notes/{2010-07-11-acid_testing.rdoc → 2010-07-11-acid-testing.rdoc} +0 -0
  42. data/notes/2011-07-07-nailing-down-the-nomenclature.md +6 -0
  43. data/site/index.html +7 -6
  44. data/{qed → spec}/applique/fs.rb +0 -0
  45. data/{qed → spec}/coverage/01_complete.rdoc +26 -16
  46. data/{qed → spec}/coverage/02_incomplete.rdoc +10 -7
  47. data/{qed → spec}/coverage/03_extensions.rdoc +10 -6
  48. data/spec/coverage/applique/lemon.rb +1 -0
  49. data/try/.test +8 -0
  50. data/try/case_error.rb +18 -0
  51. data/try/case_fail.rb +19 -0
  52. data/try/case_pass.rb +42 -0
  53. data/try/case_pending.rb +18 -0
  54. data/try/case_singleton.rb +18 -0
  55. data/try/case_untested.rb +14 -0
  56. data/try/fixtures/calculator.rb +15 -0
  57. data/{demo/fixture → try/fixtures}/example-use.rb +0 -0
  58. data/{demo/fixture → try/fixtures}/example.rb +0 -0
  59. data/try/helpers/loadpath.rb +1 -0
  60. data/{.config → work/deprecated}/cucumber.yml +0 -0
  61. data/{features → work/deprecated/features}/coverage.feature +0 -0
  62. data/{features → work/deprecated/features}/generate.feature +0 -0
  63. data/{features → work/deprecated/features}/step_definitions/coverage_steps.rb +0 -0
  64. data/{features → work/deprecated/features}/support/ae.rb +0 -0
  65. data/{features → work/deprecated/features}/support/aruba.rb +0 -0
  66. data/{features → work/deprecated/features}/test.feature +0 -0
  67. data/work/deprecated/model/dsl/advice.rb +78 -0
  68. data/work/deprecated/model/dsl/subject.rb +40 -0
  69. data/{lib/lemon → work/deprecated}/model/main.rb +40 -29
  70. data/work/deprecated/model/test.rb +54 -0
  71. data/work/deprecated/model/test_base_dsl.rb +88 -0
  72. data/work/deprecated/model/test_clause.rb +112 -0
  73. data/{lib/lemon → work/deprecated}/model/test_context.rb +24 -24
  74. data/work/deprecated/model/test_feature.rb +128 -0
  75. data/work/deprecated/model/test_scenario.rb +137 -0
  76. data/{lib/lemon → work/deprecated}/model/test_suite.rb +113 -32
  77. data/work/deprecated/rake.rb +103 -0
  78. data/{test → work/deprecated/test}/case_coverage_analyzer.rb +0 -0
  79. data/{test → work/deprecated/test}/case_test_case_dsl.rb +2 -2
  80. data/{test → work/deprecated/test}/fixtures/case_complete.rb +0 -0
  81. data/{test → work/deprecated/test}/fixtures/case_inclusion.rb +0 -0
  82. data/{test → work/deprecated/test}/fixtures/case_incomplete.rb +0 -0
  83. data/{test → work/deprecated/test}/fixtures/example.rb +0 -0
  84. data/{test → work/deprecated/test}/fixtures/helper.rb +0 -0
  85. data/{test → work/deprecated/test}/runner +0 -0
  86. data/work/old-tests/case_example.rb +15 -0
  87. data/work/old-tests/feature_example.rb +40 -0
  88. data/work/reference/dsl2.rb +4 -0
  89. metadata +101 -98
  90. data/README.rdoc +0 -103
  91. data/bin/lemon +0 -4
  92. data/demo/case_example_error.rb +0 -10
  93. data/demo/case_example_fail.rb +0 -15
  94. data/demo/case_example_pass.rb +0 -32
  95. data/demo/case_example_pending.rb +0 -14
  96. data/demo/case_example_untested.rb +0 -10
  97. data/lib/lemon/controller/test_runner.rb +0 -299
  98. data/lib/lemon/model/pending.rb +0 -10
  99. data/lib/lemon/model/test_case.rb +0 -305
  100. data/lib/lemon/model/test_unit.rb +0 -147
  101. data/lib/lemon/view/test_reports/abstract.rb +0 -256
  102. data/lib/lemon/view/test_reports/dotprogress.rb +0 -73
  103. data/lib/lemon/view/test_reports/html.rb +0 -146
  104. data/lib/lemon/view/test_reports/outline.rb +0 -118
  105. data/lib/lemon/view/test_reports/summary.rb +0 -131
  106. data/lib/lemon/view/test_reports/tap.rb +0 -49
  107. data/lib/lemon/view/test_reports/tapj.rb +0 -130
  108. data/lib/lemon/view/test_reports/tapy.rb +0 -141
  109. data/lib/lemon/view/test_reports/verbose.rb +0 -197
  110. data/work/sandbox/lib/sample.rb +0 -13
  111. data/work/sandbox/test/sample_case.rb +0 -12
  112. data/work/trash/example-cover.rb +0 -5
  113. data/work/trash/example.rb +0 -16
File without changes
data/.ruby CHANGED
@@ -9,6 +9,7 @@ copyrights:
9
9
  replacements: []
10
10
  conflicts: []
11
11
  requirements:
12
+ - name: test
12
13
  - name: ae
13
14
  - name: ansi
14
15
  version: 1.3+
@@ -24,14 +25,6 @@ requirements:
24
25
  groups:
25
26
  - test
26
27
  development: true
27
- - name: cucumber
28
- groups:
29
- - test
30
- development: true
31
- - name: aruba
32
- groups:
33
- - test
34
- development: true
35
28
  dependencies: []
36
29
  repositories:
37
30
  - uri: git://github.com/proutils/lemon.git
@@ -47,10 +40,10 @@ extra:
47
40
  alternatives: []
48
41
  revision: 0
49
42
  title: Lemon
50
- suite: proutils
51
43
  summary: Pucker-tight Unit Testing
52
44
  description: Lemon is a unit testing framework that tightly correlates class to test
53
45
  case and method to test unit.
54
- version: 0.8.5
46
+ organization: RubyWorks
47
+ version: 0.9.0
55
48
  name: lemon
56
- date: '2011-07-16'
49
+ date: '2011-08-11'
data/Assembly CHANGED
@@ -22,22 +22,16 @@ yard:
22
22
  yardopts: true
23
23
  priority: 2
24
24
 
25
+ qed:
26
+ files: spec
27
+
25
28
  qedoc:
26
29
  title: Lemony Testing
30
+ files: spec
27
31
  output: QED.rdoc
28
32
 
29
- cucumber:
30
- service : Custom
31
- test : |
32
- system 'cucumber -q -f progress test/cli'
33
-
34
- lemon:
35
- service : Custom
36
- test : |
37
- system 'lemon -Itest/fixtures test/*.rb'
38
-
39
33
  vclog:
40
- output :
34
+ output:
41
35
  - log/AHISTORY.rdoc
42
36
  - log/CHANGELOG.rdoc
43
37
 
@@ -1,5 +1,36 @@
1
1
  = RELEASE HISTORY
2
2
 
3
+ == 0.9.0 / 2011-08-11
4
+
5
+ Version 0.9 is a huge release for Lemon. This release finally makes the transition
6
+ to the new unit subcase syntax --a bit more verbose than the old style but a more
7
+ flexible means of notating unit tests allowing each unit to group together mutiple
8
+ tests. For previous users you will need to change old style tests, e.g.
9
+
10
+ Unit :to_s => "that string" do
11
+ ...
12
+ end
13
+
14
+ To the new style:
15
+
16
+ Unit :to_s do
17
+ Test "that string" do
18
+ ...
19
+ end
20
+ end
21
+
22
+ This release also moves Lemon over to the new Ruby Test library for test runs.
23
+ The `lemon` command line interface has changed and now uses subcommands rather than command
24
+ opitions. So use `lemon coverage` instead of the old `lemon -c`. Since Lemon now uses Ruby
25
+ Test to run tests, `lemon test` is equivalent to `ruby-test`, and the Ruby Test config file
26
+ should be used to configure test runs instead of `.lemonrc` which is no longer supported.
27
+
28
+ Changes:
29
+
30
+ * Utilize Ruby Test for test execution.
31
+ * Implemented new unit block syntax.
32
+
33
+
3
34
  == 0.8.5 / 2011-07-15
4
35
 
5
36
  This release fixes exit code status, which should be -1 if there
data/MANIFEST CHANGED
@@ -1,65 +1,55 @@
1
- #!mast .yardopts .ruby bin demo features lib man qed spec test [A-Z][A-Z]*
1
+ #!mast .yardopts .ruby bin demo lib man qed spec test try [A-Z][A-Z]*
2
2
  .yardopts
3
3
  .ruby
4
- bin/lemon
5
- demo/case_example_error.rb
6
- demo/case_example_fail.rb
7
- demo/case_example_pass.rb
8
- demo/case_example_pending.rb
9
- demo/case_example_untested.rb
10
- demo/fixture/example-use.rb
11
- demo/fixture/example.rb
12
- features/coverage.feature
13
- features/generate.feature
14
- features/step_definitions/coverage_steps.rb
15
- features/support/ae.rb
16
- features/support/aruba.rb
17
- features/test.feature
4
+ bin/lemonade
5
+ lib/lemon/ae.rb
6
+ lib/lemon/cli/base.rb
7
+ lib/lemon/cli/coverage.rb
8
+ lib/lemon/cli/generate.rb
9
+ lib/lemon/cli/test.rb
18
10
  lib/lemon/cli.rb
19
- lib/lemon/controller/coverage_analyzer.rb
20
- lib/lemon/controller/scaffold_generator.rb
21
- lib/lemon/controller/test_runner.rb
22
- lib/lemon/model/ae.rb
23
- lib/lemon/model/cover_unit.rb
24
- lib/lemon/model/main.rb
25
- lib/lemon/model/pending.rb
26
- lib/lemon/model/snapshot.rb
27
- lib/lemon/model/source_parser.rb
28
- lib/lemon/model/test_case.rb
29
- lib/lemon/model/test_context.rb
30
- lib/lemon/model/test_suite.rb
31
- lib/lemon/model/test_unit.rb
32
- lib/lemon/view/cover_reports/abstract.rb
33
- lib/lemon/view/cover_reports/compact.rb
34
- lib/lemon/view/cover_reports/outline.rb
35
- lib/lemon/view/cover_reports/verbose.rb
36
- lib/lemon/view/cover_reports/yaml.rb
37
- lib/lemon/view/test_reports/abstract.rb
38
- lib/lemon/view/test_reports/dotprogress.rb
39
- lib/lemon/view/test_reports/html.rb
40
- lib/lemon/view/test_reports/outline.rb
41
- lib/lemon/view/test_reports/summary.rb
42
- lib/lemon/view/test_reports/tap.rb
43
- lib/lemon/view/test_reports/tapj.rb
44
- lib/lemon/view/test_reports/tapy.rb
45
- lib/lemon/view/test_reports/verbose.rb
11
+ lib/lemon/core_ext/kernel.rb
12
+ lib/lemon/core_ext/omission.rb
13
+ lib/lemon/core_ext.rb
14
+ lib/lemon/coverage/analyzer.rb
15
+ lib/lemon/coverage/cover_unit.rb
16
+ lib/lemon/coverage/formats/abstract.rb
17
+ lib/lemon/coverage/formats/compact.rb
18
+ lib/lemon/coverage/formats/outline.rb
19
+ lib/lemon/coverage/formats/verbose.rb
20
+ lib/lemon/coverage/formats/yaml.rb
21
+ lib/lemon/coverage/snapshot.rb
22
+ lib/lemon/coverage/source_parser.rb
23
+ lib/lemon/generator.rb
24
+ lib/lemon/test_advice.rb
25
+ lib/lemon/test_case.rb
26
+ lib/lemon/test_class.rb
27
+ lib/lemon/test_method.rb
28
+ lib/lemon/test_module.rb
29
+ lib/lemon/test_proc.rb
30
+ lib/lemon/test_setup.rb
31
+ lib/lemon/test_world.rb
46
32
  lib/lemon.rb
47
33
  lib/lemon.yml
48
- qed/applique/fs.rb
49
- qed/coverage/01_complete.rdoc
50
- qed/coverage/02_incomplete.rdoc
51
- qed/coverage/03_extensions.rdoc
52
- test/case_coverage_analyzer.rb
53
- test/case_test_case_dsl.rb
54
- test/fixtures/case_complete.rb
55
- test/fixtures/case_inclusion.rb
56
- test/fixtures/case_incomplete.rb
57
- test/fixtures/example.rb
58
- test/fixtures/helper.rb
59
- test/runner
34
+ spec/applique/fs.rb
35
+ spec/coverage/01_complete.rdoc
36
+ spec/coverage/02_incomplete.rdoc
37
+ spec/coverage/03_extensions.rdoc
38
+ spec/coverage/applique/lemon.rb
39
+ try/.test
40
+ try/case_error.rb
41
+ try/case_fail.rb
42
+ try/case_pass.rb
43
+ try/case_pending.rb
44
+ try/case_singleton.rb
45
+ try/case_untested.rb
46
+ try/fixtures/calculator.rb
47
+ try/fixtures/example-use.rb
48
+ try/fixtures/example.rb
49
+ try/helpers/loadpath.rb
60
50
  HISTORY.rdoc
61
51
  PROFILE
62
- README.rdoc
63
52
  QED.rdoc
53
+ README.md
64
54
  VERSION
65
55
  COPYING.rdoc
data/PROFILE CHANGED
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  title : Lemon
3
- suite : proutils
4
3
  summary: Pucker-tight Unit Testing
5
4
  authors:
6
5
  - Thomas Sawyer <transfire@gmail.com>
@@ -16,15 +15,16 @@ resources:
16
15
  repositories:
17
16
  origin: git://github.com/proutils/lemon.git
18
17
 
19
- copyright: Copyright 2009 Thomas Sawyer
20
- license: BSD-2-Clause
21
-
22
18
  requirements:
19
+ - test
23
20
  - ae
24
21
  - ansi 1.3+
25
22
  - detroit (build)
26
23
  - reap (build)
27
24
  - qed (test)
28
- - cucumber (test)
29
- - aruba (test)
25
+
26
+ organization: RubyWorks
27
+
28
+ copyright: Copyright 2009 Thomas Sawyer
29
+ license: BSD-2-Clause
30
30
 
@@ -0,0 +1,113 @@
1
+ # Lemon
2
+
3
+ [Homepage](http://rubyworks.github.com/lemon) |
4
+ [User Guide](http://wiki.github.com/rubyworks/lemon) |
5
+ [Development](http://github.com/rubyworks/lemon) |
6
+ [Issues](http://github.com/rubyworks/lemon/issues)
7
+
8
+
9
+ ## DESCRIPTION
10
+
11
+ Lemon is a Unit Testing Framework that enforces a strict test structure mirroring the class/module and method structure of the target code. Arguably this promotes the proper technique for low-level unit testing and helps ensure good test coverage.
12
+
13
+ The difference between unit testing and functional testing, and all other forms of testing for that matter, is simply a matter of where the testing *concern* lies. The concerns of unit testing are the concerns of unit tests --the individual methods.
14
+
15
+ IMPORTANT! As of v0.9+ the API has changed. The `unit :name => "description"` notation is no longer supported.
16
+
17
+
18
+ ## EXAMPLE
19
+
20
+ Lemon tests are broken down into target class or module and target methods.
21
+ Withn these lie the acutal tests.
22
+
23
+ Let's say we have a script 'mylib.rb' consisting of the class X:
24
+
25
+ ``` ruby
26
+ class X
27
+ def a; "a"; end
28
+ end
29
+ ```
30
+
31
+ An test case for the class would be written:
32
+
33
+ ``` ruby
34
+ Covers 'mylib'
35
+
36
+ TestCase X do
37
+
38
+ Setup "Description of setup." do
39
+ @x = X.new
40
+ end
41
+
42
+ Unit :a do
43
+ Test "method #a does something expected" do
44
+ @x.a.assert.is_a? String
45
+ end
46
+
47
+ Test "method #a does something else expected" do
48
+ @x.a.assert == "x"
49
+ end
50
+ end
51
+
52
+ end
53
+ ```
54
+
55
+ The `covers` method works just like `require` with the exception that it records the file for reference --under certain scenarios it can be used to improve test coverage analysis.
56
+
57
+ The setup (also called the *concern*) is run for every subsequent test until a new setup is defined.
58
+
59
+ In conjunction with the `#setup` method, there is a `#teardown` method which can be used "tidy-up" after each test if need be.
60
+
61
+ You might have also notice by the documentation that the test methods do not have to be capitalized.
62
+
63
+ That is the bulk of the matter for writing Lemon tests. To learn about additonal features not mentioned here, check-out the [User Guide](http://wiki.github.com/rubyworks/lemon).
64
+
65
+
66
+ ## USAGE
67
+
68
+ ### Running Tests
69
+
70
+ Tests can be run using the `lemonade` command line tool.
71
+
72
+ $ lemonade test test/cases/name_case.rb
73
+
74
+ Lemon utilizes the Ruby Test system to run tests, the `lemonade test` command simply passes off the running of tests to `ruby-test`. So the `ruby-test` command-line utility can also be used directly:
75
+
76
+ $ ruby-test -r lemon test/cases/name_case.rb
77
+
78
+ Normal output is typical _dot-progress_. Other output types can be specified by the `--format` or `-f` option.
79
+
80
+ $ ruby-test -r lemon -f tap test/cases/name_case.rb
81
+
82
+ See [Ruby Test](http://rubyworks.github.com/test) for more information.
83
+
84
+ ### Checking Test Coverage
85
+
86
+ Lemon can check test coverage by loading your target system and comparing it to your tests. To do this use the <code>lemonade coverage</code> command the utility.
87
+
88
+ $ lemonade coverage -Ilib test/cases/*.rb
89
+
90
+ The coverage tool provides class/module and method coverage and is meant to as a "guidance system" for developers working toward complete test coverage. It is not an lines-of-code coverage tool and should not be considered a substitute for one.
91
+
92
+ ### Generating Test Skeletons
93
+
94
+ Because of the one to one correspondence of test case and unit test to class/module and method, Lemon can also generate test scaffolding for previously written code. To do this, use the <code>lemonade generate</code> command line utility and provide the lib location or files of the scripts for which to generate test scaffolding, and the output location for the test scripts.
95
+
96
+ $ lemonade generate -Ilib test/cases/*.rb
97
+
98
+ Generating test case scaffolding from code will undoubtedly strike test-driven developers as a case of putting the cart before the horse. However, it is not unreasonable to argue that high-level, behavior-driven, functional testing frameworks, such as Q.E.D. and Cucumber are better suited to test-first methodologies. While test-driven development can obviously be done with Lemon, unit-testing is more appropriate for testing specific, critical portions of code, or for achieving full test coverage for mission critical applications.
99
+
100
+ ### Test Directory
101
+
102
+ There is no special directory for Lemon tests. Since they are unit tests, `test/` or `test/unit/` are good choices. Other options are `cases/` and `test/cases` since each file generally defines a single test case.
103
+
104
+
105
+ ## COPYRIGHTS
106
+
107
+ Lemon Unit Testing Framework
108
+
109
+ Copyright (c) 2009 Thomas Sawyer
110
+
111
+ Lemon is distributed according to the terms of the **FreeBSD** License.
112
+
113
+ See the COPYING.rdoc file for details.
data/Rakefile CHANGED
@@ -1,13 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'test/rake'
4
+
5
+ Test::Rake::TestTask.new do |t|
6
+ t.libs << 'test/fixtures'
7
+ t.tests << 'test/*.rb'
8
+ end
9
+
1
10
  namespace :test do
2
11
 
3
- desc 'run lemon unit tests'
12
+ desc 'run lemon unit tests (via shell command)'
4
13
  task :unit do
5
- sh 'lemon -Itest/fixtures test/*.rb'
14
+ sh 'lemonade test -Itest/fixtures test/*.rb'
6
15
  end
7
16
 
8
17
  desc 'run qed demonstration tests'
9
18
  task :qed do
10
- sh 'qed'
19
+ sh 'qed -Ilib spec/'
11
20
  end
12
21
 
13
22
  end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.5
1
+ 0.9.0
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # NOTE: This command would have been called `lemon` but there turns
4
+ # out to be a command by that name used by SQLite 2.x, so
5
+ # we have avoded the name clash by using `lemonade` instead.
6
+
7
+ require 'lemon/cli'
8
+ Lemon.cli(*ARGV)
@@ -16,5 +16,55 @@ module Lemon
16
16
 
17
17
  end
18
18
 
19
- require 'lemon/cli'
20
- require 'lemon/controller/coverage_analyzer'
19
+ # Ruby Test standard location for test objects.
20
+ $TEST_SUITE ||= []
21
+
22
+ require 'lemon/test_class'
23
+
24
+ module Lemon
25
+
26
+ # Lemon's toplevel test domain specific language.
27
+ module DSL
28
+
29
+ # Require script and record it.
30
+ #
31
+ # @param [STRING] script
32
+ # The load path of a script.
33
+ #
34
+ def covers(script)
35
+ # TODO: record coverage list
36
+ require script
37
+ end
38
+ alias :Covers :covers
39
+
40
+ # Define a class/module test case.
41
+ #
42
+ # @param [Module,Class] target
43
+ # The class or module the tests will target.
44
+ #
45
+ # @yield
46
+ # Scope in which to define unit/method testcases.
47
+ #
48
+ def test_case(target, &block)
49
+ case target
50
+ when Class
51
+ $TEST_SUITE << Lemon::TestClass.new(:target=>target, &block)
52
+ when Module
53
+ $TEST_SUITE << Lemon::TestModule.new(:target=>target, &block)
54
+ else
55
+ if defined?(super)
56
+ super(target, &block)
57
+ else
58
+ raise
59
+ end
60
+ end
61
+ end
62
+
63
+ alias :TestCase :test_case
64
+ alias :testcase :test_case
65
+
66
+ end
67
+
68
+ end
69
+
70
+ extend Lemon::DSL