Switch branches/tags
Commits on Apr 7, 2013
  1. 2.13.1 release.

    myronmarston committed Apr 7, 2013
Commits on Apr 4, 2013
  1. Fix travis CI build.

    myronmarston committed Mar 12, 2013
    Fix travis CI build.
    - Bundler 1.3 needs rbconfig to be required to run `bin/rspec` after
      installing with `--standalone --binstubs`.
    - The Travis VMs no longer have 32-bit JVMs available. Aruba 0.4.11
      forced the -d32 flag. 0.5 just documents it and makes a file available
      to require that will set it. We've updated Aruba here so that the jruby
      ENV vars aren't set automatically; we've kept the flag to disable JIT
      but removed -d32.
  2. Clarify relationship between different method stub actions.

    myronmarston committed Mar 12, 2013
    In 2.13.0 only `and_yield` and `and_return` could be combined, since
    that was the only combination case that was specified by an example.
    This was a regression, as reported by a user in #230.
    I tried here to fully specify all of the various combinations of stub
    actions. Notes:
    * `and_return`, `and_raise` and `and_throw` are "terminal" actions
      in the sense that they terminate the method. They _must_ happen last
      and it is impossible to support more than one of these. Hence, we allow
      only one of these, and allow them to be overridden. We also return `nil`
      from these methods to discourage further stub configuration.
    * `and_call_original` is a special case that doesn't make sense to be
      combined with any of the others. Once you've set it up, this causes
      any further instructions to raise an error.
    * `and_yield` is treated as an "initial" action. Yielding doesn't exit
      a method the way the terminal actions do. It is the only initial action.
      Calling it multiple times sets up multiple yields.
    * Setting a block implementation (possible by passing a block to almost
      any method on the fluent interface) sets the block as the "inner" action.
      It runs between the configured yields (if there are any) and the configured
      terminal action (if there is one). My thinking here is that in many cases,
      users use a block implementation to specify a return value, essentially
      making it like a terminal action (so it should come after the `and_yield`
      actions), but in other cases, the user may just use a block for a side
      effect, and may configure an terminal action as well. Only one block
      implementation is supported and it can be overridden.
  3. Refactor implementation pieces in prep for #230.

    myronmarston committed Mar 6, 2013
    This splits each implementation piece into a separate object
    so that it is easier to combine them.
Commits on Feb 23, 2013
  1. 2.13.0 release

    myronmarston committed Feb 23, 2013
Commits on Feb 21, 2013
Commits on Feb 18, 2013
  1. Better fix for SimpleDelegator subclasses (#219).

    myronmarston committed Feb 18, 2013
    My last fix did not properly simulate SimpleDelegator since it mixes in
    a dup of Kernel and not Kernel itself.  This actually fixes it, and I
    also fixed `and_call_original` (which suffered from the same bug) for
    this case as well.
  2. Only run example with BasicObject when BasicObject is defined.

    dchelimsky committed Feb 18, 2013
    It's not in Ruby < 1.9.
  3. Add changelog entry for #223.

    myronmarston committed Feb 18, 2013
    [ci skip]
  4. Merge pull request #223 from RyanonRails/unstub_any_instance

    myronmarston committed Feb 18, 2013
    disallow unstub! on any_instance
  5. Rename MessageImplementation to Implementation.

    myronmarston committed Feb 18, 2013
    See #221 (comment) for the surrounding discussion.
  6. Add changelog entry for #226.

    myronmarston committed Feb 18, 2013
    [ci skip]
  7. Fix missing_default_stub_error message so array args are handled prop…

    myronmarston committed Feb 18, 2013
    The source of this bug is that `raise_similar_message_args_error` receives
    a list of args from multiple calls, e.g.:"a"), 3)
    translates to `[["a"], [2, 3]]` being passed to it.  For the other `raise_...` methods, they receive an args list from a single call
    (e.g. just `["a"]` for the first call in the example above).
    `raise_similar_message_args_error` has slightly different logic to handle
    the fact that it is different, but when `raise_missing_default_stub_error`
    was added in 409955f, it wrongly copied this logic.
    Fixes #226.
Commits on Feb 17, 2013
  1. rbx-18 is failing with strange errors on travis.

    myronmarston committed Feb 17, 2013
    Missing or uninitialized constant: RbConfig (NameError)
    I don't have the energy to fight with it now :(.
Commits on Feb 15, 2013
  1. Do not call `#nil?` extra times.

    myronmarston committed Feb 15, 2013 case `nil?` is expected a set number of times.
    Fixes #224.
Commits on Feb 13, 2013
  1. Merge pull request #225 from pjambet/use_new_codeclimate_shield

    myronmarston committed Feb 13, 2013
    Use new Codeclimate badge, made by @olivierlacan
Commits on Feb 10, 2013
Commits on Feb 9, 2013
  1. Merge pull request #221 from rspec/use_matching_parent_stub

    myronmarston committed Feb 9, 2013
    Use the matching parent stub rather than just picking the first one.
Commits on Feb 7, 2013
Commits on Feb 5, 2013
  1. Use the matching parent stub rather than just picking the first one.

    myronmarston committed Feb 2, 2013
    Previously, when a mock expectation was added, it was derived as a
    child stub from the first existing stub. However, if there were multiple
    existing stubs constrained with different `with` criteria, this could
    cause it to pick the wrong one because it arbitrarily chose the first
    Our fix is to defer the choosing of the parent stub until the message
    expectation is invoked, at which point we can properly match the
    parent stub based on the arguments.
    As part of this, I've refactored MessageExpectation, extracting a new
    MessageImplementation class to hold the logic for an implementation
    based on `and_return` and `and_yield` declarations.
    Fixes #127.
Commits on Feb 4, 2013
  1. Refactor spec for greater clarity.

    myronmarston committed Feb 4, 2013
    I found the use of `` confusing for a spec
    that demonstrates yielding multiple times. ``
    is a well-known API that only yields once.
  2. Merge pull request #218 from rspec/remove_consecutive

    myronmarston committed Feb 4, 2013
    Simplify implementation of consecutive return values.
Commits on Jan 31, 2013
  1. Simplify implementation of consecutive return values.

    myronmarston committed Jan 31, 2013
    There's no need to track extra instance variable state (e.g. @consecutive); 
    instead, the implementation lambda can just do the right thing.
    This also fixes #217. Previously, message_expectation got confused when it
    was in consecutive mode (due to being stubbed with multiple return values)
    and then got mocked with a single return value. This simplified implementation
    fixes this bug.
Commits on Jan 28, 2013
  1. 2.12.2 release.

    myronmarston committed Jan 28, 2013
  2. Handle `stub_const("::SomeUndefinedConst")`.

    myronmarston committed Jan 28, 2013
    I thought I fixed the problem in 17daf44,
    but I missed this edge case.  That only fixed `stub_const("::SomeDefinedConst").
    Fixes #200.
  3. Fix doc string typos.

    myronmarston committed Jan 28, 2013
    [ci skip]
Commits on Jan 7, 2013
  1. Merge pull request #211 from rspec/issue_210

    myronmarston committed Jan 7, 2013
    Adds failing spec demonstrating #210