running_man 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -95,7 +95,7 @@ task :release => :build do
95
95
  sh "git commit --allow-empty -a -m 'Release #{version}'"
96
96
  sh "git tag v#{version}"
97
97
  sh "git push origin master"
98
- sh "git push v#{version}"
98
+ sh "git push origin v#{version}"
99
99
  sh "gem push pkg/#{name}-#{version}.gem"
100
100
  end
101
101
 
data/lib/running_man.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  $LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__))
2
2
 
3
3
  module RunningMan
4
- VERSION = '0.1'
4
+ VERSION = '0.2'
5
5
 
6
6
  # Public: Sets up any helper class methods in TestClassMethods on the
7
7
  # specified test case class.
@@ -8,14 +8,20 @@ module RunningMan
8
8
  module TestClassMethods
9
9
  def fixtures(&block)
10
10
  test_block = RunningMan::ActiveRecordBlock.new(block)
11
+ active_record_fixtures_setup(test_block)
12
+ active_record_fixtures_teardown
13
+ end
14
+
15
+ def active_record_fixtures_setup(test_block)
11
16
  setup do
12
17
  test_block.run(self)
13
-
14
18
  # Open a new transaction before running any test.
15
19
  ActiveRecord::Base.connection.increment_open_transactions
16
20
  ActiveRecord::Base.connection.begin_db_transaction
17
21
  end
22
+ end
18
23
 
24
+ def active_record_fixtures_teardown
19
25
  teardown do
20
26
  # Rollback our transaction, returning our fixtures to a pristine
21
27
  # state.
@@ -6,6 +6,10 @@ module RunningMan
6
6
  test_block = RunningMan::Block.new(block)
7
7
  setup { test_block.run(self) }
8
8
  end
9
+
10
+ def teardown_once(&block)
11
+ final_teardowns << RunningMan::Block.new(block)
12
+ end
9
13
  end
10
14
 
11
15
  # block_arg - Optional Proc of code that runs only once for the test case.
@@ -43,10 +47,10 @@ module RunningMan
43
47
  # Returns nothing.
44
48
  def run_once(binding)
45
49
  @ivars.clear
46
- before = instance_variables
47
- instance_eval(&@block)
48
- (instance_variables - before).each do |ivar|
49
- @ivars[ivar] = instance_variable_get(ivar)
50
+ before = binding.instance_variables
51
+ binding.instance_eval(&@block)
52
+ (binding.instance_variables - before).each do |ivar|
53
+ @ivars[ivar] = binding.instance_variable_get(ivar)
50
54
  end
51
55
  end
52
56
 
@@ -77,4 +81,35 @@ module RunningMan
77
81
  !!@run
78
82
  end
79
83
  end
84
+ end
85
+
86
+ # TODO: Add MiniTest support for ruby 1.9
87
+ if defined?(Test::Unit::TestSuite) && defined?(Test::Unit::TestCase)
88
+ module Test
89
+ module Unit
90
+ class TestCase
91
+ def self.final_teardowns
92
+ @final_teardowns ||= []
93
+ end
94
+ end
95
+
96
+ class Suite
97
+ def run(result, &progress_block) # :nodoc:
98
+ yield(STARTED, name)
99
+ klass_to_teardown = if @tests.first.is_a?(Test::Unit::TestCase)
100
+ @tests.first.class
101
+ end
102
+ @tests.each do |test|
103
+ test.run(result, &progress_block)
104
+ end
105
+ if klass_to_teardown
106
+ klass_to_teardown.final_teardowns.each do |teardown|
107
+ teardown.run(@tests.last)
108
+ end
109
+ end
110
+ yield(FINISHED, name)
111
+ end
112
+ end
113
+ end
114
+ end
80
115
  end
data/running_man.gemspec CHANGED
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'running_man'
16
- s.version = '0.1'
17
- s.date = '2010-05-01'
16
+ s.version = '0.2'
17
+ s.date = '2010-05-03'
18
18
  s.rubyforge_project = 'running_man'
19
19
 
20
20
  ## Make sure your summary is short. The description may be as long
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
27
27
  ## a custom homepage, consider using your GitHub URL or the like.
28
28
  s.authors = ["rick"]
29
29
  s.email = 'technoweenie@gmail.com'
30
- s.homepage = 'http://techno-weenie.net'
30
+ s.homepage = 'http://github.com/technoweenie/running_man'
31
31
 
32
32
  ## This gets added to the $LOAD_PATH so that 'lib/NAME.rb' can be required as
33
33
  ## require 'NAME.rb' or'/lib/NAME/file.rb' can be as require 'NAME/file.rb'
@@ -2,24 +2,33 @@ require File.join(File.dirname(__FILE__), '..', 'test_helper')
2
2
 
3
3
  class BlockHelperTest < Test::Unit::TestCase
4
4
  class << self
5
- attr_accessor :block_calls
5
+ attr_accessor :block_calls, :test_calls
6
6
  end
7
- self.block_calls = 0
7
+ self.block_calls = self.test_calls = 0
8
+
9
+ original_string = 'abc'.freeze
8
10
 
9
11
  setup_once do
10
- @a = 1
11
- BlockHelperTest.block_calls += 1
12
+ assert_equal 'BlockHelperTest', self.class.name
13
+ @a = original_string
14
+ self.class.block_calls += 1
12
15
  end
13
16
 
14
- def teardown
17
+ teardown_once do
18
+ assert_equal 'BlockHelperTest', self.class.name
19
+ assert_equal original_string, @a
20
+ assert_equal original_string.object_id, @a.object_id
15
21
  assert_equal 1, self.class.block_calls
22
+ assert_equal 2, self.class.test_calls
16
23
  end
17
24
 
18
25
  def test_sets_ivar_from_block
19
- assert_equal 1, @a
26
+ self.class.test_calls += 1
27
+ assert_equal 'abc', @a
20
28
  end
21
29
 
22
30
  # checks that block_calls is not incremented again
23
31
  def test_again
32
+ self.class.test_calls += 1
24
33
  end
25
34
  end
metadata CHANGED
@@ -1,7 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: running_man
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.1"
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 2
8
+ version: "0.2"
5
9
  platform: ruby
6
10
  authors:
7
11
  - rick
@@ -9,7 +13,7 @@ autorequire:
9
13
  bindir: bin
10
14
  cert_chain: []
11
15
 
12
- date: 2010-05-01 00:00:00 -07:00
16
+ date: 2010-05-03 00:00:00 -07:00
13
17
  default_executable:
14
18
  dependencies: []
15
19
 
@@ -34,7 +38,7 @@ files:
34
38
  - test/running_man/block_test.rb
35
39
  - test/test_helper.rb
36
40
  has_rdoc: true
37
- homepage: http://techno-weenie.net
41
+ homepage: http://github.com/technoweenie/running_man
38
42
  licenses: []
39
43
 
40
44
  post_install_message:
@@ -46,18 +50,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
46
50
  requirements:
47
51
  - - ">="
48
52
  - !ruby/object:Gem::Version
53
+ segments:
54
+ - 0
49
55
  version: "0"
50
- version:
51
56
  required_rubygems_version: !ruby/object:Gem::Requirement
52
57
  requirements:
53
58
  - - ">="
54
59
  - !ruby/object:Gem::Version
60
+ segments:
61
+ - 0
55
62
  version: "0"
56
- version:
57
63
  requirements: []
58
64
 
59
65
  rubyforge_project: running_man
60
- rubygems_version: 1.3.5
66
+ rubygems_version: 1.3.6
61
67
  signing_key:
62
68
  specification_version: 2
63
69
  summary: Simple class for test/unit setup blocks that run just once.