diff options
author | jfarrell <jfarrell@apache.org> | 2015-01-29 23:03:34 -0500 |
---|---|---|
committer | jfarrell <jfarrell@apache.org> | 2015-01-29 23:03:34 -0500 |
commit | 4e16718e998df64e0e3c9a01ddb85af32f344933 (patch) | |
tree | 0cead9361215a34c5b85b284f0ee97830bfe9767 /lib/rb | |
parent | 176c9261ed4008a90c0e94fb1007c152dec91ac3 (diff) | |
download | thrift-4e16718e998df64e0e3c9a01ddb85af32f344933.tar.gz |
Thrift-2960: Fix namespace regression for Ruby
Client: rb
Patch: Jan Brauer
Add test that exposes the broken namespacing.
Fixes a bug introduced by #140.
This closes #363
Diffstat (limited to 'lib/rb')
-rw-r--r-- | lib/rb/Rakefile | 8 | ||||
-rw-r--r-- | lib/rb/spec/flat_spec.rb | 62 | ||||
-rw-r--r-- | lib/rb/spec/spec_helper.rb | 3 |
3 files changed, 72 insertions, 1 deletions
diff --git a/lib/rb/Rakefile b/lib/rb/Rakefile index ef00a9f53..8f1c4fec3 100644 --- a/lib/rb/Rakefile +++ b/lib/rb/Rakefile @@ -38,7 +38,7 @@ RSpec::Core::RakeTask.new(:'spec:rcov') do |t| end desc 'Compile the .thrift files for the specs' -task :'gen-rb' => [:'gen-rb:spec', :'gen-rb:namespaced_spec', :'gen-rb:benchmark', :'gen-rb:debug_proto'] +task :'gen-rb' => [:'gen-rb:spec', :'gen-rb:namespaced_spec', :'gen-rb:flat_spec', :'gen-rb:benchmark', :'gen-rb:debug_proto'] namespace :'gen-rb' do task :'spec' do dir = File.dirname(__FILE__) + '/spec' @@ -50,6 +50,12 @@ namespace :'gen-rb' do sh THRIFT, '--gen', 'rb:namespaced', '-recurse', '-o', dir, "#{dir}/ThriftNamespacedSpec.thrift" end + task :'flat_spec' do + dir = File.dirname(__FILE__) + '/spec' + mkdir_p("#{dir}/gen-rb/flat") + sh THRIFT, '--gen', 'rb', '-recurse', '-out', "#{dir}/gen-rb/flat", "#{dir}/ThriftNamespacedSpec.thrift" + end + task :'benchmark' do dir = File.dirname(__FILE__) + '/benchmark' sh THRIFT, '--gen', 'rb', '-o', dir, "#{dir}/Benchmark.thrift" diff --git a/lib/rb/spec/flat_spec.rb b/lib/rb/spec/flat_spec.rb new file mode 100644 index 000000000..f37878231 --- /dev/null +++ b/lib/rb/spec/flat_spec.rb @@ -0,0 +1,62 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# + +require 'spec_helper' + +describe 'generation' do + before do + require 'namespaced_nonblocking_service' + end + + it "did not generate the wrong files" do + prefix = File.expand_path("../gen-rb/flat", __FILE__) + ["namespaced_spec_namespace/namespaced_nonblocking_service.rb", + "namespaced_spec_namespace/thrift_namespaced_spec_constants.rb", + "namespaced_spec_namespace/thrift_namespaced_spec_types.rb", + "other_namespace/referenced_constants.rb", + "other_namespace/referenced_types.rb" + ].each do |name| + File.exist?(File.join(prefix, name)).should_not be_true + end + end + + it "generated the right files" do + prefix = File.expand_path("../gen-rb/flat", __FILE__) + ["namespaced_nonblocking_service.rb", + "thrift_namespaced_spec_constants.rb", + "thrift_namespaced_spec_types.rb", + "referenced_constants.rb", + "referenced_types.rb" + ].each do |name| + File.exist?(File.join(prefix, name)).should be_true + end + end + + it "has a service class in the right place" do + defined?(NamespacedSpecNamespace::NamespacedNonblockingService).should be_true + end + + it "has a struct in the right place" do + defined?(NamespacedSpecNamespace::Hello).should be_true + end + + it "required an included file" do + defined?(OtherNamespace::SomeEnum).should be_true + end +end diff --git a/lib/rb/spec/spec_helper.rb b/lib/rb/spec/spec_helper.rb index 8664b6645..3672bf065 100644 --- a/lib/rb/spec/spec_helper.rb +++ b/lib/rb/spec/spec_helper.rb @@ -59,3 +59,6 @@ module Fixtures COMPACT_PROTOCOL_TEST_STRUCT.set_byte_map = nil COMPACT_PROTOCOL_TEST_STRUCT.map_byte_map = nil end + +$:.unshift File.join(File.dirname(__FILE__), *%w[gen-rb/flat]) + |