sanford 0.13.0 → 0.14.0
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/lib/sanford/connection_handler.rb +0 -1
 - data/lib/sanford/error_handler.rb +1 -1
 - data/lib/sanford/process.rb +7 -6
 - data/lib/sanford/router.rb +2 -3
 - data/lib/sanford/runner.rb +2 -1
 - data/lib/sanford/server.rb +1 -0
 - data/lib/sanford/test_runner.rb +13 -6
 - data/lib/sanford/version.rb +1 -1
 - data/sanford.gemspec +2 -2
 - data/test/unit/error_handler_tests.rb +2 -2
 - data/test/unit/process_tests.rb +78 -28
 - data/test/unit/route_tests.rb +1 -0
 - data/test/unit/router_tests.rb +1 -1
 - data/test/unit/test_runner_tests.rb +58 -26
 - metadata +10 -10
 
| 
         @@ -46,7 +46,7 @@ module Sanford 
     | 
|
| 
       46 
46 
     | 
    
         | 
| 
       47 
47 
     | 
    
         
             
                def response_from_exception(exception)
         
     | 
| 
       48 
48 
     | 
    
         
             
                  case(exception)
         
     | 
| 
       49 
     | 
    
         
            -
                  when Sanford::Protocol::BadMessageError, Sanford::Protocol:: 
     | 
| 
      
 49 
     | 
    
         
            +
                  when Sanford::Protocol::BadMessageError, Sanford::Protocol::Request::InvalidError
         
     | 
| 
       50 
50 
     | 
    
         
             
                    build_response :bad_request, :message => exception.message
         
     | 
| 
       51 
51 
     | 
    
         
             
                  when Sanford::NotFoundError
         
     | 
| 
       52 
52 
     | 
    
         
             
                    build_response :not_found
         
     | 
    
        data/lib/sanford/process.rb
    CHANGED
    
    | 
         @@ -48,7 +48,7 @@ module Sanford 
     | 
|
| 
       48 
48 
     | 
    
         
             
                  thread = @server.start(@client_fds)
         
     | 
| 
       49 
49 
     | 
    
         
             
                  log "#{@server.name} server started and ready."
         
     | 
| 
       50 
50 
     | 
    
         
             
                  thread.join
         
     | 
| 
       51 
     | 
    
         
            -
                   
     | 
| 
      
 51 
     | 
    
         
            +
                  run_restart_cmd if @server.paused?
         
     | 
| 
       52 
52 
     | 
    
         
             
                rescue StandardError => exception
         
     | 
| 
       53 
53 
     | 
    
         
             
                  log "Error: #{exception.message}"
         
     | 
| 
       54 
54 
     | 
    
         
             
                  log "#{@server.name} server never started."
         
     | 
| 
         @@ -66,12 +66,12 @@ module Sanford 
     | 
|
| 
       66 
66 
     | 
    
         
             
                  @logger.info "[Sanford] #{message}"
         
     | 
| 
       67 
67 
     | 
    
         
             
                end
         
     | 
| 
       68 
68 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
                def  
     | 
| 
      
 69 
     | 
    
         
            +
                def run_restart_cmd
         
     | 
| 
       70 
70 
     | 
    
         
             
                  log "Restarting #{@server.name} daemon..."
         
     | 
| 
       71 
71 
     | 
    
         
             
                  ENV['SANFORD_SERVER_FD'] = @server.file_descriptor.to_s
         
     | 
| 
       72 
72 
     | 
    
         
             
                  ENV['SANFORD_CLIENT_FDS'] = @server.client_file_descriptors.join(',')
         
     | 
| 
       73 
73 
     | 
    
         
             
                  ENV['SANFORD_SKIP_DAEMONIZE'] = 'yes'
         
     | 
| 
       74 
     | 
    
         
            -
                  @restart_cmd. 
     | 
| 
      
 74 
     | 
    
         
            +
                  @restart_cmd.run
         
     | 
| 
       75 
75 
     | 
    
         
             
                end
         
     | 
| 
       76 
76 
     | 
    
         | 
| 
       77 
77 
     | 
    
         
             
                def default_if_blank(value, default, &block)
         
     | 
| 
         @@ -91,21 +91,22 @@ module Sanford 
     | 
|
| 
       91 
91 
     | 
    
         
             
                def initialize
         
     | 
| 
       92 
92 
     | 
    
         
             
                  require 'rubygems'
         
     | 
| 
       93 
93 
     | 
    
         
             
                  @dir  = get_pwd
         
     | 
| 
       94 
     | 
    
         
            -
                  @argv = [ 
     | 
| 
      
 94 
     | 
    
         
            +
                  @argv = [Gem.ruby, $0, ARGV.dup].flatten
         
     | 
| 
       95 
95 
     | 
    
         
             
                end
         
     | 
| 
       96 
96 
     | 
    
         | 
| 
       97 
     | 
    
         
            -
                def  
     | 
| 
      
 97 
     | 
    
         
            +
                def run
         
     | 
| 
       98 
98 
     | 
    
         
             
                  Dir.chdir self.dir
         
     | 
| 
       99 
99 
     | 
    
         
             
                  Kernel.exec(*self.argv)
         
     | 
| 
       100 
100 
     | 
    
         
             
                end
         
     | 
| 
       101 
101 
     | 
    
         | 
| 
       102 
     | 
    
         
            -
                 
     | 
| 
      
 102 
     | 
    
         
            +
                private
         
     | 
| 
       103 
103 
     | 
    
         | 
| 
       104 
104 
     | 
    
         
             
                # Trick from puma/unicorn. Favor PWD because it contains an unresolved
         
     | 
| 
       105 
105 
     | 
    
         
             
                # symlink. This is useful when restarting after deploying; the original
         
     | 
| 
       106 
106 
     | 
    
         
             
                # directory may be removed, but the symlink is pointing to a new
         
     | 
| 
       107 
107 
     | 
    
         
             
                # directory.
         
     | 
| 
       108 
108 
     | 
    
         
             
                def get_pwd
         
     | 
| 
      
 109 
     | 
    
         
            +
                  return Dir.pwd if ENV['PWD'].nil?
         
     | 
| 
       109 
110 
     | 
    
         
             
                  env_stat = File.stat(ENV['PWD'])
         
     | 
| 
       110 
111 
     | 
    
         
             
                  pwd_stat = File.stat(Dir.pwd)
         
     | 
| 
       111 
112 
     | 
    
         
             
                  if env_stat.ino == pwd_stat.ino && env_stat.dev == pwd_stat.dev
         
     | 
    
        data/lib/sanford/router.rb
    CHANGED
    
    | 
         @@ -7,14 +7,13 @@ module Sanford 
     | 
|
| 
       7 
7 
     | 
    
         
             
                attr_reader :routes
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                def initialize(&block)
         
     | 
| 
       10 
     | 
    
         
            -
                  @service_handler_ns = nil
         
     | 
| 
       11 
10 
     | 
    
         
             
                  @routes = []
         
     | 
| 
       12 
11 
     | 
    
         
             
                  self.instance_eval(&block) if !block.nil?
         
     | 
| 
       13 
12 
     | 
    
         
             
                end
         
     | 
| 
       14 
13 
     | 
    
         | 
| 
       15 
14 
     | 
    
         
             
                def service_handler_ns(value = nil)
         
     | 
| 
       16 
     | 
    
         
            -
                  @ 
     | 
| 
       17 
     | 
    
         
            -
                  @ 
     | 
| 
      
 15 
     | 
    
         
            +
                  @service_handler_ns = value if !value.nil?
         
     | 
| 
      
 16 
     | 
    
         
            +
                  @service_handler_ns
         
     | 
| 
       18 
17 
     | 
    
         
             
                end
         
     | 
| 
       19 
18 
     | 
    
         | 
| 
       20 
19 
     | 
    
         
             
                def service(name, handler_name)
         
     | 
    
        data/lib/sanford/runner.rb
    CHANGED
    
    | 
         @@ -19,7 +19,6 @@ module Sanford 
     | 
|
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
                def initialize(handler_class, args = nil)
         
     | 
| 
       21 
21 
     | 
    
         
             
                  @handler_class = handler_class
         
     | 
| 
       22 
     | 
    
         
            -
                  @handler = @handler_class.new(self)
         
     | 
| 
       23 
22 
     | 
    
         | 
| 
       24 
23 
     | 
    
         
             
                  a = args || {}
         
     | 
| 
       25 
24 
     | 
    
         
             
                  @request         = a[:request]
         
     | 
| 
         @@ -27,6 +26,8 @@ module Sanford 
     | 
|
| 
       27 
26 
     | 
    
         
             
                  @logger          = a[:logger] || Sanford::NullLogger.new
         
     | 
| 
       28 
27 
     | 
    
         
             
                  @router          = a[:router] || Sanford::Router.new
         
     | 
| 
       29 
28 
     | 
    
         
             
                  @template_source = a[:template_source] || Sanford::NullTemplateSource.new
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                  @handler = @handler_class.new(self)
         
     | 
| 
       30 
31 
     | 
    
         
             
                end
         
     | 
| 
       31 
32 
     | 
    
         | 
| 
       32 
33 
     | 
    
         
             
                def run
         
     | 
    
        data/lib/sanford/server.rb
    CHANGED
    
    
    
        data/lib/sanford/test_runner.rb
    CHANGED
    
    | 
         @@ -18,10 +18,10 @@ module Sanford 
     | 
|
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
                  args = (args || {}).dup
         
     | 
| 
       20 
20 
     | 
    
         
             
                  super(handler_class, {
         
     | 
| 
       21 
     | 
    
         
            -
                    :request 
     | 
| 
       22 
     | 
    
         
            -
                    :params 
     | 
| 
       23 
     | 
    
         
            -
                    :logger 
     | 
| 
       24 
     | 
    
         
            -
                    :router 
     | 
| 
      
 21 
     | 
    
         
            +
                    :request         => args.delete(:request),
         
     | 
| 
      
 22 
     | 
    
         
            +
                    :params          => normalize_params(args.delete(:params) || {}),
         
     | 
| 
      
 23 
     | 
    
         
            +
                    :logger          => args.delete(:logger),
         
     | 
| 
      
 24 
     | 
    
         
            +
                    :router          => args.delete(:router),
         
     | 
| 
       25 
25 
     | 
    
         
             
                    :template_source => args.delete(:template_source)
         
     | 
| 
       26 
26 
     | 
    
         
             
                  })
         
     | 
| 
       27 
27 
     | 
    
         
             
                  args.each{ |key, value| @handler.send("#{key}=", value) }
         
     | 
| 
         @@ -40,11 +40,18 @@ module Sanford 
     | 
|
| 
       40 
40 
     | 
    
         | 
| 
       41 
41 
     | 
    
         
             
                private
         
     | 
| 
       42 
42 
     | 
    
         | 
| 
      
 43 
     | 
    
         
            +
                # Stringify and encode/decode to ensure params are valid and are
         
     | 
| 
      
 44 
     | 
    
         
            +
                # in the format they would normally be when a handler is built and run.
         
     | 
| 
      
 45 
     | 
    
         
            +
                def normalize_params(params)
         
     | 
| 
      
 46 
     | 
    
         
            +
                  p = Sanford::Protocol::StringifyParams.new(params)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  Sanford::Protocol.msg_body.decode(Sanford::Protocol.msg_body.encode(p))
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
       43 
50 
     | 
    
         
             
                def build_and_serialize_response(&block)
         
     | 
| 
       44 
51 
     | 
    
         
             
                  build_response(&block).tap do |response|
         
     | 
| 
       45 
52 
     | 
    
         
             
                    # attempt to serialize (and then throw away) the response data
         
     | 
| 
       46 
     | 
    
         
            -
                    # this will error on the developer if  
     | 
| 
       47 
     | 
    
         
            -
                    Sanford::Protocol 
     | 
| 
      
 53 
     | 
    
         
            +
                    # this will error on the developer if it can't serialize their response
         
     | 
| 
      
 54 
     | 
    
         
            +
                    Sanford::Protocol.msg_body.encode(response.to_hash) if response
         
     | 
| 
       48 
55 
     | 
    
         
             
                  end
         
     | 
| 
       49 
56 
     | 
    
         
             
                end
         
     | 
| 
       50 
57 
     | 
    
         | 
    
        data/lib/sanford/version.rb
    CHANGED
    
    
    
        data/sanford.gemspec
    CHANGED
    
    | 
         @@ -20,7 +20,7 @@ Gem::Specification.new do |gem| 
     | 
|
| 
       20 
20 
     | 
    
         | 
| 
       21 
21 
     | 
    
         
             
              gem.add_dependency("dat-tcp",          ["~> 0.6"])
         
     | 
| 
       22 
22 
     | 
    
         
             
              gem.add_dependency("ns-options",       ["~> 1.1"])
         
     | 
| 
       23 
     | 
    
         
            -
              gem.add_dependency("sanford-protocol", ["~> 0. 
     | 
| 
      
 23 
     | 
    
         
            +
              gem.add_dependency("sanford-protocol", ["~> 0.11"])
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
              gem.add_development_dependency("assert", ["~> 2. 
     | 
| 
      
 25 
     | 
    
         
            +
              gem.add_development_dependency("assert", ["~> 2.14"])
         
     | 
| 
       26 
26 
     | 
    
         
             
            end
         
     | 
| 
         @@ -99,8 +99,8 @@ class Sanford::ErrorHandler 
     | 
|
| 
       99 
99 
     | 
    
         
             
                  assert_equal 'bad message', response.status.message
         
     | 
| 
       100 
100 
     | 
    
         
             
                end
         
     | 
| 
       101 
101 
     | 
    
         | 
| 
       102 
     | 
    
         
            -
                should "build a 400 response with a protocol  
     | 
| 
       103 
     | 
    
         
            -
                  exception = generate_exception(Sanford::Protocol:: 
     | 
| 
      
 102 
     | 
    
         
            +
                should "build a 400 response with a protocol request invalid error" do
         
     | 
| 
      
 103 
     | 
    
         
            +
                  exception = generate_exception(Sanford::Protocol::Request::InvalidError, 'bad request')
         
     | 
| 
       104 
104 
     | 
    
         
             
                  response = Sanford::ErrorHandler.new(exception, @server_data).run
         
     | 
| 
       105 
105 
     | 
    
         | 
| 
       106 
106 
     | 
    
         
             
                  assert_equal 400, response.code
         
     | 
    
        data/test/unit/process_tests.rb
    CHANGED
    
    | 
         @@ -87,8 +87,8 @@ class Sanford::Process 
     | 
|
| 
       87 
87 
     | 
    
         
             
                  ENV['SANFORD_PORT'] = ''
         
     | 
| 
       88 
88 
     | 
    
         
             
                  ENV['SANFORD_SERVER_FD'] = ''
         
     | 
| 
       89 
89 
     | 
    
         
             
                  process = @process_class.new(@server_spy)
         
     | 
| 
       90 
     | 
    
         
            -
                  assert_equal @server_spy.configured_ip,  
     | 
| 
       91 
     | 
    
         
            -
                  assert_equal @server_spy.configured_port,  
     | 
| 
      
 90 
     | 
    
         
            +
                  assert_equal @server_spy.configured_ip, process.server_ip
         
     | 
| 
      
 91 
     | 
    
         
            +
                  assert_equal @server_spy.configured_port, process.server_port
         
     | 
| 
       92 
92 
     | 
    
         
             
                  assert_nil process.server_fd
         
     | 
| 
       93 
93 
     | 
    
         
             
                end
         
     | 
| 
       94 
94 
     | 
    
         | 
| 
         @@ -105,7 +105,7 @@ class Sanford::Process 
     | 
|
| 
       105 
105 
     | 
    
         | 
| 
       106 
106 
     | 
    
         
             
                should "not daemonize by default" do
         
     | 
| 
       107 
107 
     | 
    
         
             
                  process = @process_class.new(@server_spy)
         
     | 
| 
       108 
     | 
    
         
            -
                  assert_false  
     | 
| 
      
 108 
     | 
    
         
            +
                  assert_false process.daemonize?
         
     | 
| 
       109 
109 
     | 
    
         
             
                end
         
     | 
| 
       110 
110 
     | 
    
         | 
| 
       111 
111 
     | 
    
         
             
                should "daemonize if turned on" do
         
     | 
| 
         @@ -212,8 +212,8 @@ class Sanford::Process 
     | 
|
| 
       212 
212 
     | 
    
         
             
                  assert_true @server_spy.thread.join_called
         
     | 
| 
       213 
213 
     | 
    
         
             
                end
         
     | 
| 
       214 
214 
     | 
    
         | 
| 
       215 
     | 
    
         
            -
                should "not  
     | 
| 
       216 
     | 
    
         
            -
                  assert_false @restart_cmd_spy. 
     | 
| 
      
 215 
     | 
    
         
            +
                should "not run the restart cmd" do
         
     | 
| 
      
 216 
     | 
    
         
            +
                  assert_false @restart_cmd_spy.run_called
         
     | 
| 
       217 
217 
     | 
    
         
             
                end
         
     | 
| 
       218 
218 
     | 
    
         | 
| 
       219 
219 
     | 
    
         
             
                should "have removed the PID file" do
         
     | 
| 
         @@ -297,15 +297,12 @@ class Sanford::Process 
     | 
|
| 
       297 
297 
     | 
    
         
             
                  @process.run
         
     | 
| 
       298 
298 
     | 
    
         
             
                end
         
     | 
| 
       299 
299 
     | 
    
         | 
| 
       300 
     | 
    
         
            -
                should " 
     | 
| 
      
 300 
     | 
    
         
            +
                should "set env vars for restarting and run the restart cmd" do
         
     | 
| 
       301 
301 
     | 
    
         
             
                  assert_equal @server_spy.file_descriptor.to_s, ENV['SANFORD_SERVER_FD']
         
     | 
| 
       302 
302 
     | 
    
         
             
                  expected = @server_spy.client_file_descriptors.join(',')
         
     | 
| 
       303 
303 
     | 
    
         
             
                  assert_equal expected, ENV['SANFORD_CLIENT_FDS']
         
     | 
| 
       304 
304 
     | 
    
         
             
                  assert_equal 'yes', ENV['SANFORD_SKIP_DAEMONIZE']
         
     | 
| 
       305 
     | 
    
         
            -
             
     | 
| 
       306 
     | 
    
         
            -
             
     | 
| 
       307 
     | 
    
         
            -
                should "have exec'd the restart cmd" do
         
     | 
| 
       308 
     | 
    
         
            -
                  assert_true @restart_cmd_spy.exec_called
         
     | 
| 
      
 305 
     | 
    
         
            +
                  assert_true @restart_cmd_spy.run_called
         
     | 
| 
       309 
306 
     | 
    
         
             
                end
         
     | 
| 
       310 
307 
     | 
    
         | 
| 
       311 
308 
     | 
    
         
             
              end
         
     | 
| 
         @@ -313,32 +310,85 @@ class Sanford::Process 
     | 
|
| 
       313 
310 
     | 
    
         
             
              class RestartCmdTests < UnitTests
         
     | 
| 
       314 
311 
     | 
    
         
             
                desc "RestartCmd"
         
     | 
| 
       315 
312 
     | 
    
         
             
                setup do
         
     | 
| 
       316 
     | 
    
         
            -
                  @ 
     | 
| 
      
 313 
     | 
    
         
            +
                  @current_pwd = ENV['PWD']
         
     | 
| 
      
 314 
     | 
    
         
            +
                  ENV['PWD'] = Factory.path
         
     | 
| 
       317 
315 
     | 
    
         | 
| 
       318 
     | 
    
         
            -
                  @ 
     | 
| 
       319 
     | 
    
         
            -
                   
     | 
| 
      
 316 
     | 
    
         
            +
                  @ruby_pwd_stat = File.stat(Dir.pwd)
         
     | 
| 
      
 317 
     | 
    
         
            +
                  env_pwd_stat = File.stat('/dev/null')
         
     | 
| 
      
 318 
     | 
    
         
            +
                  Assert.stub(File, :stat).with(Dir.pwd){ @ruby_pwd_stat }
         
     | 
| 
      
 319 
     | 
    
         
            +
                  Assert.stub(File, :stat).with(ENV['PWD']){ env_pwd_stat }
         
     | 
| 
       320 
320 
     | 
    
         | 
| 
       321 
     | 
    
         
            -
                  @ 
     | 
| 
       322 
     | 
    
         
            -
                  Assert.stub( 
     | 
| 
      
 321 
     | 
    
         
            +
                  @chdir_called_with = nil
         
     | 
| 
      
 322 
     | 
    
         
            +
                  Assert.stub(Dir, :chdir){ |*args| @chdir_called_with = args }
         
     | 
| 
      
 323 
     | 
    
         
            +
             
     | 
| 
      
 324 
     | 
    
         
            +
                  @exec_called_with = false
         
     | 
| 
      
 325 
     | 
    
         
            +
                  Assert.stub(Kernel, :exec){ |*args| @exec_called_with = args }
         
     | 
| 
      
 326 
     | 
    
         
            +
             
     | 
| 
      
 327 
     | 
    
         
            +
                  @cmd_class = Sanford::RestartCmd
         
     | 
| 
      
 328 
     | 
    
         
            +
                end
         
     | 
| 
      
 329 
     | 
    
         
            +
                teardown do
         
     | 
| 
      
 330 
     | 
    
         
            +
                  ENV['PWD'] = @current_pwd
         
     | 
| 
       323 
331 
     | 
    
         
             
                end
         
     | 
| 
       324 
332 
     | 
    
         
             
                subject{ @restart_cmd }
         
     | 
| 
       325 
333 
     | 
    
         | 
| 
      
 334 
     | 
    
         
            +
              end
         
     | 
| 
      
 335 
     | 
    
         
            +
             
     | 
| 
      
 336 
     | 
    
         
            +
              class RestartCmdInitTests < RestartCmdTests
         
     | 
| 
      
 337 
     | 
    
         
            +
                desc "when init"
         
     | 
| 
      
 338 
     | 
    
         
            +
                setup do
         
     | 
| 
      
 339 
     | 
    
         
            +
                  @restart_cmd = @cmd_class.new
         
     | 
| 
      
 340 
     | 
    
         
            +
                end
         
     | 
| 
      
 341 
     | 
    
         
            +
             
     | 
| 
       326 
342 
     | 
    
         
             
                should have_readers :argv, :dir
         
     | 
| 
      
 343 
     | 
    
         
            +
                should have_imeths :run
         
     | 
| 
      
 344 
     | 
    
         
            +
             
     | 
| 
      
 345 
     | 
    
         
            +
                should "know its argv" do
         
     | 
| 
      
 346 
     | 
    
         
            +
                  assert_equal [Gem.ruby, $0, ARGV].flatten, subject.argv
         
     | 
| 
      
 347 
     | 
    
         
            +
                end
         
     | 
| 
       327 
348 
     | 
    
         | 
| 
       328 
     | 
    
         
            -
                should " 
     | 
| 
       329 
     | 
    
         
            -
                   
     | 
| 
       330 
     | 
    
         
            -
                  assert_equal  
     | 
| 
      
 349 
     | 
    
         
            +
                should "change the dir and run a kernel exec when run" do
         
     | 
| 
      
 350 
     | 
    
         
            +
                  subject.run
         
     | 
| 
      
 351 
     | 
    
         
            +
                  assert_equal [subject.dir], @chdir_called_with
         
     | 
| 
      
 352 
     | 
    
         
            +
                  assert_equal subject.argv,  @exec_called_with
         
     | 
| 
      
 353 
     | 
    
         
            +
                end
         
     | 
| 
      
 354 
     | 
    
         
            +
             
     | 
| 
      
 355 
     | 
    
         
            +
              end
         
     | 
| 
      
 356 
     | 
    
         
            +
             
     | 
| 
      
 357 
     | 
    
         
            +
              class RestartCmdWithPWDEnvNoMatchTests < RestartCmdTests
         
     | 
| 
      
 358 
     | 
    
         
            +
                desc "when init with a PWD env variable that doesn't point to ruby working dir"
         
     | 
| 
      
 359 
     | 
    
         
            +
                setup do
         
     | 
| 
      
 360 
     | 
    
         
            +
                  @restart_cmd = @cmd_class.new
         
     | 
| 
      
 361 
     | 
    
         
            +
                end
         
     | 
| 
      
 362 
     | 
    
         
            +
             
     | 
| 
      
 363 
     | 
    
         
            +
                should "know its dir" do
         
     | 
| 
       331 
364 
     | 
    
         
             
                  assert_equal Dir.pwd, subject.dir
         
     | 
| 
       332 
365 
     | 
    
         
             
                end
         
     | 
| 
       333 
366 
     | 
    
         | 
| 
       334 
     | 
    
         
            -
             
     | 
| 
       335 
     | 
    
         
            -
             
     | 
| 
       336 
     | 
    
         
            -
             
     | 
| 
      
 367 
     | 
    
         
            +
              end
         
     | 
| 
      
 368 
     | 
    
         
            +
             
     | 
| 
      
 369 
     | 
    
         
            +
              class RestartCmdWithPWDEnvInitTests < RestartCmdTests
         
     | 
| 
      
 370 
     | 
    
         
            +
                desc "when init with a PWD env variable that points to the ruby working dir"
         
     | 
| 
      
 371 
     | 
    
         
            +
                setup do
         
     | 
| 
      
 372 
     | 
    
         
            +
                  # make ENV['PWD'] point to the same file as Dir.pwd
         
     | 
| 
      
 373 
     | 
    
         
            +
                  Assert.stub(File, :stat).with(ENV['PWD']){ @ruby_pwd_stat }
         
     | 
| 
      
 374 
     | 
    
         
            +
                  @restart_cmd = @cmd_class.new
         
     | 
| 
       337 
375 
     | 
    
         
             
                end
         
     | 
| 
       338 
376 
     | 
    
         | 
| 
       339 
     | 
    
         
            -
                should " 
     | 
| 
       340 
     | 
    
         
            -
                  subject. 
     | 
| 
       341 
     | 
    
         
            -
             
     | 
| 
      
 377 
     | 
    
         
            +
                should "know its dir" do
         
     | 
| 
      
 378 
     | 
    
         
            +
                  assert_equal ENV['PWD'], subject.dir
         
     | 
| 
      
 379 
     | 
    
         
            +
                end
         
     | 
| 
      
 380 
     | 
    
         
            +
             
     | 
| 
      
 381 
     | 
    
         
            +
              end
         
     | 
| 
      
 382 
     | 
    
         
            +
             
     | 
| 
      
 383 
     | 
    
         
            +
              class RestartCmdWithNoPWDEnvInitTests < RestartCmdTests
         
     | 
| 
      
 384 
     | 
    
         
            +
                desc "when init with a PWD env variable set"
         
     | 
| 
      
 385 
     | 
    
         
            +
                setup do
         
     | 
| 
      
 386 
     | 
    
         
            +
                  ENV.delete('PWD')
         
     | 
| 
      
 387 
     | 
    
         
            +
                  @restart_cmd = @cmd_class.new
         
     | 
| 
      
 388 
     | 
    
         
            +
                end
         
     | 
| 
      
 389 
     | 
    
         
            +
             
     | 
| 
      
 390 
     | 
    
         
            +
                should "know its dir" do
         
     | 
| 
      
 391 
     | 
    
         
            +
                  assert_equal Dir.pwd, subject.dir
         
     | 
| 
       342 
392 
     | 
    
         
             
                end
         
     | 
| 
       343 
393 
     | 
    
         | 
| 
       344 
394 
     | 
    
         
             
              end
         
     | 
| 
         @@ -417,14 +467,14 @@ class Sanford::Process 
     | 
|
| 
       417 
467 
     | 
    
         
             
              end
         
     | 
| 
       418 
468 
     | 
    
         | 
| 
       419 
469 
     | 
    
         
             
              class RestartCmdSpy
         
     | 
| 
       420 
     | 
    
         
            -
                attr_reader : 
     | 
| 
      
 470 
     | 
    
         
            +
                attr_reader :run_called
         
     | 
| 
       421 
471 
     | 
    
         | 
| 
       422 
472 
     | 
    
         
             
                def initialize
         
     | 
| 
       423 
     | 
    
         
            -
                  @ 
     | 
| 
      
 473 
     | 
    
         
            +
                  @run_called = false
         
     | 
| 
       424 
474 
     | 
    
         
             
                end
         
     | 
| 
       425 
475 
     | 
    
         | 
| 
       426 
     | 
    
         
            -
                def  
     | 
| 
       427 
     | 
    
         
            -
                  @ 
     | 
| 
      
 476 
     | 
    
         
            +
                def run
         
     | 
| 
      
 477 
     | 
    
         
            +
                  @run_called = true
         
     | 
| 
       428 
478 
     | 
    
         
             
                end
         
     | 
| 
       429 
479 
     | 
    
         
             
              end
         
     | 
| 
       430 
480 
     | 
    
         | 
    
        data/test/unit/route_tests.rb
    CHANGED
    
    
    
        data/test/unit/router_tests.rb
    CHANGED
    
    
| 
         @@ -22,48 +22,80 @@ class Sanford::TestRunner 
     | 
|
| 
       22 
22 
     | 
    
         
             
                setup do
         
     | 
| 
       23 
23 
     | 
    
         
             
                  @params = { Factory.string => Factory.integer }
         
     | 
| 
       24 
24 
     | 
    
         
             
                  @args = {
         
     | 
| 
       25 
     | 
    
         
            -
                    :request 
     | 
| 
       26 
     | 
    
         
            -
                    :params 
     | 
| 
       27 
     | 
    
         
            -
                    :logger 
     | 
| 
       28 
     | 
    
         
            -
                    :router 
     | 
| 
       29 
     | 
    
         
            -
                    :template_source =>  
     | 
| 
      
 25 
     | 
    
         
            +
                    :request         => Factory.string,
         
     | 
| 
      
 26 
     | 
    
         
            +
                    :params          => @params,
         
     | 
| 
      
 27 
     | 
    
         
            +
                    :logger          => Factory.string,
         
     | 
| 
      
 28 
     | 
    
         
            +
                    :router          => Factory.string,
         
     | 
| 
      
 29 
     | 
    
         
            +
                    :template_source => Factory.string,
         
     | 
| 
      
 30 
     | 
    
         
            +
                    :custom_value    => Factory.integer
         
     | 
| 
       30 
31 
     | 
    
         
             
                  }
         
     | 
| 
       31 
     | 
    
         
            -
                  @ 
     | 
| 
      
 32 
     | 
    
         
            +
                  @original_args = @args.dup
         
     | 
| 
      
 33 
     | 
    
         
            +
                  @runner  = @runner_class.new(@handler_class, @args)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  @handler = @runner.handler
         
     | 
| 
       32 
35 
     | 
    
         
             
                end
         
     | 
| 
       33 
36 
     | 
    
         
             
                subject{ @runner }
         
     | 
| 
       34 
37 
     | 
    
         | 
| 
       35 
38 
     | 
    
         
             
                should have_readers :response
         
     | 
| 
       36 
39 
     | 
    
         
             
                should have_imeths :run
         
     | 
| 
       37 
40 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
                should " 
     | 
| 
       39 
     | 
    
         
            -
                   
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                   
     | 
| 
      
 41 
     | 
    
         
            +
                should "know its standard attributes" do
         
     | 
| 
      
 42 
     | 
    
         
            +
                  assert_equal @args[:request],         subject.request
         
     | 
| 
      
 43 
     | 
    
         
            +
                  assert_equal @params,                 subject.params
         
     | 
| 
      
 44 
     | 
    
         
            +
                  assert_equal @args[:logger],          subject.logger
         
     | 
| 
      
 45 
     | 
    
         
            +
                  assert_equal @args[:router],          subject.router
         
     | 
| 
      
 46 
     | 
    
         
            +
                  assert_equal @args[:template_source], subject.template_source
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                should "write any non-standard args to its handler" do
         
     | 
| 
      
 50 
     | 
    
         
            +
                  assert_equal @args[:custom_value], @handler.custom_value
         
     | 
| 
       42 
51 
     | 
    
         
             
                end
         
     | 
| 
       43 
52 
     | 
    
         | 
| 
       44 
     | 
    
         
            -
                should " 
     | 
| 
       45 
     | 
    
         
            -
                  assert_equal  
     | 
| 
       46 
     | 
    
         
            -
                  assert_equal @params,      subject.params
         
     | 
| 
       47 
     | 
    
         
            -
                  assert_equal 'a-logger',   subject.logger
         
     | 
| 
       48 
     | 
    
         
            -
                  assert_equal 'a-router',   subject.router
         
     | 
| 
       49 
     | 
    
         
            -
                  assert_equal 'a-source',   subject.template_source
         
     | 
| 
      
 53 
     | 
    
         
            +
                should "not alter the args passed to it" do
         
     | 
| 
      
 54 
     | 
    
         
            +
                  assert_equal @original_args, @args
         
     | 
| 
       50 
55 
     | 
    
         
             
                end
         
     | 
| 
       51 
56 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
                should " 
     | 
| 
       53 
     | 
    
         
            -
                   
     | 
| 
       54 
     | 
    
         
            -
                  assert_equal 42, runner.handler.custom_value
         
     | 
| 
      
 57 
     | 
    
         
            +
                should "not call its service handlers before callbacks" do
         
     | 
| 
      
 58 
     | 
    
         
            +
                  assert_nil @handler.before_called
         
     | 
| 
       55 
59 
     | 
    
         
             
                end
         
     | 
| 
       56 
60 
     | 
    
         | 
| 
       57 
     | 
    
         
            -
                should " 
     | 
| 
       58 
     | 
    
         
            -
                   
     | 
| 
      
 61 
     | 
    
         
            +
                should "call its service handlers init" do
         
     | 
| 
      
 62 
     | 
    
         
            +
                  assert_true @handler.init_called
         
     | 
| 
       59 
63 
     | 
    
         
             
                end
         
     | 
| 
       60 
64 
     | 
    
         | 
| 
       61 
     | 
    
         
            -
                should " 
     | 
| 
       62 
     | 
    
         
            -
                   
     | 
| 
      
 65 
     | 
    
         
            +
                should "not run its service handler" do
         
     | 
| 
      
 66 
     | 
    
         
            +
                  assert_false @handler.run_called
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                should "not call its service handlers after callbacks" do
         
     | 
| 
      
 70 
     | 
    
         
            +
                  assert_nil @handler.after_called
         
     | 
| 
       63 
71 
     | 
    
         
             
                end
         
     | 
| 
       64 
72 
     | 
    
         | 
| 
       65 
73 
     | 
    
         
             
                should "not have a response by default" do
         
     | 
| 
       66 
     | 
    
         
            -
                  assert_nil  
     | 
| 
      
 74 
     | 
    
         
            +
                  assert_nil @handler.response
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
                should "normalize the params passed to it" do
         
     | 
| 
      
 78 
     | 
    
         
            +
                  params = {
         
     | 
| 
      
 79 
     | 
    
         
            +
                    Factory.string        => Factory.string,
         
     | 
| 
      
 80 
     | 
    
         
            +
                    Factory.string.to_sym => Factory.string.to_sym,
         
     | 
| 
      
 81 
     | 
    
         
            +
                    Factory.integer       => Factory.integer
         
     | 
| 
      
 82 
     | 
    
         
            +
                  }
         
     | 
| 
      
 83 
     | 
    
         
            +
                  runner = @runner_class.new(@handler_class, :params => params)
         
     | 
| 
      
 84 
     | 
    
         
            +
                  exp = Sanford::Protocol::StringifyParams.new(params)
         
     | 
| 
      
 85 
     | 
    
         
            +
                  assert_equal exp, runner.params
         
     | 
| 
      
 86 
     | 
    
         
            +
                end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                should "raise a serialization error if the params can't be serialized" do
         
     | 
| 
      
 89 
     | 
    
         
            +
                  params = { Factory.string => Class.new }
         
     | 
| 
      
 90 
     | 
    
         
            +
                  assert_raises(BSON::InvalidDocument) do
         
     | 
| 
      
 91 
     | 
    
         
            +
                    @runner_class.new(@handler_class, :params => params)
         
     | 
| 
      
 92 
     | 
    
         
            +
                  end
         
     | 
| 
      
 93 
     | 
    
         
            +
                end
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                should "raise an invalid error when passed a non service handler" do
         
     | 
| 
      
 96 
     | 
    
         
            +
                  assert_raises(Sanford::InvalidServiceHandlerError) do
         
     | 
| 
      
 97 
     | 
    
         
            +
                    @runner_class.new(Class.new)
         
     | 
| 
      
 98 
     | 
    
         
            +
                  end
         
     | 
| 
       67 
99 
     | 
    
         
             
                end
         
     | 
| 
       68 
100 
     | 
    
         | 
| 
       69 
101 
     | 
    
         
             
              end
         
     | 
| 
         @@ -80,11 +112,11 @@ class Sanford::TestRunner 
     | 
|
| 
       80 
112 
     | 
    
         
             
                  assert_instance_of Sanford::Protocol::Response, subject
         
     | 
| 
       81 
113 
     | 
    
         
             
                end
         
     | 
| 
       82 
114 
     | 
    
         | 
| 
       83 
     | 
    
         
            -
                should " 
     | 
| 
      
 115 
     | 
    
         
            +
                should "run its service handler" do
         
     | 
| 
       84 
116 
     | 
    
         
             
                  assert_true @runner.handler.run_called
         
     | 
| 
       85 
117 
     | 
    
         
             
                end
         
     | 
| 
       86 
118 
     | 
    
         | 
| 
       87 
     | 
    
         
            -
                should "not  
     | 
| 
      
 119 
     | 
    
         
            +
                should "not call its service handler's after callbacks" do
         
     | 
| 
       88 
120 
     | 
    
         
             
                  assert_nil @runner.handler.after_called
         
     | 
| 
       89 
121 
     | 
    
         
             
                end
         
     | 
| 
       90 
122 
     | 
    
         | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,13 +1,13 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: sanford
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              hash:  
     | 
| 
      
 4 
     | 
    
         
            +
              hash: 39
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
7 
     | 
    
         
             
              - 0
         
     | 
| 
       8 
     | 
    
         
            -
              -  
     | 
| 
      
 8 
     | 
    
         
            +
              - 14
         
     | 
| 
       9 
9 
     | 
    
         
             
              - 0
         
     | 
| 
       10 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 10 
     | 
    
         
            +
              version: 0.14.0
         
     | 
| 
       11 
11 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
12 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
13 
     | 
    
         
             
            - Collin Redding
         
     | 
| 
         @@ -16,7 +16,7 @@ autorequire: 
     | 
|
| 
       16 
16 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       17 
17 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
            date: 2015- 
     | 
| 
      
 19 
     | 
    
         
            +
            date: 2015-06-22 00:00:00 Z
         
     | 
| 
       20 
20 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       21 
21 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       22 
22 
     | 
    
         
             
              requirement: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
         @@ -54,11 +54,11 @@ dependencies: 
     | 
|
| 
       54 
54 
     | 
    
         
             
                requirements: 
         
     | 
| 
       55 
55 
     | 
    
         
             
                - - ~>
         
     | 
| 
       56 
56 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       57 
     | 
    
         
            -
                    hash:  
     | 
| 
      
 57 
     | 
    
         
            +
                    hash: 29
         
     | 
| 
       58 
58 
     | 
    
         
             
                    segments: 
         
     | 
| 
       59 
59 
     | 
    
         
             
                    - 0
         
     | 
| 
       60 
     | 
    
         
            -
                    -  
     | 
| 
       61 
     | 
    
         
            -
                    version: "0. 
     | 
| 
      
 60 
     | 
    
         
            +
                    - 11
         
     | 
| 
      
 61 
     | 
    
         
            +
                    version: "0.11"
         
     | 
| 
       62 
62 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       63 
63 
     | 
    
         
             
              name: sanford-protocol
         
     | 
| 
       64 
64 
     | 
    
         
             
              version_requirements: *id003
         
     | 
| 
         @@ -69,11 +69,11 @@ dependencies: 
     | 
|
| 
       69 
69 
     | 
    
         
             
                requirements: 
         
     | 
| 
       70 
70 
     | 
    
         
             
                - - ~>
         
     | 
| 
       71 
71 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       72 
     | 
    
         
            -
                    hash:  
     | 
| 
      
 72 
     | 
    
         
            +
                    hash: 31
         
     | 
| 
       73 
73 
     | 
    
         
             
                    segments: 
         
     | 
| 
       74 
74 
     | 
    
         
             
                    - 2
         
     | 
| 
       75 
     | 
    
         
            -
                    -  
     | 
| 
       76 
     | 
    
         
            -
                    version: "2. 
     | 
| 
      
 75 
     | 
    
         
            +
                    - 14
         
     | 
| 
      
 76 
     | 
    
         
            +
                    version: "2.14"
         
     | 
| 
       77 
77 
     | 
    
         
             
              type: :development
         
     | 
| 
       78 
78 
     | 
    
         
             
              name: assert
         
     | 
| 
       79 
79 
     | 
    
         
             
              version_requirements: *id004
         
     |