DBD::Mock bugfixes #1

Closed
wants to merge 7 commits into
from
Commits on Mar 30, 2011
  1. Fix bug RT#66815 - check statement handles are valid before using them

    wu-lee committed Mar 25, 2011
    $dbh->prepare does not guarantee to return a valid statement handle.
    It may return a false value.  So check the returned value, and abort
    if it is false, otherwise the error caused ->prepare to fail will get
    overwritten by a less helpful one which says "Can't call method
    'execute' on an undefined value" error.
  2. A test showing DBD::Mock->begin_work, commit and rollback don't detec…

    wu-lee committed Mar 30, 2011
    …t ->prepare failure
    
    This is reported in RT ticket #66815
    
    Basically any call to ->begin_work, ->commit, >rollback made when
    their internal call to ->prepare returns an invalid statement handle
    will not notice and proceed to use it anyway.
    
    In particular, this happens when a DBD::Mock::Session is in effect,
    and the session state list has been exhausted.  When this happens, the
    method in question fails with an unhelpful error "Can't use an
    undefined value as an ARRAY reference at ../lib/DBD/Mock.pm line
    635", masking the real reason.
  3. Merge branch 'rt66815'

    wu-lee committed Mar 30, 2011
    * rt66815:
      Fix bug RT#66815 - check statement handles are valid before using them
      A test showing DBD::Mock->begin_work, commit and rollback don't detect ->prepare failure
  4. Add DBD::Mock::Session->current_state method

    wu-lee committed Mar 30, 2011
    This just makes the code simpler to follow. Particularly the portion
    in validate_bound_params where results are loaded into the $tracker
    object.
  5. A test showing DBD::Mock::Session->verify_bound_params doesn't check …

    wu-lee committed Mar 30, 2011
    …for session exhaustion
    
    Basically it succeeds despite there being no states left to verify,
    and on return the ->execute method fails with an unhelpful error
    "Can't use an undefined value # as an ARRAY reference at
    ../lib/DBD/Mock.pm line 635."
  6. Merge branch 'fix-verify-bound-params'

    wu-lee committed Mar 30, 2011
    * fix-verify-bound-params:
      Fix DBD::Mock::Session->verify_bound_params to check for state exhaustion
      A test showing DBD::Mock::Session->verify_bound_params doesn't check for session exhaustion
      Add DBD::Mock::Session->current_state method