bertrpc 0.3.2 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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