dust 0.1.2 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -0,0 +1,31 @@
1
+ = Dust
2
+
3
+ Dust adds descriptive block syntax test definition.
4
+
5
+ by Jay[http://blog.jayfields.com] Fields[http://blog.jayfields.com]
6
+
7
+ == Download and Installation
8
+
9
+ You can download Dust from here[http://rubyforge.org/projects/dust] or install it with the following command.
10
+
11
+ $ gem install dust
12
+
13
+ == License
14
+
15
+ You may use, copy and redistribute this library under the same terms as Ruby itself (see http://www.ruby-lang.org/en/LICENSE.txt).
16
+
17
+ == Examples
18
+
19
+ unit_tests do
20
+
21
+ test "assert true" do
22
+ assert_equal true, true
23
+ end
24
+
25
+ end
26
+
27
+ See the tests for more examples
28
+
29
+ == Contributors
30
+
31
+ Dan Manges
@@ -1,4 +1,4 @@
1
- class Array
1
+ class Array #:nodoc:
2
2
  def arrayize
3
3
  self
4
4
  end
@@ -1,4 +1,20 @@
1
- module Dust
1
+ module Dust #:nodoc:
2
+ # Dust::DefinitionError is raised when you attempt to define a disallowed method within a test file.
3
+ #
4
+ # Test::Unit::TestCase.disallow_setup!
5
+ #
6
+ # unit_tests do
7
+ # def setup
8
+ # ...
9
+ # end
10
+ #
11
+ # test "name" do
12
+ # ...
13
+ # end
14
+ # end
15
+ #
16
+ # The above code will generate the following error
17
+ # Dust::DefinitionError: setup is not allowed on class Units::[TestClassName]
2
18
  class DefinitionError < StandardError
3
19
  end
4
20
  end
@@ -1,6 +1,7 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/object_extension')
2
2
  require File.expand_path(File.dirname(__FILE__) + '/array_extension')
3
3
  require File.expand_path(File.dirname(__FILE__) + '/nil_extension')
4
+ require File.expand_path(File.dirname(__FILE__) + '/string_extension')
4
5
  require File.expand_path(File.dirname(__FILE__) + '/symbol_extension')
5
6
  require File.expand_path(File.dirname(__FILE__) + '/test_case_extension')
6
7
  require File.expand_path(File.dirname(__FILE__) + '/definition_error')
@@ -1,4 +1,4 @@
1
- class NilClass
1
+ class NilClass #:nodoc:
2
2
  def arrayize
3
3
  []
4
4
  end
@@ -1,31 +1,57 @@
1
1
  class Object
2
+ # call-seq: unit_tests(options={}, &block)
3
+ #
4
+ # Used to define a block of unit tests.
5
+ #
6
+ # unit_tests do
7
+ # test "verify something" do
8
+ # ...
9
+ # end
10
+ # end
11
+ #
12
+ # Configuration Options:
13
+ # * allow - Allows you to specify the methods that are allowed despite being disallowed.
14
+ # See Test::Unit::TestCase.disallow_helpers! or Test::Unit::TestCase.disallow_setup! for more info
2
15
  def unit_tests(options={}, &block)
3
16
  do_tests("Units", options, &block)
4
17
  end
5
18
 
19
+ # call-seq: unit_tests(options={}, &block)
20
+ #
21
+ # Used to define a block of functional tests.
22
+ #
23
+ # functional_tests do
24
+ # test "verify something" do
25
+ # ...
26
+ # end
27
+ # end
28
+ #
29
+ # Configuration Options:
30
+ # * allow - Allows you to specify the methods that are allowed despite being disallowed.
31
+ # See Test::Unit::TestCase.disallow_helpers! or Test::Unit::TestCase.disallow_setup! for more info
6
32
  def functional_tests(options={}, &block)
7
33
  do_tests("Functionals", options, &block)
8
34
  end
9
35
 
10
- private
11
- def do_tests(type, options, &block)
36
+ protected
37
+ def do_tests(type, options, &block) #:nodoc:
12
38
  options[:allow] = options[:allow].arrayize
13
39
  full_path_file_name = eval "__FILE__", block.binding
14
40
  test_name = File.basename(full_path_file_name, ".rb")
15
- test_class = eval "module #{type}; class #{test_name.capitalize} < Test::Unit::TestCase; self; end; end"
41
+ test_class = eval "module #{type}; class #{test_name.to_class_name} < Test::Unit::TestCase; self; end; end"
16
42
  test_class.class_eval &block
17
43
  check_for_setup(test_class, options)
18
44
  check_for_helpers(test_class, options)
19
45
  end
20
46
 
21
- def check_for_setup(test_class, options)
47
+ def check_for_setup(test_class, options) #:nodoc:
22
48
  if test_class.instance_methods(false).include?("setup") && Test::Unit::TestCase.disallow_setup? &&
23
49
  !options[:allow].include?(:setup)
24
50
  raise Dust::DefinitionError.new("setup is not allowed on class #{test_class.name}")
25
51
  end
26
52
  end
27
53
 
28
- def check_for_helpers(test_class, options)
54
+ def check_for_helpers(test_class, options) #:nodoc:
29
55
  test_class.instance_methods(false).each do |method_name|
30
56
  if method_name !~ /^test_/ && Test::Unit::TestCase.disallow_helpers? && !options[:allow].include?(method_name.to_sym)
31
57
  p method_name.to_sym
@@ -0,0 +1,5 @@
1
+ class String #:nodoc:
2
+ def to_class_name
3
+ gsub(/(^|_)(.)/) { $2.upcase }
4
+ end
5
+ end
@@ -1,4 +1,4 @@
1
- class Symbol
1
+ class Symbol #:nodoc:
2
2
  def arrayize
3
3
  [self]
4
4
  end
@@ -1,25 +1,76 @@
1
- class Test::Unit::TestCase
2
- def self.disallow_setup!
3
- @disallow_setup = true
4
- end
1
+ module Test #:nodoc:
2
+ module Unit #:nodoc:
3
+ class TestCase
4
+ # call-seq: disallow_setup!
5
+ #
6
+ # Used to disallow setup methods in test specifications.
7
+ #
8
+ # Test::Unit::TestCase.disallow_setup!
9
+ #
10
+ # A test specification can override this behavior by passing :setup in the :allow options.
11
+ #
12
+ # unit_tests :allow => :setup do
13
+ # def setup
14
+ # ...
15
+ # end
16
+ #
17
+ # test "verify something" do
18
+ # ...
19
+ # end
20
+ # end
21
+ def self.disallow_setup!
22
+ @disallow_setup = true
23
+ end
5
24
 
6
- def self.disallow_setup?
7
- @disallow_setup
8
- end
25
+ def self.disallow_setup? #:nodoc:
26
+ @disallow_setup
27
+ end
9
28
 
10
- def self.disallow_helpers!
11
- @disallow_helpers = true
12
- end
29
+ # call-seq: disallow_helpers!
30
+ #
31
+ # Used to disallow helper methods in test specifications.
32
+ #
33
+ # Test::Unit::TestCase.disallow_helper!
34
+ #
35
+ # A test specification can override this behavior by passing the helper name (as a symbol) in the :allow options.
36
+ #
37
+ # unit_tests :allow => [:create_something, :destroy_something] do
38
+ # test "verify something" do
39
+ # ...
40
+ # end
41
+ #
42
+ # def create_something
43
+ # ...
44
+ # end
45
+ #
46
+ # def destroy_something
47
+ # ...
48
+ # end
49
+ # end
50
+ def self.disallow_helpers!
51
+ @disallow_helpers = true
52
+ end
13
53
 
14
- def self.disallow_helpers?
15
- @disallow_helpers
16
- end
54
+ def self.disallow_helpers? #:nodoc:
55
+ @disallow_helpers
56
+ end
17
57
 
18
- def self.test(name, &block)
19
- test_name = "test_#{name.gsub(/[\s]/,'_')}".to_sym
20
- raise "#{test_name} is already defined in #{self}" if self.instance_methods.include? test_name.to_s
21
- define_method test_name do
22
- instance_eval &block
58
+ # call-seq: test(name, &block)
59
+ #
60
+ # Used to define a test and assign it a descriptive name.
61
+ #
62
+ # unit_tests do
63
+ # test "verify something" do
64
+ # ...
65
+ # end
66
+ # end
67
+ def self.test(name, &block)
68
+ test_name = "test_#{name.gsub(/[\s]/,'_')}".to_sym
69
+ raise "#{test_name} is already defined in #{self}" if self.instance_methods.include? test_name.to_s
70
+ define_method test_name do
71
+ instance_eval &block
72
+ end
73
+ end
23
74
  end
24
75
  end
25
76
  end
@@ -28,7 +28,7 @@ Gem::manage_gems
28
28
  specification = Gem::Specification.new do |s|
29
29
  s.name = "dust"
30
30
  s.summary = "Dust is an add on for Test::Unit that allows an alternative test definintion syntax."
31
- s.version = "0.1.2"
31
+ s.version = "0.1.4"
32
32
  s.author = 'Jay Fields'
33
33
  s.description = "Dust is an add on for Test::Unit that allows an alternative test definintion syntax."
34
34
  s.email = 'dust-developer@rubyforge.org'
@@ -10,7 +10,7 @@ begin
10
10
  end
11
11
  raise "shouldn't be here"
12
12
  rescue Dust::DefinitionError => ex
13
- raise unless ex.message == "helper methods are not allowed on class Units::Failing_with_helper_unit_test"
13
+ raise unless ex.message == "helper methods are not allowed on class Units::FailingWithHelperUnitTest"
14
14
  ensure
15
15
  Test::Unit::TestCase.class_eval { @disallow_helpers = nil }
16
16
  end
@@ -10,7 +10,7 @@ begin
10
10
  end
11
11
  raise "shouldn't be here"
12
12
  rescue Dust::DefinitionError => ex
13
- raise unless ex.message == "setup is not allowed on class Units::Failing_with_setup_unit_test"
13
+ raise unless ex.message == "setup is not allowed on class Units::FailingWithSetupUnitTest"
14
14
  ensure
15
15
  Test::Unit::TestCase.class_eval { @disallow_setup = nil }
16
16
  end
@@ -4,4 +4,9 @@ functional_tests do
4
4
  test "assert true" do
5
5
  assert_equal true, true
6
6
  end
7
+
8
+ test "class name is Functionals::FunctionalTest" do
9
+ assert_equal "Functionals::FunctionalTest", self.class.name
10
+ end
11
+
7
12
  end
@@ -4,4 +4,8 @@ unit_tests do
4
4
  test "assert true" do
5
5
  assert_equal true, true
6
6
  end
7
+
8
+ test "class name is Units::PassingUnitTest" do
9
+ assert_equal "Units::PassingUnitTest", self.class.name
10
+ end
7
11
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: dust
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.1.2
7
- date: 2007-08-14 00:00:00 -04:00
6
+ version: 0.1.4
7
+ date: 2007-08-17 00:00:00 -04:00
8
8
  summary: Dust is an add on for Test::Unit that allows an alternative test definintion syntax.
9
9
  require_paths:
10
10
  - lib
@@ -34,6 +34,7 @@ files:
34
34
  - lib/dust.rb
35
35
  - lib/nil_extension.rb
36
36
  - lib/object_extension.rb
37
+ - lib/string_extension.rb
37
38
  - lib/symbol_extension.rb
38
39
  - lib/test_case_extension.rb
39
40
  - test/all_tests.rb