Module: Paraspec::MsgpackHelpers

Included in:
MsgpackClient, MsgpackServer
Defined in:
lib/paraspec/msgpack_helpers.rb

Instance Method Summary collapse

Instance Method Details

#packer(io) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/paraspec/msgpack_helpers.rb', line 6

def packer(io)
  pk = MessagePack::Packer.new(io)
  pk.register_type(1, Time) do |time|
    time.to_s
  end
  pk.register_type(2, RSpec::Core::Example::ExecutionResult) do |er|
    serialized = {}
    %w(started_at finished_at run_time status).each do |field|
      serialized[field] = er.send(field)
    end
    %w(exception pending_exception).each do |field|
      serialized[field] = Marshal.dump(er.send(field))
    end
    Marshal.dump(serialized)
  end
  pk
end

#unpacker(io) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/paraspec/msgpack_helpers.rb', line 24

def unpacker(io)
  uk = MessagePack::Unpacker.new(io)
  uk.register_type(1) do |serialized|
    Time.parse(serialized)
  end
  uk.register_type(2) do |serialized|
    serialized = Marshal.load(serialized)
    er = RSpec::Core::Example::ExecutionResult.new
    serialized.each do |k, v|
      if k == 'status'
        v = v.to_sym
      end
      if %w(exception pending_exception).include?(k)
        v = Marshal.load(v)
      end
      er.send("#{k}=", v)
    end
    er
  end
  uk
end