spec/compiler_spec.rb in ruby-protocol-buffers-1.3.3 vs spec/compiler_spec.rb in ruby-protocol-buffers-1.4.0
- old
+ new
@@ -2,22 +2,57 @@
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
require 'protocol_buffers'
require 'protocol_buffers/compiler'
+require 'protocol_buffers/compiler/file_descriptor_to_ruby'
+
+require 'tmpdir'
+require 'tempfile'
describe ProtocolBuffers, "compiler" do
test_files = Dir[File.join(File.dirname(__FILE__), "proto_files", "*.proto")]
before do
pending "need protoc installed" unless has_compiler?
end
test_files.each do |file|
+ next if File.basename(file) == 'depends.proto'
+
it "can compile #{File.basename(file)}" do
proc do
ProtocolBuffers::Compiler.compile_and_load(file)
end.should_not raise_error()
+ end
+ end
+
+ it 'can compile and instantiate a proto with nested dependencies' do
+ protocfile = Tempfile.new('ruby-protoc')
+ protocfile.binmode
+
+ ProtocolBuffers::Compiler.compile(protocfile.path, %w(
+ spec/proto_files/simple.proto
+ spec/proto_files/nested/child.proto
+ spec/proto_files/depends.proto
+ ), :include_dirs => %w(spec/proto_files))
+
+
+ descriptor_set = FileDescriptorSet.parse(protocfile)
+ protocfile.close(true)
+
+ Dir.mktmpdir do |dir|
+ descriptor_set.file.each do |file|
+ name = file.name
+ path = File.join(dir, File.dirname(name), File.basename(name, '.proto') + '.pb.rb')
+ FileUtils.mkdir_p File.dirname(path)
+ File.open(path, "w") {|f|
+ FileDescriptorToRuby.new(file).write(f)
+ }
+ end
+
+ $LOAD_PATH << dir
+ load File.join(dir, 'depends.pb.rb')
end
end
it "can compile and instantiate a message in a package with under_scores" do
Object.send(:remove_const, :UnderScore) if defined?(UnderScore)