Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-4342

Support ruby rspec 3

    XMLWordPrintableJSON

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.10.0
    • Fix Version/s: 0.12.0
    • Component/s: Ruby - Library
    • Labels:
      None
    • Environment:

      docker ubuntu-xenial (ruby 2.3.1)

      Description

      I don't know much about ruby. Anybody who can assist is welcome to do so! I tried to update us to rspec 2.99.x to prepare for rspec 3 and got a lot of errors. We should be running the latest versions of test tools in thrift.gemspec. Also note the apache license in the gemspec is not quite right...

      Pending:
        Client Thrift::Client should increment the sequence id when sending messages
          # it seems sequence ids are completely ignored right now
          # ./spec/client_spec.rb:55
      
      Failures:
      
        1) BinaryProtocolAccelerated it should behave like a binary protocol should write a byte
           Failure/Error: @trans.rspec_verify
           NoMethodError:
             undefined method `rspec_verify' for #<Thrift::MemoryBufferTransport:0x00000000869c28>
           Shared Example Group: "a binary protocol" called from ./spec/binary_protocol_accelerated_spec.rb:28
           # ./spec/binary_protocol_spec_shared.rb:112:in `block (2 levels) in <top (required)>'
      
        2) BinaryProtocol it should behave like a binary protocol should write a byte
           Failure/Error: @trans.rspec_verify
           NoMethodError:
             undefined method `rspec_verify' for #<Thrift::MemoryBufferTransport:0x000000022165b8>
           Shared Example Group: "a binary protocol" called from ./spec/binary_protocol_spec.rb:25
           # ./spec/binary_protocol_spec_shared.rb:112:in `block (2 levels) in <top (required)>'
      
      Deprecation Warnings:
      
      --------------------------------------------------------------------------------
      The semantics of `RSpec::Core::Pending#pending` are changing in
      RSpec 3.  In RSpec 2.x, it caused the example to be skipped. In
      RSpec 3, the rest of the example will still be run but is expected
      to fail, and will be marked as a failure (rather than as pending)
      if the example passes.
      
      Any passed block will no longer be executed. This feature is being
      removed since it was semantically inconsistent, and the behaviour it
      offered is being made available with the other ways of marking an
      example pending.
      
      To keep the same skip semantics, change `pending` to `skip`.
      Otherwise, if you want the new RSpec 3 behavior, you can safely
      ignore this warning and continue to upgrade to RSpec 3 without
      addressing it.
      
      Called from /thrift/src/lib/rb/spec/client_spec.rb:56:in `block (3 levels) in <top (required)>'.
      
      --------------------------------------------------------------------------------
      
      `and_return { value }` is deprecated. Use `and_return(value)` or an implementation block without `and_return` instead. Called from /thrift/src/lib/rb/spec/client_spec.rb:79:in `block (3 levels) in <top (required)>'.
      `and_return { value }` is deprecated. Use `and_return(value)` or an implementation block without `and_return` instead. Called from /thrift/src/lib/rb/spec/http_client_spec.rb:38:in `block (3 levels) in <top (required)>'.
      `and_return { value }` is deprecated. Use `and_return(value)` or an implementation block without `and_return` instead. Called from /thrift/src/lib/rb/spec/http_client_spec.rb:41:in `block (5 levels) in <top (required)>'.
      Too many uses of deprecated '`and_return { value }`'. Pass `--deprecation-out` or set `config.deprecation_stream` to a file for full output.
      
      `be_false` is deprecated. Use `be_falsey` (for Ruby's conditional semantics) or `be false` (for exact `== false` equality) instead. Called from /thrift/src/lib/rb/spec/base_transport_spec.rb:279:in `block (3 levels) in <top (required)>'.
      `be_false` is deprecated. Use `be_falsey` (for Ruby's conditional semantics) or `be false` (for exact `== false` equality) instead. Called from /thrift/src/lib/rb/spec/struct_spec.rb:63:in `block (3 levels) in <top (required)>'.
      `be_false` is deprecated. Use `be_falsey` (for Ruby's conditional semantics) or `be false` (for exact `== false` equality) instead. Called from /thrift/src/lib/rb/spec/struct_spec.rb:83:in `block (3 levels) in <top (required)>'.
      Too many uses of deprecated '`be_false`'. Pass `--deprecation-out` or set `config.deprecation_stream` to a file for full output.
      
      `be_true` is deprecated. Use `be_truthy` (for Ruby's conditional semantics) or `be true` (for exact `== true` equality) instead. Called from /thrift/src/lib/rb/spec/base_transport_spec.rb:44:in `block (4 levels) in <top (required)>'.
      `be_true` is deprecated. Use `be_truthy` (for Ruby's conditional semantics) or `be true` (for exact `== true` equality) instead. Called from /thrift/src/lib/rb/spec/base_transport_spec.rb:56:in `block (4 levels) in <top (required)>'.
      `be_true` is deprecated. Use `be_truthy` (for Ruby's conditional semantics) or `be true` (for exact `== true` equality) instead. Called from /thrift/src/lib/rb/spec/base_transport_spec.rb:273:in `block (3 levels) in <top (required)>'.
      Too many uses of deprecated '`be_true`'. Pass `--deprecation-out` or set `config.deprecation_stream` to a file for full output.
      
      `expect { }.not_to raise_error(SpecificErrorClass)` is deprecated. Use `expect { }.not_to raise_error` (with no args) instead. Called from /thrift/src/lib/rb/spec/struct_spec.rb:234:in `block (3 levels) in <top (required)>'.
      `expect { }.not_to raise_error(SpecificErrorClass)` is deprecated. Use `expect { }.not_to raise_error` (with no args) instead. Called from /thrift/src/lib/rb/spec/struct_spec.rb:245:in `block (3 levels) in <top (required)>'.
      `expect { }.not_to raise_error(SpecificErrorClass)` is deprecated. Use `expect { }.not_to raise_error` (with no args) instead. Called from /thrift/src/lib/rb/spec/types_spec.rb:43:in `block (3 levels) in <top (required)>'.
      Too many uses of deprecated '`expect { }.not_to raise_error(SpecificErrorClass)`'. Pass `--deprecation-out` or set `config.deprecation_stream` to a file for full output.
      
      `expect { }.not_to raise_error(SpecificErrorClass, message)` is deprecated. Use `expect { }.not_to raise_error` (with no args) instead. Called from /thrift/src/lib/rb/spec/union_spec.rb:137:in `block (3 levels) in <top (required)>'.
      `expect { }.not_to raise_error(SpecificErrorClass, message)` is deprecated. Use `expect { }.not_to raise_error` (with no args) instead. Called from /thrift/src/lib/rb/spec/union_spec.rb:146:in `block (3 levels) in <top (required)>'.
      
      any_number_of_times is deprecated. Use stub instead. Called from /thrift/src/lib/rb/spec/socket_spec_shared.rb:101:in `block (2 levels) in <top (required)>'.
      
      mock is deprecated. Use double instead. Called from /thrift/src/lib/rb/spec/base_protocol_spec.rb:25:in `block (2 levels) in <top (required)>'.
      mock is deprecated. Use double instead. Called from /thrift/src/lib/rb/spec/base_protocol_spec.rb:58:in `block (3 levels) in <top (required)>'.
      mock is deprecated. Use double instead. Called from /thrift/src/lib/rb/spec/base_protocol_spec.rb:83:in `block (3 levels) in <top (required)>'.
      Too many uses of deprecated 'mock'. Pass `--deprecation-out` or set `config.deprecation_stream` to a file for full output.
      
      stub is deprecated. Use double instead. Called from /thrift/src/lib/rb/spec/client_spec.rb:51:in `block (3 levels) in <top (required)>'.
      stub is deprecated. Use double instead. Called from /thrift/src/lib/rb/spec/client_spec.rb:73:in `block (3 levels) in <top (required)>'.
      
      stub! is deprecated. Use stub instead. Called from /thrift/src/lib/rb/spec/base_transport_spec.rb:109:in `block (3 levels) in <top (required)>'.
      stub! is deprecated. Use stub instead. Called from /thrift/src/lib/rb/spec/base_transport_spec.rb:216:in `block (3 levels) in <top (required)>'.
      stub! is deprecated. Use stub instead. Called from /thrift/src/lib/rb/spec/base_transport_spec.rb:235:in `block (3 levels) in <top (required)>'.
      Too many uses of deprecated 'stub!'. Pass `--deprecation-out` or set `config.deprecation_stream` to a file for full output.
      
      
      If you need more of the backtrace for any of these deprecations to
      identify where to make the necessary changes, you can configure
      `config.raise_errors_for_deprecations!`, and it will turn the
      deprecation warnings into errors, giving you the full backtrace.
      
      205 deprecation warnings total
      
      Finished in 4.28 seconds
      411 examples, 2 failures, 1 pending
      
      Failed examples:
      
      rspec ./spec/binary_protocol_spec_shared.rb:105 # BinaryProtocolAccelerated it should behave like a binary protocol should write a byte
      rspec ./spec/binary_protocol_spec_shared.rb:105 # BinaryProtocol it should behave like a binary protocol should write a byte
      /usr/bin/ruby2.3 -S rspec ./spec/base_protocol_spec.rb ./spec/base_transport_spec.rb ./spec/binary_protocol_accelerated_spec.rb ./spec/binary_protocol_spec.rb ./spec/bytes_spec.rb ./spec/client_spec.rb ./spec/compact_protocol_spec.rb ./spec/exception_spec.rb ./spec/flat_spec.rb ./spec/http_client_spec.rb ./spec/json_protocol_spec.rb ./spec/namespaced_spec.rb ./spec/nonblocking_server_spec.rb ./spec/processor_spec.rb ./spec/serializer_spec.rb ./spec/server_socket_spec.rb ./spec/server_spec.rb ./spec/socket_spec.rb ./spec/ssl_socket_spec.rb ./spec/struct_nested_containers_spec.rb ./spec/struct_spec.rb ./spec/thin_http_server_spec.rb ./spec/types_spec.rb ./spec/union_spec.rb ./spec/unix_socket_spec.rb --color --format d failed
      Makefile:652: recipe for target 'check-local' failed
      make[1]: *** [check-local] Error 1
      make[1]: Leaving directory '/thrift/src/lib/rb'
      Makefile:512: recipe for target 'check-am' failed
      make: *** [check-am] Error 2
      

      I tried this:

      jking@ubuntu:~/thrift/github/thrift/lib/rb$ git diff HEAD
      diff --git a/lib/rb/thrift.gemspec b/lib/rb/thrift.gemspec
      index 166a93f2..f936e529 100644
      --- a/lib/rb/thrift.gemspec
      +++ b/lib/rb/thrift.gemspec
      @@ -9,7 +9,7 @@ Gem::Specification.new do |s|
         s.homepage    = 'http://thrift.apache.org'
         s.summary     = %q{Ruby bindings for Apache Thrift}
         s.description = %q{Ruby bindings for the Apache Thrift RPC system}
      -  s.license = 'Apache 2.0'
      +  s.license = 'Apache-2.0'
         s.extensions = ['ext/extconf.rb']
       
         s.has_rdoc      = true
      @@ -28,10 +28,10 @@ Gem::Specification.new do |s|
         s.require_paths = %w[lib ext]
       
      -  s.add_development_dependency 'rspec', ['~> 2.10.0', '< 2.14.0']
      -  s.add_development_dependency "rack", "~> 1.5"
      -  s.add_development_dependency "rack-test", "~> 0.6"
      -  s.add_development_dependency "thin", "~> 1.5"
      -  s.add_development_dependency "bundler", "~> 1"
      +  s.add_development_dependency 'rspec', '~> 2.14.0'
      +  s.add_development_dependency "rack", "~> 2.0.3"
      +  s.add_development_dependency "rack-test", "~> 0.7"
      +  s.add_development_dependency "thin", "~> 1.7.2"
      +  s.add_development_dependency "bundler", "~> 1.15.4"
         s.add_development_dependency 'rake', '~> 10.5'
       end
      

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                jking3 James E. King III
                Reporter:
                jking3 James E. King III
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: