mole 1.0.12 → 1.0.15
Sign up to get free protection for your applications and to get access to all the features.
- metadata +24 -146
- data/History.txt +0 -17
- data/Manifest.txt +0 -132
- data/README.txt +0 -216
- data/Rakefile +0 -46
- data/config/database.yml +0 -21
- data/config/test_database.yml +0 -69
- data/lib/mole.rb +0 -260
- data/lib/mole/db/migrate.rb +0 -90
- data/lib/mole/e_mole.rb +0 -75
- data/lib/mole/logger.rb +0 -134
- data/lib/mole/models/mole_feature.rb +0 -58
- data/lib/mole/models/mole_log.rb +0 -31
- data/lib/mole/module.rb +0 -292
- data/lib/mole/moler.rb +0 -71
- data/lib/mole/utils/frameworks.rb +0 -53
- data/lib/mole/version.rb +0 -15
- data/samples/merbapp/README +0 -14
- data/samples/merbapp/Rakefile +0 -124
- data/samples/merbapp/app/controllers/application.rb +0 -3
- data/samples/merbapp/app/controllers/exceptions.rb +0 -13
- data/samples/merbapp/app/controllers/moled.rb +0 -25
- data/samples/merbapp/app/helpers/global_helper.rb +0 -5
- data/samples/merbapp/app/mailers/views/layout/application.html.erb +0 -1
- data/samples/merbapp/app/mailers/views/layout/application.text.erb +0 -1
- data/samples/merbapp/app/parts/views/layout/application.html.erb +0 -1
- data/samples/merbapp/app/views/exceptions/internal_server_error.html.erb +0 -216
- data/samples/merbapp/app/views/exceptions/not_acceptable.html.erb +0 -38
- data/samples/merbapp/app/views/exceptions/not_found.html.erb +0 -40
- data/samples/merbapp/app/views/layout/application.html.erb +0 -11
- data/samples/merbapp/app/views/moled/index.html.erb +0 -5
- data/samples/merbapp/app/views/moled/result.html.erb +0 -5
- data/samples/merbapp/config/boot.rb +0 -11
- data/samples/merbapp/config/dependencies.rb +0 -41
- data/samples/merbapp/config/environments/development.rb +0 -1
- data/samples/merbapp/config/environments/production.rb +0 -1
- data/samples/merbapp/config/environments/test.rb +0 -1
- data/samples/merbapp/config/merb.yml +0 -82
- data/samples/merbapp/config/merb_init.rb +0 -26
- data/samples/merbapp/config/mole_config.rb +0 -33
- data/samples/merbapp/config/router.rb +0 -38
- data/samples/merbapp/config/upload.conf +0 -0
- data/samples/merbapp/public/images/merb.jpg +0 -0
- data/samples/merbapp/public/merb.fcgi +0 -6
- data/samples/merbapp/public/stylesheets/master.css +0 -119
- data/samples/merbapp/script/destroy +0 -32
- data/samples/merbapp/script/generate +0 -32
- data/samples/merbapp/script/stop_merb +0 -13
- data/samples/merbapp/spec/spec_helper.rb +0 -15
- data/samples/merbapp/test/test_helper.rb +0 -14
- data/samples/railsapp/README +0 -14
- data/samples/railsapp/Rakefile +0 -10
- data/samples/railsapp/app/controllers/application.rb +0 -13
- data/samples/railsapp/app/controllers/moled_controller.rb +0 -23
- data/samples/railsapp/app/helpers/application_helper.rb +0 -3
- data/samples/railsapp/app/views/moled/index.html.erb +0 -5
- data/samples/railsapp/app/views/moled/result.html.erb +0 -5
- data/samples/railsapp/config/boot.rb +0 -109
- data/samples/railsapp/config/database.yml +0 -13
- data/samples/railsapp/config/environment.rb +0 -59
- data/samples/railsapp/config/environments/development.rb +0 -18
- data/samples/railsapp/config/environments/production.rb +0 -20
- data/samples/railsapp/config/environments/test.rb +0 -22
- data/samples/railsapp/config/initializers/inflections.rb +0 -10
- data/samples/railsapp/config/initializers/mime_types.rb +0 -5
- data/samples/railsapp/config/initializers/mole.rb +0 -10
- data/samples/railsapp/config/moles/mole_config.rb +0 -44
- data/samples/railsapp/config/routes.rb +0 -35
- data/samples/railsapp/doc/README_FOR_APP +0 -2
- data/samples/railsapp/public/.htaccess +0 -40
- data/samples/railsapp/public/404.html +0 -30
- data/samples/railsapp/public/422.html +0 -30
- data/samples/railsapp/public/500.html +0 -30
- data/samples/railsapp/public/dispatch.cgi +0 -10
- data/samples/railsapp/public/dispatch.fcgi +0 -24
- data/samples/railsapp/public/dispatch.rb +0 -10
- data/samples/railsapp/public/favicon.ico +0 -0
- data/samples/railsapp/public/images/rails.png +0 -0
- data/samples/railsapp/public/javascripts/application.js +0 -2
- data/samples/railsapp/public/javascripts/controls.js +0 -963
- data/samples/railsapp/public/javascripts/dragdrop.js +0 -972
- data/samples/railsapp/public/javascripts/effects.js +0 -1120
- data/samples/railsapp/public/javascripts/prototype.js +0 -4225
- data/samples/railsapp/public/robots.txt +0 -5
- data/samples/railsapp/script/about +0 -3
- data/samples/railsapp/script/console +0 -3
- data/samples/railsapp/script/destroy +0 -3
- data/samples/railsapp/script/generate +0 -3
- data/samples/railsapp/script/performance/benchmarker +0 -3
- data/samples/railsapp/script/performance/profiler +0 -3
- data/samples/railsapp/script/performance/request +0 -3
- data/samples/railsapp/script/plugin +0 -3
- data/samples/railsapp/script/process/inspector +0 -3
- data/samples/railsapp/script/process/reaper +0 -3
- data/samples/railsapp/script/process/spawner +0 -3
- data/samples/railsapp/script/runner +0 -3
- data/samples/railsapp/script/server +0 -3
- data/samples/railsapp/test/test_helper.rb +0 -38
- data/samples/rubyapp/README +0 -22
- data/samples/rubyapp/bin/ruby_app +0 -35
- data/samples/rubyapp/config/mole_conf.rb +0 -31
- data/samples/rubyapp/lib/fred.rb +0 -22
- data/spec/config/auto_mole_config.rb +0 -26
- data/spec/config/mole_config.rb +0 -0
- data/spec/config/moles/fred_config.rb +0 -0
- data/spec/data/blee.rb +0 -64
- data/spec/db/migrate_spec.rb +0 -19
- data/spec/emole_spec.rb +0 -43
- data/spec/logger_spec.rb +0 -56
- data/spec/models/mole_feature_spec.rb +0 -48
- data/spec/models/mole_log_spec.rb +0 -62
- data/spec/module_spec.rb +0 -229
- data/spec/mole_spec.rb +0 -135
- data/spec/moler_spec.rb +0 -77
- data/spec/spec_helper.rb +0 -76
- data/spec/utils/framework_spec.rb +0 -99
- data/tasks/ann.rake +0 -76
- data/tasks/annotations.rake +0 -22
- data/tasks/doc.rake +0 -48
- data/tasks/gem.rake +0 -110
- data/tasks/manifest.rake +0 -49
- data/tasks/mole.rake +0 -115
- data/tasks/post_load.rake +0 -26
- data/tasks/rubyforge.rake +0 -57
- data/tasks/setup.rb +0 -227
- data/tasks/spec.rake +0 -54
- data/tasks/svn.rake +0 -44
- data/tasks/test.rake +0 -38
- data/templates/mole/e_mole/exception_alerts.rhtml +0 -14
- data/templates/mole/e_mole/feature_alerts.rhtml +0 -11
- data/templates/mole/e_mole/perf_alerts.rhtml +0 -12
@@ -1,38 +0,0 @@
|
|
1
|
-
ENV["RAILS_ENV"] = "test"
|
2
|
-
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
|
3
|
-
require 'test_help'
|
4
|
-
|
5
|
-
class Test::Unit::TestCase
|
6
|
-
# Transactional fixtures accelerate your tests by wrapping each test method
|
7
|
-
# in a transaction that's rolled back on completion. This ensures that the
|
8
|
-
# test database remains unchanged so your fixtures don't have to be reloaded
|
9
|
-
# between every test method. Fewer database queries means faster tests.
|
10
|
-
#
|
11
|
-
# Read Mike Clark's excellent walkthrough at
|
12
|
-
# http://clarkware.com/cgi/blosxom/2005/10/24#Rails10FastTesting
|
13
|
-
#
|
14
|
-
# Every Active Record database supports transactions except MyISAM tables
|
15
|
-
# in MySQL. Turn off transactional fixtures in this case; however, if you
|
16
|
-
# don't care one way or the other, switching from MyISAM to InnoDB tables
|
17
|
-
# is recommended.
|
18
|
-
#
|
19
|
-
# The only drawback to using transactional fixtures is when you actually
|
20
|
-
# need to test transactions. Since your test is bracketed by a transaction,
|
21
|
-
# any transactions started in your code will be automatically rolled back.
|
22
|
-
self.use_transactional_fixtures = true
|
23
|
-
|
24
|
-
# Instantiated fixtures are slow, but give you @david where otherwise you
|
25
|
-
# would need people(:david). If you don't want to migrate your existing
|
26
|
-
# test cases which use the @david style and don't mind the speed hit (each
|
27
|
-
# instantiated fixtures translates to a database query per test method),
|
28
|
-
# then set this back to true.
|
29
|
-
self.use_instantiated_fixtures = false
|
30
|
-
|
31
|
-
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order.
|
32
|
-
#
|
33
|
-
# Note: You'll currently still have to declare fixtures explicitly in integration tests
|
34
|
-
# -- they do not yet inherit this setting
|
35
|
-
fixtures :all
|
36
|
-
|
37
|
-
# Add more helper methods to be used by all tests here...
|
38
|
-
end
|
data/samples/rubyapp/README
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
Sample MOled Ruby App
|
2
|
-
|
3
|
-
Launch the app using either of the following cmd line
|
4
|
-
|
5
|
-
> cd samples/rubyapp
|
6
|
-
|
7
|
-
|
8
|
-
To mole a regular method
|
9
|
-
|
10
|
-
> ./bin/ruby_app --feature
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
To mole a slow method
|
15
|
-
|
16
|
-
> ./bin/ruby_app --slow
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
To mole a hosed method that will throw an uncaught exception
|
21
|
-
|
22
|
-
> ./bin/ruby_app --hosed
|
@@ -1,35 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require File.join( File.dirname(__FILE__), %w[.. lib fred] )
|
3
|
-
require 'rubygems'
|
4
|
-
|
5
|
-
# Initializes the MOle. The configuration file will be read from config/mole_conf.rb.
|
6
|
-
require 'mole'
|
7
|
-
::Mole.initialize( :moleable => true,
|
8
|
-
:application => "RubyApp",
|
9
|
-
:perf_threshold => 2,
|
10
|
-
:mole_config => File.join( File.dirname(__FILE__), %w[.. config mole_conf.rb]) )
|
11
|
-
::Mole.dump
|
12
|
-
::Mole.load_mole_configuration
|
13
|
-
|
14
|
-
class Runner
|
15
|
-
def initialize( args )
|
16
|
-
check_args( args )
|
17
|
-
fred = RubyApp::Fred.new
|
18
|
-
case args.first
|
19
|
-
when "--feature": fred.my_feature( 10, "Hello", 20 ) { puts "Hello" }
|
20
|
-
when "--slow" : fred.my_slow_feature( "World" )
|
21
|
-
when "--hosed" : fred.my_hosed_feature( "Boom" ) rescue nil
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def check_args( args )
|
26
|
-
print_usage if !args or args.empty? or !["--feature", "--slow", "--hosed"].include?( args.first )
|
27
|
-
end
|
28
|
-
|
29
|
-
def print_usage
|
30
|
-
puts "Please enter one of the following options: --feature | --slow | --hosed"
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
Runner.new( ARGV )
|
35
|
-
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# Mole a feature called 'my_feature' on class Fred
|
2
|
-
RubyApp::Fred.mole_after( :feature => :my_feature ) { |context, feature, ret, block, *args|
|
3
|
-
::Mole::Moler.mole_it(
|
4
|
-
context , # Calling context => Fred instance
|
5
|
-
feature , # Method called on Fred => my_feature
|
6
|
-
"AppBreaker" , # If we had real user information we would put it here...
|
7
|
-
:args => args.join( ", " ), # The args passed into my_feature
|
8
|
-
:returned => ret ) # The value returned by my_feature call
|
9
|
-
}
|
10
|
-
|
11
|
-
# Monitor perf on all instance methods defined on Fred
|
12
|
-
RubyApp::Fred.mole_perf do |context, feature, elapsed_time, ret, block, *args|
|
13
|
-
::Mole::Moler.perf_it(
|
14
|
-
context ,
|
15
|
-
"AppBreaker" , # User info
|
16
|
-
:controller => context.class.name ,
|
17
|
-
:feature => feature ,
|
18
|
-
:args => args ,
|
19
|
-
:returned => ret ,
|
20
|
-
:elapsed_time => "%3.3f" % elapsed_time )
|
21
|
-
end
|
22
|
-
|
23
|
-
# Monitors unchecked exceptions raise in Fred
|
24
|
-
RubyApp::Fred.mole_unchecked do |context, feature, boom, ret, block, *args|
|
25
|
-
::Mole::Moler.check_it(
|
26
|
-
context ,
|
27
|
-
"AppBreaker" , # User info
|
28
|
-
:controller => context.class.name,
|
29
|
-
:feature => feature ,
|
30
|
-
:boom => boom )
|
31
|
-
end
|
data/samples/rubyapp/lib/fred.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
# Sample ruby class that is used in our ruby applications
|
2
|
-
# We will MOle this class and capture the essence of the interactions
|
3
|
-
module RubyApp
|
4
|
-
class Fred
|
5
|
-
|
6
|
-
# Pure feature
|
7
|
-
def my_feature( arg1, arg2, arg3, &block )
|
8
|
-
"#{arg1}--#{arg2}--#{arg3}"
|
9
|
-
end
|
10
|
-
|
11
|
-
# Slow feature
|
12
|
-
def my_slow_feature( arg1 )
|
13
|
-
sleep( 2 )
|
14
|
-
"slow returned #{arg1}"
|
15
|
-
end
|
16
|
-
|
17
|
-
# Hose feature
|
18
|
-
def my_hosed_feature( arg1 )
|
19
|
-
raise "This will hose your app"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
::Mole.auto_perf( File.join( File.dirname(__FILE__), %w[.. data] ) ) do |context, feature, elapsed_time, ret_val, block, *args|
|
2
|
-
::Mole::Moler.perf_it(
|
3
|
-
context ,
|
4
|
-
"AppBreaker" ,
|
5
|
-
:controller => context.class.name,
|
6
|
-
:feature => feature ,
|
7
|
-
:args => args ,
|
8
|
-
:elapsed_time => "%3.3f" % elapsed_time )
|
9
|
-
end
|
10
|
-
|
11
|
-
::Mole.auto_unchecked( File.join( File.dirname(__FILE__), %w[.. data] ) ) do |context, feature, boom, ret_val, block, *args|
|
12
|
-
::Mole::Moler.check_it(
|
13
|
-
context ,
|
14
|
-
"AppBreaker" ,
|
15
|
-
:controller => context.class.name,
|
16
|
-
:feature => feature ,
|
17
|
-
:boom => boom )
|
18
|
-
end
|
19
|
-
|
20
|
-
::Mole.auto_after( File.join( File.dirname(__FILE__), %w[.. data] ) ) do |context, feature, ret, block, *args|
|
21
|
-
::Mole::Moler.mole_it(
|
22
|
-
context ,
|
23
|
-
feature ,
|
24
|
-
"AppBreaker",
|
25
|
-
:args => args )
|
26
|
-
end
|
data/spec/config/mole_config.rb
DELETED
File without changes
|
File without changes
|
data/spec/data/blee.rb
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
require 'mole/module'
|
2
|
-
|
3
|
-
class Blee
|
4
|
-
def self.blee_static
|
5
|
-
end
|
6
|
-
|
7
|
-
def crap_out
|
8
|
-
end
|
9
|
-
|
10
|
-
def crap_out_too
|
11
|
-
end
|
12
|
-
|
13
|
-
def blee_no_args
|
14
|
-
10
|
15
|
-
end
|
16
|
-
|
17
|
-
# Try some ßpunctuations...
|
18
|
-
def get_out?
|
19
|
-
true
|
20
|
-
end
|
21
|
-
|
22
|
-
def blee_args( a, b, c, d )
|
23
|
-
# puts ">>> Blee Many Args #{[a,b,c,d].join( "--" )}"
|
24
|
-
20
|
25
|
-
end
|
26
|
-
|
27
|
-
def blee_block( a, b, c, d, &block )
|
28
|
-
# puts ">>> Blee Many Block #{[a,b,c,d,block].join( "--" )}"
|
29
|
-
10
|
30
|
-
end
|
31
|
-
|
32
|
-
def blee_args_ret( a )
|
33
|
-
"Hello #{a}"
|
34
|
-
end
|
35
|
-
|
36
|
-
def blee_raise
|
37
|
-
raise "Blee exception"
|
38
|
-
end
|
39
|
-
|
40
|
-
def blee_raise_too
|
41
|
-
raise "Blee exception"
|
42
|
-
end
|
43
|
-
|
44
|
-
def blee_slow
|
45
|
-
sleep( 1 )
|
46
|
-
end
|
47
|
-
|
48
|
-
def blee_slow_too
|
49
|
-
sleep( 1 )
|
50
|
-
end
|
51
|
-
|
52
|
-
private
|
53
|
-
|
54
|
-
def blee_private( arg )
|
55
|
-
arg
|
56
|
-
end
|
57
|
-
|
58
|
-
protected
|
59
|
-
|
60
|
-
def blee_protected( arg )
|
61
|
-
arg
|
62
|
-
end
|
63
|
-
|
64
|
-
end
|
data/spec/db/migrate_spec.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "..", "spec_helper" )
|
2
|
-
|
3
|
-
describe Mole::Db::Migrate do
|
4
|
-
before( :all ) do
|
5
|
-
::Mole.reset_configuration!
|
6
|
-
::Mole.initialize( :moleable => true )
|
7
|
-
@config = ::File.expand_path( ::File.join(::File.dirname(__FILE__), %w[.. .. config database.yml] ) )
|
8
|
-
end
|
9
|
-
|
10
|
-
it "migrates down correctly" do
|
11
|
-
mgt = Mole::Db::Migrate.new( OpenStruct.new( :direction => :down, :configuration => @config, :environment => 'test' ) )
|
12
|
-
mgt.apply
|
13
|
-
end
|
14
|
-
|
15
|
-
it "migrates up correctly" do
|
16
|
-
mgt = Mole::Db::Migrate.new( OpenStruct.new( :direction => :up, :configuration => @config, :environment => 'test' ) )
|
17
|
-
mgt.apply
|
18
|
-
end
|
19
|
-
end
|
data/spec/emole_spec.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "spec_helper" )
|
2
|
-
|
3
|
-
require 'action_mailer'
|
4
|
-
ActionMailer::Base.delivery_method = :sendmail
|
5
|
-
ActionMailer::Base.raise_delivery_errors = true
|
6
|
-
|
7
|
-
# TODO Figure out how to auto check email was sent
|
8
|
-
describe Mole::EMole do
|
9
|
-
before( :each ) do
|
10
|
-
::Mole.reset_configuration!
|
11
|
-
::Mole.initialize( :moleable => true,
|
12
|
-
:emole_from => "MOleBeatch@liquidrail.com",
|
13
|
-
:emole_recipients => ['fernand@liquidrail.com'] )
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should send out a correct perf alert" do
|
17
|
-
Mole::EMole.deliver_perf_alerts(
|
18
|
-
self,
|
19
|
-
"fernand",
|
20
|
-
:feature => "test",
|
21
|
-
:elapsed_time => 10 )
|
22
|
-
end
|
23
|
-
|
24
|
-
it "should send out a correct feature alert" do
|
25
|
-
Mole::EMole.deliver_feature_alerts(
|
26
|
-
self,
|
27
|
-
"fernand",
|
28
|
-
:feature => "test",
|
29
|
-
:fred => "blee" )
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should send out a correct exception alert" do
|
33
|
-
begin
|
34
|
-
raise "Something craped out"
|
35
|
-
rescue => boom
|
36
|
-
Mole::EMole.deliver_exception_alerts(
|
37
|
-
self,
|
38
|
-
"fernand",
|
39
|
-
:feature => "test",
|
40
|
-
:boom => boom )
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
data/spec/logger_spec.rb
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), "spec_helper" )
|
2
|
-
|
3
|
-
require 'stringio'
|
4
|
-
require File.join(File.dirname(__FILE__), %w[.. lib mole logger] )
|
5
|
-
|
6
|
-
describe Mole::Logger do
|
7
|
-
it "raises an error if the email addresses passed in is empty" do
|
8
|
-
lambda { Mole::Logger.new( { :email_alerts_to => [] } ) }.should raise_error( Mole::Logger::ConfigurationError )
|
9
|
-
end
|
10
|
-
|
11
|
-
it "configures an email appender if :email_alerts is set" do
|
12
|
-
l = Mole::Logger.new( { :logger_name => "Test2", :email_alerts_to => "fernand@invalid.address", :email_alert_level => :off })
|
13
|
-
l.email_appender.should_not == nil
|
14
|
-
end
|
15
|
-
|
16
|
-
it "does not configure an email appender if :email_alerts is not set" do
|
17
|
-
l = Mole::Logger.new( { :logger_name => "Test3" })
|
18
|
-
lambda { l.email_appender }.should raise_error( Mole::Logger::ConfigurationError )
|
19
|
-
end
|
20
|
-
|
21
|
-
it "raises an error if an invalid object is passed in for the :log_file" do
|
22
|
-
lambda { l = Mole::Logger.new( { :log_file => Object.new } ) }.should raise_error( Mole::Logger::ConfigurationError )
|
23
|
-
end
|
24
|
-
|
25
|
-
it "logs to an IO stream if given" do
|
26
|
-
io = StringIO.new
|
27
|
-
l = Mole::Logger.new( { :log_file => io, :logger_name => "Test4" })
|
28
|
-
l.info "This is a test io message"
|
29
|
-
io.string.split("\n").should have(1).item
|
30
|
-
io.string.should =~ /This is a test io message/
|
31
|
-
io.string.should =~ /INFO/
|
32
|
-
end
|
33
|
-
|
34
|
-
it "logs to a file if given a file name to log to" do
|
35
|
-
log_file = "/tmp/mole_logger_test.log"
|
36
|
-
FileUtils.rm( log_file ) if File.exists?( log_file )
|
37
|
-
l = Mole::Logger.new({ :log_file => log_file, :logger_name => "Test5" })
|
38
|
-
l.info "This is a test log file message"
|
39
|
-
|
40
|
-
log_lines = IO.readlines(log_file)
|
41
|
-
|
42
|
-
log_lines.should have(1).items
|
43
|
-
log_lines.first.should =~ /This is a test log file message/
|
44
|
-
log_lines.first.should =~ /INFO/
|
45
|
-
end
|
46
|
-
|
47
|
-
it "creates a logger from another logger" do
|
48
|
-
io = StringIO.new
|
49
|
-
l = Mole::Logger.new( { :log_file => io, :logger_name => ::Mole})
|
50
|
-
child_l = l.for(Mole)
|
51
|
-
|
52
|
-
child_l.info "This is a child log message"
|
53
|
-
io.string.should =~ /This is a child log message/
|
54
|
-
io.string.should =~ /INFO/
|
55
|
-
end
|
56
|
-
end
|