<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -244,9 +244,9 @@ Unable to continue without login and password. Do one of the following:
         log.error(e.to_s)
       rescue SystemStackError =&gt; e
         log.error(e.to_s)
-      ensure
-        return return_value
       end
+
+      return return_value
     end
   end
 end</diff>
      <filename>lib/twibot/bot.rb</filename>
    </modified>
    <modified>
      <diff>@@ -179,6 +179,41 @@ class TestBot &lt; Test::Unit::TestCase
     bot = Twibot::Bot.new(Twibot::Config.default)
     assert_equal :public, bot.instance_eval { @config.to_hash[:timeline_for] }
   end
+
+  context &quot;sandboxed network errors&quot; do
+    should &quot;rescue certain errors&quot; do
+      bot = Twibot::Bot.new(Twibot::Config.default)
+
+      assert_nothing_raised do
+        bot.send(:sandbox) { raise Twitter::RESTError.new }
+        bot.send(:sandbox) { raise Errno::ECONNRESET.new }
+        bot.send(:sandbox) { raise Timeout::Error.new }
+        bot.send(:sandbox) { raise EOFError.new }
+        bot.send(:sandbox) { raise Errno::ETIMEDOUT.new }
+        bot.send(:sandbox) { raise JSON::ParserError.new }
+        bot.send(:sandbox) { raise OpenSSL::SSL::SSLError.new }
+        bot.send(:sandbox) { raise SystemStackError.new }
+      end
+    end
+
+    should &quot;return default value if error is rescued&quot; do
+      bot = Twibot::Bot.new(Twibot::Config.default)
+      assert_equal(42, bot.send(:sandbox, 42) { raise Twitter::RESTError })
+    end
+
+    should &quot;not return default value when no error was raised&quot; do
+      bot = Twibot::Bot.new(Twibot::Config.default)
+      assert_equal(65, bot.send(:sandbox, 42) { 65 })
+    end
+
+    should &quot;not swallow unknown errors&quot; do
+      bot = Twibot::Bot.new(Twibot::Config.default)
+
+      assert_raise StandardError do
+        bot.send(:sandbox) { raise StandardError.new &quot;Oops!&quot; }
+      end
+    end
+  end
 end
 
 class TestBotMacros &lt; Test::Unit::TestCase
@@ -207,6 +242,28 @@ class TestBotMacros &lt; Test::Unit::TestCase
     assert respond_to?(:twitter)
     assert respond_to?(:client)
   end
+
+  context &quot;posting replies&quot; do
+    should &quot;work with string messages&quot; do
+      text = &quot;Hey there&quot;
+      status = Twitter::Status.new(:id =&gt; 123,
+                                   :text =&gt; &quot;Some text&quot;,
+                                   :user =&gt; Twitter::User.new(:screen_name =&gt; &quot;cjno&quot;))
+      client.expects(:status).with(:reply, &quot;@cjno #{text}&quot;, 123).returns(true)
+
+      assert post_reply(status, text)
+    end
+
+    should &quot;work with status object messages&quot; do
+      reply = Twitter::Status.new :text =&gt; &quot;Hey there&quot;
+      status = Twitter::Status.new(:id =&gt; 123,
+                                   :text =&gt; &quot;Some text&quot;,
+                                   :user =&gt; Twitter::User.new(:screen_name =&gt; &quot;cjno&quot;))
+      client.expects(:status).with(:reply, &quot;@cjno Hey there&quot;, 123).returns(true)
+
+      assert post_reply(status, reply)
+    end
+  end
 end
 
 class TestBotHandlers &lt; Test::Unit::TestCase</diff>
      <filename>test/test_bot.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>e7a13337cb1c1217cbc0f3a9133c53a848edeaf4</id>
    </parent>
  </parents>
  <author>
    <name>Christian Johansen</name>
    <email>christian@cjohansen.no</email>
  </author>
  <url>http://github.com/cjohansen/twibot/commit/d5ccaad25c7a6f5e33a56283ec41e3faf72343e4</url>
  <id>d5ccaad25c7a6f5e33a56283ec41e3faf72343e4</id>
  <committed-date>2009-05-24T13:53:23-07:00</committed-date>
  <authored-date>2009-05-24T13:53:23-07:00</authored-date>
  <message>Fixed exception sandboxing so it doesn't swallow all exceptions. Added tests for sandbox and post_reply</message>
  <tree>93266c76c075d8d1bb4adc15b2d77f4e0c608874</tree>
  <committer>
    <name>Christian Johansen</name>
    <email>christian@cjohansen.no</email>
  </committer>
</commit>
