bertrpc 0.3.2 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.3.4
data/bertrpc.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{bertrpc}
5
- s.version = "0.3.2"
5
+ s.version = "0.3.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Tom Preston-Werner"]
9
- s.date = %q{2009-09-07}
9
+ s.date = %q{2009-09-25}
10
10
  s.email = %q{tom@mojombo.com}
11
11
  s.extra_rdoc_files = [
12
12
  "LICENSE",
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
29
29
  "lib/bertrpc/service.rb",
30
30
  "test/action_test.rb",
31
31
  "test/encodes_test.rb",
32
+ "test/error_test.rb",
32
33
  "test/mod_test.rb",
33
34
  "test/request_test.rb",
34
35
  "test/service_test.rb",
@@ -42,6 +43,7 @@ Gem::Specification.new do |s|
42
43
  s.test_files = [
43
44
  "test/action_test.rb",
44
45
  "test/encodes_test.rb",
46
+ "test/error_test.rb",
45
47
  "test/mod_test.rb",
46
48
  "test/request_test.rb",
47
49
  "test/service_test.rb",
@@ -20,15 +20,17 @@ module BERTRPC
20
20
  end
21
21
 
22
22
  def error(err)
23
- case err[0]
23
+ level, code, klass, message, backtrace = err
24
+
25
+ case level
24
26
  when :protocol
25
- raise ProtocolError.new(err[2])
27
+ raise ProtocolError.new([code, message], klass, backtrace)
26
28
  when :server
27
- raise ServerError.new(err[2])
29
+ raise ServerError.new([code, message], klass, backtrace)
28
30
  when :user
29
- raise UserError.new(err[2])
31
+ raise UserError.new([code, message], klass, backtrace)
30
32
  when :proxy
31
- raise ProxyError.new(err[2])
33
+ raise ProxyError.new([code, message], klass, backtrace)
32
34
  else
33
35
  raise
34
36
  end
@@ -1,20 +1,29 @@
1
1
  module BERTRPC
2
2
  class BERTRPCError < StandardError
3
- attr_accessor :code
4
- def initialize(msg = nil)
3
+ attr_accessor :code, :original_exception
4
+
5
+ def initialize(msg = nil, klass = nil, bt = [])
5
6
  case msg
6
7
  when Array
7
- self.code = msg[0]
8
- super(msg[1])
9
- when String
10
- self.code = nil
11
- super(msg)
8
+ code, message = msg
12
9
  else
13
- super(msg)
10
+ code, message = [0, msg]
11
+ end
12
+
13
+ if klass
14
+ self.original_exception = RemoteError.new("#{klass}: #{message}")
15
+ self.original_exception.set_backtrace(bt)
14
16
  end
17
+
18
+ self.code = code
19
+ super(message)
15
20
  end
16
21
  end
17
22
 
23
+ class RemoteError < StandardError
24
+
25
+ end
26
+
18
27
  class ConnectionError < BERTRPCError
19
28
 
20
29
  end
data/test/encodes_test.rb CHANGED
@@ -58,28 +58,28 @@ class EncodesTest < Test::Unit::TestCase
58
58
  end
59
59
 
60
60
  should "raise a ProtocolError error when protocol level error is returned" do
61
- req = @enc.encode_ruby_request([:error, [:protocol, 1, "invalid"]])
61
+ req = @enc.encode_ruby_request([:error, [:protocol, 1, "class", "invalid", []]])
62
62
  assert_raises(BERTRPC::ProtocolError) do
63
63
  @enc.decode_bert_response(req)
64
64
  end
65
65
  end
66
66
 
67
67
  should "raise a ServerError error when server level error is returned" do
68
- req = @enc.encode_ruby_request([:error, [:server, 1, "invalid"]])
68
+ req = @enc.encode_ruby_request([:error, [:server, 1, "class", "invalid", []]])
69
69
  assert_raises(BERTRPC::ServerError) do
70
70
  @enc.decode_bert_response(req)
71
71
  end
72
72
  end
73
73
 
74
74
  should "raise a UserError error when user level error is returned" do
75
- req = @enc.encode_ruby_request([:error, [:user, 1, "invalid"]])
75
+ req = @enc.encode_ruby_request([:error, [:user, 1, "class", "invalid", []]])
76
76
  assert_raises(BERTRPC::UserError) do
77
77
  @enc.decode_bert_response(req)
78
78
  end
79
79
  end
80
80
 
81
81
  should "raise a ProxyError error when proxy level error is returned" do
82
- req = @enc.encode_ruby_request([:error, [:proxy, 1, "invalid"]])
82
+ req = @enc.encode_ruby_request([:error, [:proxy, 1, "class", "invalid", []]])
83
83
  assert_raises(BERTRPC::ProxyError) do
84
84
  @enc.decode_bert_response(req)
85
85
  end
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+
3
+ class ErrorTest < Test::Unit::TestCase
4
+ context "Errors in general" do
5
+ should "be creatable with just a message string" do
6
+ begin
7
+ raise BERTRPC::BERTRPCError.new('msg')
8
+ rescue Object => e
9
+ assert_equal "msg", e.message
10
+ assert_equal 0, e.code
11
+ end
12
+ end
13
+
14
+ should "be creatable with a [code, message] array" do
15
+ begin
16
+ raise BERTRPC::BERTRPCError.new([7, 'msg'])
17
+ rescue Object => e
18
+ assert_equal "msg", e.message
19
+ assert_equal 7, e.code
20
+ end
21
+ end
22
+
23
+ should "record the original exception" do
24
+ begin
25
+ raise BERTRPC::BERTRPCError.new('msg', 'Error', ['foo', 'bar'])
26
+ rescue Object => e
27
+ assert_equal "msg", e.message
28
+ assert_equal "Error: msg", e.original_exception.message
29
+ assert_equal ['foo', 'bar'], e.original_exception.backtrace
30
+ end
31
+ end
32
+ end
33
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bertrpc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Preston-Werner
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-07 00:00:00 -07:00
12
+ date: 2009-09-25 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -48,6 +48,7 @@ files:
48
48
  - lib/bertrpc/service.rb
49
49
  - test/action_test.rb
50
50
  - test/encodes_test.rb
51
+ - test/error_test.rb
51
52
  - test/mod_test.rb
52
53
  - test/request_test.rb
53
54
  - test/service_test.rb
@@ -83,6 +84,7 @@ summary: BERTRPC is a Ruby BERT-RPC client library.
83
84
  test_files:
84
85
  - test/action_test.rb
85
86
  - test/encodes_test.rb
87
+ - test/error_test.rb
86
88
  - test/mod_test.rb
87
89
  - test/request_test.rb
88
90
  - test/service_test.rb