Skip to content

Latest commit

 

History

History
1932 lines (1516 loc) · 72.4 KB

CHANGES.md

File metadata and controls

1932 lines (1516 loc) · 72.4 KB

Changes

17.0.1

  • 5fde5aeb fix returns does not override call through (#2567) (Raz Luvaton)
  • b5fc3671 Documentation for assertion options for the sandbox (#2564) (Carl-Erik Kopseng)
  • f7d180cc fix: assertion log limit (#2485) (Spencer Goossens)
  • 4f538e3e Fix mochify breaking on node:assert (#2559) (Carl-Erik Kopseng)

Released by Carl-Erik Kopseng on 2023-11-01.

17.0.0

  • 11a8e3f2 Remove Proxyquire as it did not handle newer syntax (Carl-Erik Kopseng)
  • ec37d634 Drop Node 16, as it is out of maintenance (Carl-Erik Kopseng)
  • 75e2b691 Upgrade fake-timers@11.2.2: new Intl mirroring and bugfixes (Carl-Erik Kopseng)

Released by Carl-Erik Kopseng on 2023-10-20.

16.1.3

  • 93e8aa93 Remove postinstall script as it causes issues for consumers (Carl-Erik Kopseng)

Released by Carl-Erik Kopseng on 2023-10-19.

16.1.0

  • cac5184b Enable use of assignment in the presence of accessors (#2538) (Carl-Erik Kopseng)
  • f8c20e54 New article: making Sinon work with complex setups (#2540) (Carl-Erik Kopseng)

    Co-authored-by: Morgan Roderick morgan@roderick.dk >

  • cb5b9621 Add NPM script 'dev-docs' and document its usage (Carl-Erik Kopseng)
  • dd7c6091 Add a little update to contributing (Carl-Erik Kopseng)
  • 79acdf38 Move tool versions into single file at root (Carl-Erik Kopseng)
  • 03b1db50 Expose Changelog page (#2550) (Carl-Erik Kopseng)
  • e1c3dad2 Add section on tooling and recommend using ASDF for tool versioning (#2547) (Carl-Erik Kopseng) Released by Carl-Erik Kopseng on 2023-10-05.

16.0.0

  • c3396058 fix(2525): ensure non empty message when error of type string is passed, but no message (#2544) (Mark de Dios)
  • baa1aee9 .define method (#2539) (Konstantin Gukov)
    • .define method for temporarily defining new properties during the tests
  • fe799e78 Fix issue 2534: spies are not restored (#2535) (Carl-Erik Kopseng)
  • 305fb6cc fix: actaully reset 'injectedKeys' (#2456) (Morgan Roderick)
  • de2635dd Bump LTS version one notch: 20 (#2529) (Carl-Erik Kopseng)

Released by Morgan Roderick on 2023-09-13.

15.2.0

  • 66b0081e Use fake-timers v10.1.0 re-released as v10.3.0 (Carl-Erik Kopseng)

    Version 10.2.0 of fake-timers had an unexpected breaking change. We re-released 10.1.0 as 10.3.0 to force users into jumping over the deprecated version.

    v10.2.0 was re-released as v11.0.0 and will be part of the next Sinon major

  • a79ccaeb Support callable instances (#2517) (bojavou)
    • Support callable instances
    • Clean prettier lint

    Co-authored-by: - <->

  • d220c995 fix: bundling compatibility with webpack@5 (#2519) (Avi Vahl)
    • fix: bundling compatibility with webpack@5

    when using webpack v5 to bundle code that calls require('sinon') (cjs) , it would have defaulted to "exports->require" and fail with multiple node-api requirements (util, timers, etc.)

    this patch ensures that anyone who bundles sinon for browser gets the (browser-compatible) esm version.

    tested on both webpack v5 and v4. should be noted that v4 worked even without this patch, as it automatically injected polyfills. v5 no longer does so. with this PR, people using webpack@4 to bundle sinon at least see size improvement, as the polyfills are no longer required.

    • fix: revert change for package.json -> "browser"

    browserify doesn't seem to like esm. leave that entry point alone, and ensure "exports" -> "browser" (which webpack@5 uses) is esm.

Released by Carl-Erik Kopseng on 2023-06-20.

15.1.2

  • 02b73aed Update lock file after removing node_modules ... (Carl-Erik Kopseng)

Released by Carl-Erik Kopseng on 2023-06-12.

15.1.1

  • 194fc2ef Change fake-timers version to specifically target the one containing the 'jump' feature (Carl-Erik Kopseng)

    Instead of the later (breaking) version. See #470

  • 05f05ac3 docs: Remove threw(obj) from docs (#2513) (Morgan Roderick)

    Since the introduction of threw in

    0feec9ffba0da6bc2996cefa0c6e71872e8bedb2, no one have reported that

    threw(obj) doesn't work as the documentation states.

    const sinon = require("sinon");
    
    const o = { pie: "apple" };
    
    const f = sinon.fake.throws(o);
    
    f();
    
    // this is supposed to return true
    
    f.threw(o);
    
    // => false

    Since it has been 12+ years without an error report, it's safe to assume

    that no one uses the threw method in this way. Let's remove it from

    the documentation.

Released by Carl-Erik Kopseng on 2023-06-12.

15.1.0

  • 79e719f2 Ensure we use a fake-timers version with clock.jump (Carl-Erik Kopseng)
  • b2a4df5a Add docs for clock.jump method (#2512) (Jason O'Neill)
  • f096abff fix (#2514): only force new or inherited descriptors to be configurable (#2515) (Carl-Erik Kopseng)

Released by Carl-Erik Kopseng on 2023-05-18.

15.0.4

  • e9042c4f Handling non-configurable object descriptors on the prototype (#2508) (Carl-Erik Kopseng)

    This should essentially make decorated methods stubbable again (see #2491)

  • 430c9a60 Remove uses of var (#2506) (Carl-Erik Kopseng)

    Replace var with const where possible in /lib and /test.

    Modified the let codemod to be a codemod.

    Took about half an hour with --watch running

Released by Carl-Erik Kopseng on 2023-04-20.

15.0.3

  • b775f1b4 Avoid tampering with globals and other modules' exports in tests (#2504) (Carl-Erik Kopseng)
  • 477064b6 fix: make it possible to call through to underlying stub in stub instance (#2503) (Carl-Erik Kopseng)

    closes #2501

  • 6e19746e Remove dead Travis and Gitter references (Carl-Erik Kopseng)

Released by Carl-Erik Kopseng on 2023-03-26.

15.0.2

  • 19bd99f3 Use no-op for every function when restoring instances (#2499) (Carl-Erik Kopseng)
  • 8663ffa0 Upgrade deps (#2498) (Carl-Erik Kopseng)

    Browserify, supports-color, husky had to be held back.

  • e01275bb Un-pin @sinonjs/fake-timers (#2495) (Jordan Hawker)

    The commit upgrading from v9 to v10 appears to have accidentally dropped the caret from the version range

  • 6cbde9b0 fix throws().callsFake() precedence (#2497) (Eduardo Diaz)

    This makes sure an unconditional callsFake() invoked on the same stub that was previously setup to throw will overwrite the previous behavior. This aligns it with the other behaviors.

  • 45be60f3 Replace probot/stale with official stale action (Morgan Roderick)

Released by Carl-Erik Kopseng on 2023-03-12.

15.0.1

  • aa493da4 Upgrade to fake-timers v10.0.2 (Carl-Erik Kopseng)

    Contains several fixes

  • b3ee0aa5 Use Node version 18 in Runkit examples (Carl-Erik Kopseng)

Released by Carl-Erik Kopseng on 2022-12-15.

15.0.0

  • b75fbfa9 Fix 2448: remove custom formatter (Morgan Roderick)

    Remove option to pass a custom formatter.

    The sub libraries of Sinon has long moved on to use util.inspect from Node. By using that in Sinon itself, we align all the libraries.

Released by Morgan Roderick on 2022-11-28.

14.0.2

  • 4d70f6e0 Upgrade nise to latest (Morgan Roderick)
  • 96a0d756 Update @sinonjs/samsam to latest (Morgan Roderick)
  • babb4736 Prefer @sinonjs/commons@2 (Morgan Roderick)

    That makes ES2017 support explicit

Released by Morgan Roderick on 2022-11-07.

14.0.1

  • 6c4753ef Fixed CSS selectors in _base.scss and changed blockquote default size to 16px. (Jose Lupianez)
  • A bunch of dependency updates

Released by Carl-Erik Kopseng on 2022-10-03.

14.0.0

Released by Morgan Roderick on 2022-05-07.

13.0.2

  • bddb631a Update fake-timers (Carl-Erik Kopseng)
  • eaed0eb2 Bump nokogiri from 1.13.3 to 1.13.4 (#2451) (dependabot[bot])

Released by Carl-Erik Kopseng on 2022-04-14.

13.0.1

  • ec4223f9 Bump nise to fix sinonjs/nise#193 (Carl-Erik Kopseng)
  • f329a010 Add unimported to workflow (#2441) (Morgan Roderick)
  • 7f16cec9 Enable updates to same major version (Carl-Erik Kopseng)
  • f784d7ad Re-introduce new version.sh script to version hook (Joel Bradshaw)

    This was inadvertently removed during merge conflicts, and is required for any of the new release process stuff to work

  • 51c508ab Add dry run mode to npm version (#2436) (Joel Bradshaw)
    • Add DRY_RUN flag to skip publish/push
    • Allow overriding branch names for testing
  • 05341dcf Update npm version scripts to manage new releases branch (Joel Bradshaw)
  • fe658261 Remove release archives from master (Joel Bradshaw)

    These archives made it difficult to find things in the GitHub interface, and take up a lot of space in a checked-out repo for something that is not useful to most people checking out the repository.

    The main purpose of these archives is to make old versions and documentation available on the Sinon website that is run out of this repo. This can be supported by using a separate branch for website releases, and to maintain the archives.

    Following this commit, the npm version scripts will be updated to automatically handle archiving the releases in the new releases branch and keeping it up to date with master.

    Also remove the directories we removed from .prettierignore, since they don't exist any more.

Released by Carl-Erik Kopseng on 2022-02-01.

13.0.0

  • cf3d6c0c Upgrade packages (#2431) (Carl-Erik Kopseng)
    • Update all @sinonjs/ packages
    • Upgrade to fake-timers 9
    • chore: ensure always using latest LTS release
  • 41710467 Adjust deploy scripts to archive old releases in a separate branch, move existing releases out of master (#2426) (Joel Bradshaw)

    Co-authored-by: Carl-Erik Kopseng carlerik@gmail.com

  • c80a7266 Bump node-fetch from 2.6.1 to 2.6.7 (#2430) (dependabot[bot])

    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

  • a00f14a9 Add explicit export for ./* (#2413) (なつき)
  • b82ca7ad Bump cached-path-relative from 1.0.2 to 1.1.0 (#2428) (dependabot[bot])
  • a9ea1427 Add documentation for assert.calledOnceWithMatch (#2424) (Mathias Schreck)
  • 1d5ab86b Be more general in stripping off stack frames to fix Firefox tests (#2425) (Joel Bradshaw)
  • 56b06129 Check call count type (#2410) (Joel Bradshaw)
  • 7863e2df Fix #2414: make Sinon available on homepage (Carl-Erik Kopseng)
  • fabaabdd Bump nokogiri from 1.11.4 to 1.13.1 (#2423) (dependabot[bot])
  • dbc0fbd2 Bump shelljs from 0.8.4 to 0.8.5 (#2422) (dependabot[bot])
  • fb8b3d72 Run Prettier (Carl-Erik Kopseng)
  • 12a45939 Fix 2377: Throw error when trying to stub non-configurable or non-writable properties (#2417) (Stuart Dotson)

    Fixes issue #2377 by throwing an error when trying to stub non-configurable or non-writable properties

Released by Carl-Erik Kopseng on 2022-01-28.

12.0.1

  • 3f598221 Fix issue with npm unlink for npm version > 6 (Carl-Erik Kopseng)
  • 51417a38 Fix bundling of cjs module (#2412) (Julian Grinblat)

Released by Carl-Erik Kopseng on 2021-11-04.

12.0.0

  • b20ef9e4 Upgrade to fake-timers@8 (Carl-Erik Kopseng). This is potentially breaking, but should not be, as the breaking change deals with the Node timer object created by fake timers.
  • eba42cc3 Enable esm named exports (#2382) (Julian Grinblat)
  • b0cf5448 Spelling (#2398) (Josh Soref)
  • e78a6706 Make calledWith() assertions idempotent (#2407) (Joel Bradshaw)
  • 2814c0a2 Generate CHANGES.md using @studio/changes (Morgan Roderick)

    This will bring us closer to having the same release process as the other @sinonjs packages.

  • 2d5d6ad4 Run tests in Node 16 in GitHub Actions (Morgan Roderick)

Released by Carl-Erik Kopseng on 2021-11-03.

11.1.2

11.1.1

  • Fix #2379 by using v7 of supports-color

11.1.0

  • Add sinon.promise() implementation (#2369)
  • Set wrappedMethod on getters/setters (#2378)
  • [Docs] Update fake-server usage & descriptions (#2365)
  • Fake docs improvement (#2360)
  • Update nise to 5.1.0 (fixed #2318)

11.0.0

  • Explicitly use samsam 6.0.2 with fix for #2345
  • Update most packages (#2371)
  • Update compatibility docs (#2366)
  • Update packages (includes breaking fake-timers change, see #2352)
  • Warn of potential memory leaks (#2357)
  • Fix clock test errors

10.0.1

  • Upgrade sinon components (bumps y18n to 4.0.1)
  • Bump y18n from 4.0.0 to 4.0.1

10.0.0

  • Upgrade nise to 4.1.0
  • Use @sinonjs/eslint-config@4 => Adopts ES2017 => Drops support for IE 11, Legacy Edge and legacy Safari

9.2.4

  • Upgrade @sinonjs/samsam@5.3.1

9.2.3

  • Use util.inspect for formatting human readable output (this retires @sinonjs/formatio)

9.2.2

  • Fix #2316: handle absent Promise (#2317)

9.2.1

  • Fix #2203: skip writing 'name' property if not writable (#2304)
  • Update error message on assert when representation of expected and actual value is equal, fixing issue #2084 (#2303)
  • Make sandboxes each use their own assert object (#2302)
  • Add usingPromise() method on fakes to fix issue #2293 (#2301)

9.2.0

  • Update dependencies (#2299)
  • Update sandbox docs with missing comma
  • Add minor markdown formatting to release docs for sandbox
  • Minor formatting improvements to legacy sandbox documentation

9.1.0

  • Add a calledOnceWithMatch assertion (#2294)

9.0.3

  • Upgrade nise to latest
  • Upgrade @sinonjs/samsam to latest

9.0.2

  • Bump @sinonjs/fake-timers (fix error when using Node's util/promisify with setTimeout)
  • Upgrade @sinonjs/commons (fix error when trying to calculate function name from generators)

9.0.1

  • Fix #2226: restore props defined on prototype chain by deleting

9.0.0

  • Ignore errors on thisValue property accesses (#2216)
  • Add firstArg to spy calls and fakes. (#2150)
  • Drop Node 8 support

8.1.1

8.1.0

  • Support negative indices in getCall (#2199)

8.0.4

  • Remove misleading 'own' from exception message

8.0.3

  • Move .printf to proxy

8.0.2

  • Upgrade @sinonjs/samsam to latest
  • Upgrade nise to 3.0.1

8.0.1

  • Force upgrade @sinonjs/commons (#2181)
  • Update docs/changelog.md and set new release id in docs/_config.yml
  • Add release documentation for v8.0.0

8.0.0

The major release is caused by removing old mistakes and upgrading dependencies that themselves have had new major releases.

  • Upgrade nise, @sinonjs/formatio, @sinonjs/samsam and @sinonjs/referee
  • Update lolex and nise to get new async timer methods (see https://github.com/sinonjs/lolex/blob/master/CHANGELOG.md)
  • Remove sinon.spyCall
  • Remove sinon.sandbox.create
  • Remove obsolete deprecated.printWarning stubbing from test

7.5.0

  • Add sinon.assert.calledOnceWithExactly
  • Feature parity: support spying all methods on an object

7.4.2

  • Restore sinon.createStubInstance() behaviour (#2073)
  • Fix Typo in migration 6 and updated migration docs for migration from… (#2074)

7.4.1

  • Update nise and lolex (minor versions)
  • add callThroughWithNew method
  • add browser field
  • Create COMPATIBILITY.md (#2051)
  • Fix sinon.resetHistory() does not reset history (#2022)

7.4.0

  • Was unpublished (see #2071)

7.3.2

7.3.1

  • Fix security issues
  • Update @sinonjs/samsam to v3.3.1

7.3.0

  • Simplify Circle CI setup
  • Add a Docker Compose config file for testing the setup locally
  • Inject createStubInstance and fake functionality
  • Remove unused prop 'injectIntoThis'
  • Fix #1974 by upgrading to @sinonjs/samsam@3.3.0

7.2.7

  • Retain spy function names and fix spy.named(name) (#1987)
  • Document spying on accessors (#1976)

7.2.6

  • Upgrade @sinonjs/formatio
  • Set fake.lastArg to last argument regardless of type

7.2.5

  • don't call extends.nonEnum in spy.resetHistory (#1984)

7.2.4

  • minor package updates
  • Update eslint-plugin-mocha
  • Fix high prio audit warnings
  • Update nise to use @sinonjs/text-encoding
  • Make all properties non-enumerable in spies, stubs, mocks and fakes
  • docs(sandbox): add example for default sandbox

7.2.3

  • Update @sinonjs/nise
  • Fix stubbing function objects (#1968)

7.2.2

  • Fix mock.withArgs using matchers (#1961)

7.2.1

  • #1957: check for truthiness before checking whether optional override is a stub
  • Upgrade @sinonjs/samsam
  • Upgrade @sinonjs/referee to v3

7.2.0

  • Upgrade to samsam 3 (#1955)
  • Rename History.md to CHANGELOG.md

7.1.1

  • Make the spy functions non enumerable so that printing it is more concise (#1936)

7.1.0

  • Issue #1852: Add a way to pass a global context to lolex when calling useFakeTimers
  • Get latest 'nise' patch

7.0.0

  • Update to Lolex 3: no negative ticks allowed

6.3.5

  • Upgrade lolex
  • Upgrade @sinonjs/samsam - fixes minor issue with IE11 introduced in 6.3.4

6.3.4

  • Update samsam, puppeteer and rollup
  • Fix #1850 (keep context in fakes)

6.3.3

  • Upgrade formatio, samsam, nise and referee

6.3.2

  • Adds guard for empty properties in deepEqual when a matcher is provided (#1901)

6.3.1

  • Fix use of non-cached reference to forEach

6.3.0

  • Allow providing stubs overrides for sinon.createStubInstance (#1864)
  • Bump Lolex to 2.7.4 to include IE fixes for performance.mark

6.2.0

  • Add mock.usingPromise to set the Promise library for mock expectations

6.1.6

  • Upgrade Lolex, Nise and other dependencies

6.1.5

  • Fix #1796, failing to stub Array.prototype.sort

6.1.4

  • Update lolex and nise dependencies to latest versions

6.1.3

  • Fix issue with matchers and cyclic references (#1709)

6.1.2

  • Made callsArg, returnsArg, and throwsArg more strict (#1848)

6.1.1

  • Restore useFakeXMLHttpRequest correctly in default sandbox (#1840)

6.1.0

  • Syntax sugar for resolvesArg (#1846)

6.0.1

  • Add fake behaviors to sandbox (#1815)

6.0.0

  • Export Sinon and its functions as an EcmaScript module (#1809 and #1835)
  • Document/test call ordering checks

5.1.1

  • Remove ES2015 'module' field for 5x branch (fix in separate branch - see tag)

5.1.0

  • Add in matcher (#1811)

5## .0.10

  • Remove functions shadowing time related sandbox methods (#1802)

5.0.9

  • Upgrade @std/esm to esm.

5.0.8

  • Add isSealed check to is-es-module to make certain ESM mocks possible

5.0.7

  • Fix stub id prefix (#1786)

5.0.6

  • Remove support-sinon.js as postinstall banner

5.0.5

  • Refuse to replace already replaced values (#1779)

5.0.4

  • Fix #1781: Reject non-function values a f argument to fake

5.0.3

  • Fix #1775: Default sandbox does not restore stubs, spies, mocks

5.0.2

  • Reset history on sandbox reset (#1770)

5.0.1

  • Remove deprecated spy.reset method
  • Add sinon.replace, sinon.replaceGetter and sinon.replaceSetter
  • Add fake
  • Use sinon as a default sandbox

4.5.0

  • Add .lastArg and .callback to spy call

4.4.9

  • Fix #1746: Remove dependency on ES2015 code from post-install script

4.4.8

  • Fix 1743: Add scripts/support-sinon.js to package

4.4.7

  • Improve the post-install script: remove noise, add ❤️

4.4.6

  • Return returned value of invokant when using yields* and callsArg* (#1724)

4.4.5

  • Add postinstall banner pointing to Open Collective

4.4.4

  • Make @std/esm a devDependency

4.4.3

  • Fix inconsistent newline usage for %D in spy.printf (#1717)

4.4.2

  • Add descriptive error message on attempt to call argument that is not a function (#1695)

4.4.1

  • Docs: make it clear that it is possible to use assert with spy calls (#1688)

4.4.0

  • Change return value of yield and callArg

4.3.0

  • add calledOnceWithExactly assertion (#1247)

4.2.3

  • Replace formatio with @sinonjs/formatio

4.2.2

  • Fix #1638: Make resetHistory work for props

4.2.1

  • Performance: spend less time stubbing methods (#1627)

4.2.0

  • Add match.every and match.some (#1624) (#1661)

4.1.6

  • Fix bad build, missing nise@1.2.0 (#1656)
  • Upgrade dependency supports-color

4.1.5

  • Use nise.fakeServer as the sandbox serverPrototype (#1534)

4.1.4

  • Fix: assertion error messages did not handle Symbol names (#1640)
  • Deprecate spy.reset(), use spy.resetHistory() instead (#1446)

4.1.3

  • Spy passes through calling with new (#1626)

4.1.2

  • Update Lolex to include fix for #872
  • Remove deprecated methods from documentation (#1613)

4.1.1

  • Remove "engines" from package.json

4.1.0

  • Add sandbox.createStubInstance (#1598)

4.0.2

  • Update 'nise' to latest version (#1593)
  • Use supports-color module to test if system supports colors
  • Upgrade mocha to v4.0.0
  • Make samsam a development dependency
  • Make native-promise-only a development dependency

4.0.1

  • Upgrade nise and lolex versions (#1579)

4.0.0

  • Explicitly update fake xhr lib 'nise'
  • Remove accidental dependency to "build"
  • Remove support for stubbing undefined props (#1557)

3.3.0

  • Adds sinon.match.hasNested
  • fix 'callThrough with a mock expectation' (#1442)
  • Documentation updates
  • Allow custom defined instance checks if supported

3.2.1

  • resolvesThis should override previous throws
  • preserve context of functions from nise: fakeServer, fakeServerWithClock
  • Fix regression for issue #1526 regarding onFirstCall().throws()
  • Fix docs regression introduced by #1523

3.2.0

  • Fix #1521 by caching references to Array.prototype.filter (#1523)
  • Fix #1368 by adding stub#resolvesThis (#1517)

3.1.0

  • Lots of documentation updates
  • Fix regression on sandbox.stub(obj,protoMethod)
  • Add factory functions for sandbox and fake server
  • Add support for passing a function to stub.throws(...). (#1511)

3.0.0

  • Remove deprecated exports (see migration guide)
  • Fix #1432: add details around expectations.withArgs behavior to docs (#1501)
  • Fix #1487: incorrect withArgs().returnValue
  • add format.setFormatter
  • Upgrade lolex to 2.1.2
  • Extract fakeXhr, fakeServer and fakeServerWithClock into own module nise and re-import it to keep api the same

2.4.1

  • stub#withArgs: set promiseLibrary correctly (#1497)

2.4.0

  • Allow anonymous mock functions to be named

2.3.8

  • Fix 1474: propagates promiseLibrary to new stub behaviors (#1484)

2.3.7

  • Fix #1476: spy.withArgs(args...).firstCall is broken

2.3.6

  • Fix #1274: spy.withArgs(args...).callCount is incorrect

2.3.5

  • Check configurable on a prop before creating (fixes #1456) (#1462)

2.3.4

  • Fix #1372: make sandbox.resetHistory also reset spies (#1424)

2.3.3

  • Fix #1445: make stubbing of static function properties possible

2.3.2

  • Fix failing sandbox.resetBehavior() (#1428)
  • Fix restoring getters/setters/values for previously unexisting props (#1419)
  • Called in order takes callCount into account. Closes #1398.

2.3.1

  • Make calledAfter symmetric with calledBefore (#1407)

2.3.0

  • Allow stubbing of accessors with and without sandbox (#1416)
  • add throwsArg(index) to stubs (#1319)
  • Fix: forEach() requires 'this' argument (#1356)
  • Only reset history when calling resetHistory()

2.2.0

  • Added usingPromise method to stub and sandbox.
  • Added support for React Native window location format Fixes #1362
  • Fix error on call.toString() where stack has fewer than 4 lines.

2.1.0

  • Redesign the template (#1339)
  • [feature] adds spy.calledImmediatelyBefore and spy.calledImmediatelyAfter
  • Fix issue #1332: little bug correction in spy.printf "%*" formatter.

2.0.0

  • Add restore method for stubbed property descriptors
  • Allow stubbing getters and setters for function properties
  • Add getters/setters stub behaviors
  • Refactor xhr and xhr.upload to use the same EventTargetHandler
  • Remove SSL part of base url

v2.0.0-pre.6

  • Add sinon.addBehavior, use it to add the default behaviors
  • Use Node instead of Ruby in the build script
  • Lots of documentation updates
  • Many dependency updates
  • Add a simple implementation og ANSI colors and boot out chalk
  • No circular dependencies, thank you very much
  • Replace homegrowns with ES5
  • Remove legacy IE bits from code
  • Fire onload event on non-2xx HTTP statuses in FakeXDomainRequest
  • Extract throwOnFalsyObject to own function
  • Stop polluting the test console with a "test" string
  • Complete internalization of extend and typeOf
  • Allow calling original function from stub. Closes #989 (#1234)
  • Matcher for Set type
  • Matcher for Map type
  • Fix set iterableToString test on IE11
  • add test-dev npm script to run tests in watch mode

v2.0.0-pre.5

  • 2.0.0-pre.5
  • Update Changelog.txt and AUTHORS for new release
  • Update changelog for pre.4
  • Remove polyfill for Promise
  • Remove old, unused, ci script for BusterJS
  • Abort pre-commit script when no files are changed
  • Check for required arguments
  • Make SED in-place update switch work on BSD
  • Upgrade text-encoding to the latest version
  • Improve rendering of sandbox.create(config) example
  • Remove sinon.test from sandbox documentation
  • Use baseurl to render links correctly on github pages
  • Specify same version of github-pages as github
  • Remove release_id from front matter
  • Update Gemfile.lock to use latest supported Jekyll
  • Fix #614: Add missing documentation for sandbox methods
  • Add missing documentation for stubs
  • Fix #1026: stub watch method on object
  • Fix invalid test for "does not walk the same property twice"
  • Add test for issue #1026
  • Fix 810 - Added documentation for sinon.restore()
  • Add docs for new array matchers
  • Array contains matcher fails when actual is not an array
  • Array endsWith matcher fails when actual is not an array
  • Array startsWith matcher fails when actual is not an array
  • Array deepEquals matcher fails when actual is not an array
  • Add .resolves and .rejects to stub (#1211)
  • Accept routing DSLs on fake server
  • Convert remaining calledWith methods to use diff color formatting
  • Color diffs for sinon matchers
  • Print diffs for multiple spy calls
  • Add new spy output formatter for handling diffs
  • Add contains array matcher
  • Add endsWith array matcher
  • Add startsWith array matcher
  • Add deepEquals array matcher
  • Add more array matchers
  • Extract deprecated.printWarning
  • Move empty stub creation to avoid unnecessary stub.create
  • Fix typo on property name called 'matchingAguments'
  • Soften migration path with deprecation warning
  • Update docs and migration guide
  • Convert 3 arg stub to callsFake
  • Update format docs to refer to formatio
  • Fix being able to spy Error
  • Prepare documentation using site in GitHub Pages
  • Add link to LICENSE in README.md
  • Add documentation for accessor method support for stubs and spies
  • Previous expectation failures are checked and re-thrown again in mock.verify()
  • Expose XHR.setStatus to simplify asynchronous answers
  • Fix typo
  • Add a how-to article about using links seams for CommonJS modules
  • stub() will fail if passed an empty property descriptor
  • Rename func argument to funcOrDescriptor
  • Add documentation for sinon.assert.match
  • XHR: test for readystatechange not dispatching after .abort() in DONE state
  • XHR: fix readystatechange event after .abort() in DONE state
  • Add tests for xhr.readyState after abort()
  • Test that demonstrates that a mock can be called more times than expected without failing (if the exception is silenced).

v2.0.0-pre.6

  • Merge pull request #1303 from dougo/docs-fixups Docs fixups

  • Merge pull request #1302 from sinonjs/add-behavior addBehavior

  • Merge pull request #1300 from Gvozd/optimize_performance Optimize performance of call-stack getting

  • Merge pull request #1301 from fatso83/1299-redirect-traffic-to-releases Redirect /docs and /downloads to /releases

  • Merge pull request #1296 from sinonjs/remove-deal-links Remove dead links

  • Merge pull request #1295 from mroderick/add-bithound-config Add .bithoundrc

  • Merge branch 'bouk-server-aint-xhr'

  • Merge pull request #1293 from mroderick/update-v1-docs-with-bundler-warnings Update 1.x documentation to say that it doesn't work with bundlers

  • Merge pull request #1294 from sinonjs/browserify-build Use Node instead of Ruby in the build script

  • Merge pull request #1292 from mroderick/update-readme Update readme

  • Merge pull request #1291 from mroderick/update-phantomjs Use phantomjs-prebuilt

  • Merge pull request #1289 from mroderick/fix-invalid-release-version-in-docs Fix invalid release number in v1.17.7.md front matter

  • Merge pull request #1290 from sinonjs/common-eslint Use common Sinon.JS eslint config

  • Merge pull request #1288 from mroderick/improve-documentation Improve documentation

  • Merge pull request #1283 from lucasfcosta/docs-stub-callThrough Add docs for stub.callThrough()

  • Merge pull request #1285 from sinonjs/uncycle-server-deps Uncycle server deps

  • Merge pull request #1282 from sinonjs/mochify-3 Use mocaccino 2 and mochify 3

  • Merge pull request #1281 from mroderick/add-missing-documentation Add missing documentation

  • Merge pull request #1277 from mroderick/remove-copyright-comments Remove copyright comments

  • Merge pull request #1271 from mroderick/use-es5-features Refactoring: use ES5.1 features

  • Merge pull request #1273 from melinath/patch-1 Update text-encoding version

  • Merge pull request #1255 from fatso83/remove-legacy-ie Remove traces of legacy IE

  • Merge pull request #1266 from duclet/chalk Switch to using "chalk" from "colors"

  • Merge pull request #1260 from JoshuaCWebDeveloper/ajax_events Fire onload event on non-2xx HTTP statuses in FakeXDomainRequest - fixes #1259

  • Merge pull request #1257 from piamancini/patch-1 Add backers and sponsors from Open Collective

  • Merge pull request #1256 from sprzybylski/download-page Create downloads page (#1218)

  • Merge pull request #1252 from mroderick/update-bundle-for-ruby-2.4.0 Update Gemfile for ruby 2.4.0

  • Merge pull request #1254 from mroderick/refute-issue-1245-in-sinon-2 Add test to disprove issue 1245 in Sinon 2.x

  • Merge pull request #1253 from BenBrostoff/error-equality Add error equality to deepEqual

  • Merge pull request #1243 from sprzybylski/changelog-page Update changelog page in postversion.sh

  • Merge pull request #1239 from mroderick/refactor-stub-method Refactor stub methods

  • Merge pull request #1242 from Floby/add-documentation-for-promise-stub Add documentation for .rejects() and .resolves()

  • Merge pull request #1241 from mroderick/cleanup-test-console Stop polluting the test console with a "test" string

  • Merge pull request #1238 from tarjei/patch-1 Document server.requests

  • Merge pull request #1235 from jonnyreeves/feature/internalize Internalise typeOf and extends

  • Merge pull request #1233 from lucasfcosta/fix-deepEqual-for-matchers Ensures different matchers won't be called against each other. Closes…

  • Merge pull request #1232 from lucasfcosta/sets-matchers Sets matchers

  • Merge pull request #1227 from zuzusik/zuzusik-always_chain_behavior_with_stub Always chain behavior with stub

  • Merge pull request #1215 from lucasfcosta/maps-matchers Maps matchers

  • Merge pull request #1226 from lucasfcosta/improve-site-readability Improve site readability

  • Merge pull request #1225 from lucasfcosta/resolve-reject-promise-upon-invoke Resolve/reject promise only upon invoke

v2.0.0-pre.5

  • Merge pull request #1223 from fatso83/release-script-improvements Minor fixes to the release scripts
  • Merge pull request #1222 from Gothdo/patch-1 Upgrade text-encoding to the latest version
  • Merge pull request #1216 from mroderick/improve-documentation Improve documentation for stubs and sandboxes
  • Merge pull request #1217 from mroderick/make-docs-run-on-github-pages Update Gemfile.lock to use latest supported Jekyll
  • Merge pull request #1213 from tiemevanveen/docs-restore Added documentation for sinon.restore()
  • Merge pull request #1214 from mroderick/fix-1026-in-2.x Fix 1026 in 2.x
  • Merge pull request #1210 from lucasfcosta/document-new-array-matchers Add docs for new array matchers
  • Merge pull request #1203 from jdgreenberger/add-expectation-diff-logs Add expectation diff logs
  • Merge pull request #1208 from lucasfcosta/array-matchers Array matchers
  • Merge pull request #1209 from lucasfcosta/avoid-unnecessary-empty-stub-creation Avoid unnecessary empty stub creation
  • Merge pull request #1207 from hurrymaplelad/calls-fake Replace stub(o, 'm', fn) with stub(o, 'm').callsFake(fn)
  • Merge pull request #1162 from dottedmag/master XHR spec conformance: abort() should not dispatch readystatechange event in DONE state
  • Merge pull request #1184 from mroderick/fail-on-empty-property-descriptor Fail on empty property descriptor
  • Merge pull request #1206 from fatso83/sinon-format-docs Update format docs to refer to formatio
  • Merge pull request #1204 from estobbart/master Fix being able to spy Error
  • Merge pull request #1189 from mroderick/docs-in-github-pages Prepare documentation using site in GitHub Pages
  • Merge pull request #1180 from mroderick/add-documentation-for-assert.match Add documentation for sinon.assert.match
  • Merge pull request #1182 from mroderick/document-accessor-support Add documentation for accessor method support for stubs and spies
  • Merge pull request #1191 from LostArchives/master Add link to LICENSE in README.md
  • Merge pull request #1188 from DanReyLop/verify-silenced-exceptions Mock expectation errors are now re-thrown when calling mock.verify()
  • Merge pull request #1186 from mroderick/add-how-to-link-seam-commonjs Add a how-to article about using links seams for CommonJS modules
  • Merge pull request #1178 from dottedmag/feature-xhr-set-status Expose XHR.setStatus to simplify asynchronous answers

2.0.0-pre.5

  • Upgrade text-encoding to the latest version
  • Remove sinon.test from sandbox documentation
  • Fix #1026: stub watch method on object
  • Add .resolves and .rejects to stub (#1211)
  • Accept routing DSLs on fake server
  • Color diffs for sinon matchers
  • Add new spy output formatter for handling diffs
  • Add various array matchers
  • Convert 3 arg stub to callsFake
  • Fix being able to spy Error
  • Prepare documentation using site in GitHub Pages
  • Various documentation additions and fixes
  • Previous expectation failures are checked and re-thrown again in mock.verify()
  • Expose XHR.setStatus to simplify asynchronous answers
  • XHR: test for readystatechange not dispatching after .abort() in DONE state
  • XHR: fix readystatechange event after .abort() in DONE state

2.0.0-pre.4

  • Use last matching withArgs declaration when using matchers (#1183)
  • Implement XHR.overrideMimeType
  • Fire .onprogress event handler in fake XHR
  • Expose readyState constants on XHR instances
  • add configurable unsafe header checks (#1061)

2.0.0-pre.3

  • Add assertion check for too many args with calledOnce/Twice/Thrice
  • Much internal refactoring relating to CommonJS

2.0.0-pre.2

  • CJSify sinon.call tests (#1079)
  • CJSify sinon.calledInOrder tests (#1080)
  • CJSify get-config tests (#1081)
  • CJSify sinon.assert tests (#1078)
  • Resolve test failure in node 0.10.x (#1073)
  • Expose sinon.assert on sandbox instances. (#1076)
  • Add resetBehavior and resetHistory to sandbox API (#1072)
  • Fix incorrect inline function names
  • Fix calledOnce on tests for #283. This closes #283.
  • Add sandbox.reset() docs
  • Add a line recommending how to pronounce.
  • Improve tests based on PR feedback
  • Allow xhr.respond(0) to simulate a network failure and call onerror
  • Use event loaded instead of error event for code like 403, 500, etc.
  • Fix invalid markdown in fake-timers.ms (#1054)
  • Do not invoke getters in walk (#1059)
  • ReactNative compatibility. Allow sinon fakeServer to run in React Native (#1052)
  • added timeouts to ensure tests pass
  • Run tests on stable Node 6 instead of unstable Node 5
  • added tests to ensure only expected events are fired (#1043)
  • Fixed formatting of issue template
  • Added note on using latest version
  • Fix onerror event triggering for fake xhr requests (#1041)
  • Add missing mocaccino and phantomic to package.json (#1029)
  • Pull request and issue templates (#1012)
  • Fix capturing of stack traces in Phantom.js.
  • Allow sinon.calledInOrder to be called either with an array of spies or multiple spies as parameters. Add explicit test cases for sinon.calledInOrder
  • Fix typos found by codespell
  • Document faking of setImmediate and clearImmediate
  • Add feature detection guard for tests containing es6 Symbols
  • Add support for es6 Symbol to wrapMethod method
  • Convert values to strings with toString instead of String()
  • Add typeOf matcher for symbol type
  • Make expectation fail as expected when called with wrong Symbol
  • Make mock report expected TypeError when expecting number and given symbol
  • Add support for es6 Symbol to match.has method
  • Make error message when failing to stub method support es6 symbol
  • Make yieldToOn fail as expected when yielding an es6 Symbol
  • Add support for es6 Symbol to match.same method
  • Make yieldTo fail as expected when yielding an es6 Symbol
  • Add support for es6 Symbol to match method
  • Work around SauceLabs security limitations
  • Declare test specific eslint configs in test/.eslintrc
  • Add test-coverage script
  • Add eslint-plugin-mocha
  • Remove browserify-shim
  • Setup saucelabs tests and adjust travis config
  • Feature detect proto to exclude a timer test in IE 10
  • Convert webworker test to mocha
  • Remove buster
  • Replace npm test script with mocha / mochify invocations
  • Fix async fake-xml-http-request tests
  • Convert issues tests to mocha
  • Convert util tests to mocha
  • Convert core tests to mocha
  • Convert stub tests to mocha
  • Convert typeof tests to mocha
  • Convert spy tests to mocha
  • Convert sandbox tests to mocha
  • Convert mock tests to mocha
  • Convert hello world test to mocha
  • Convert extend tests to mocha
  • Convert collection tests to mocha
  • Convert call tests to mocha
  • Convert assert tests to mocha
  • Convert matcher tests to mocha
  • Update docs/TODO.md to reflect plan to Jekyll
  • CJSify Spy and Stub Tests.
  • CJSify Core Util Tests.
  • Migrate Packaged Tests to use a Browserified Build.
  • fix non enumerable methods stub restore
  • Improve Blob support detection logics
  • Fix a typo in Contributing.md
  • Update Node versions on Travis
  • Use PhantomJS 2.
  • Fix #835: make err.message writable
  • Remove linting errors in switch cases
  • Add spy.notCalled to documentation
  • Remove sinon.test() and sinon.testCase.
  • Remove sinon.log and sinon.logError
  • De-fluff
  • Remove sinon-test module.
  • Extract get-config tests from sinon-test.
  • Extract function-to-string tests from sinon-test.
  • Extract restore tests from sinon-test.
  • Extract createStubInstance tests from sinon-test
  • Extract deep-equal tests from sinon-test.
  • Extract wrap-method tests from sinon-test.
  • Extract extend tests from sinon-test to extend-test
  • Move 'lib/util/core' tests into 'test/util/core'
  • Remove the use of sinon.format from the codebase
  • Require sinon.deepEqual in a more modular way
  • Fix 648: test for this.proxy before trying toString on it
  • use the correct sinon.deepEqual to test sinon matcher
  • add stub test to ensure sinon matcher is recognized within stub.withArgs
  • update repo link
  • Remove unused dependency util
  • Update samsam
  • Update lolex
  • Update browserify
  • Update dependency pre-commit
  • Update buster-istanbul to 0.1.15
  • ignore webstorm configs
  • fix async issues and increase buster timeout
  • test on node 5
  • Fixes typo error in docs
  • fix typo in lib/sinon.js
  • Fixes typo error in docs
  • Adding comment to warn against using eval
  • fix linting
  • Get rid of eval in sinon spy
  • Update README URLs based on HTTP redirects

2.0.0-pre

  • 2.0.0 pre-release
  • Extract sandbox into a CommonJS module.
  • Clarify documentation on creating stubs and spies
  • Extract util/fake_server_with_clock into a CommonJS module
  • Extract util/fake_server into a CommonJS module.
  • Extract util/fake_timers into a CommonJS module.
  • Extract util/fake_xml_http_request into a CommonJS module.
  • Extract util/fake_xdomain_request into a CommonJS module.
  • Extract util/event into a CommonJS module.
  • Extract sinon.logError into a CommonJS module.
  • Extract (most of) sinon.collection into a CommonJS module
  • Extract sinon.mock into a CommonJS module.
  • Import mock's dependencies are CommonJS modules.
  • Extract createSpyCall into a CommonJS module.
  • Extract sinon.assert into a CommonJS module.
  • Remove walk from sinon's public API.
  • Patch up linting errors
  • Remove sinon import from stub
  • Extract sinon.behavior into a CommonJS module
  • Extract sinon.walk into a CommonJS module.
  • Export stub as a CommonJS module
  • Import wrapMethod as a CommonJS module
  • Import core dependencies as CommonJS modules
  • Delete .jscsrc
  • Ensure sinon can run in a WebWorker
  • Updated docs to reflect that calledOn accepts a matcher
  • simplified test and added a note
  • updated to require spy in its new cjs form
  • ./commonjs
  • expose sinon.spy and sinon.spyCall
  • converted spy to commonjs format
  • moved sinon.format() to core
  • fixed spy tests
  • added missing test (pushes spy coverage to 100%)
  • added spy getter/setter tests
  • updated sinon.spy() to properly handle getters and setters
  • Remove unnecessary error variable
  • Prevent stubbed getter from being called during restore() - fixes #897
  • Allowed GET requests to have request bodies
  • Remove JSCS from devDependencies
  • Add Gitter badge
  • Allow yieldsOn, callsArgOn, callsArgOnWith, yieldsToOn to use any context
  • Add bithound badge to README.md
  • removed switch statement in favor of object lookup
  • Use immediate exceptions
  • lib/sinon/util: Remove window conditionals from IE files.
  • Add docs for sandbox and utils
  • Add documentation for matchers
  • Add docs for assertions
  • Add docs for JSON-P
  • Add docs for fake server
  • Add docs for fake timers
  • Add mock api descriptions
  • Add mocks introduction
  • Add stubs api
  • Update TODO
  • Use Object.prototype.hasOwnProperty in deepEqual to cope with cases where hasOwnProperty doesn't exist, ie. Object.create(null), or has been overridden on an object. With tests.
  • Add docs TODO to track outstanding tasks
  • Add stubs.md with introduction to stubs
  • Import docs
  • Fix #875 Proper support UTF8 payloads _ introduced new dependency "text-encoding" _ delegate encoding operations to TextEncoder/TextDecoder * added unit test to verify proper utf-8 encoding
  • finished eslint'ing
  • upgraded ESLint to 1.7.1 (latest and greatest)
  • Run tests in node 4.2 LTS (Argon)
  • removed unneeded path resolution
  • Let npm install handle buster again, now that we have caching of node_modules
  • Make travis cache node_modules to speed up builds
  • removed duplicate implementation of sinon.timesInWords
  • fix travis-ci build svg in README
  • reviewer comments
  • cleaning up left over blank lines
  • CommonJS-ified some of the things
  • updated readyStateChange to align to the w3c spec (somewhat)
  • cleaned up a few unrelated tests
  • updated tests to reflect reality
  • added some additional progress event verification
  • added a test to ensure load is not fired before abort
  • added test to ensure event ordering
  • allow progress events with loaded/total values of 0
  • Fix #867: Walk properties only once
  • Removed unnecessary module wrappers and double test run in NodeJS.
  • null-check the object passed to sinon.stub
  • implemented stub#resetHistory method - fixes #863
  • Fix #851: Do not attempt to re-stub constructors
  • Fix #847: Ensure walk invokes accessors directly on target
  • Run tests in node 4.1.x also
  • stub.reset also resets behavior

1.17.0

  • Fix #821 where Sinon.JS would leak a setImmediate into global scope
  • Removed sinon-timers from the build. refs #811
  • Added flag that, when set to true, makes sinon.logError throw errors synchronously.
  • Fix #777: Support non-enumerable props when stubbing objects
  • Made the sinon.test() function pass on errors to the callback
  • Expand conversion from ArrayBuffer to binary string
  • Add support for ArrayBuffer, blob responseTypes

1.16.1

  • Bump Lolex to stop throwing an error when faking Date but not setTimeout

1.16.0

  • Capture the stack on each spy call
  • fakeServer.create accepts configuration settings
  • Update Lolex to 1.3.0
  • Fire onreadystatechange with event argument
  • Returns supersedes previous throws
  • Bunch of bug fixes

1.15.0

  • Fixed bug where assertions don't handle functions that have a property named proxy
  • update license attribute
  • Add test coverage report
  • responseHeaders on abort are empty object
  • Fix pre-existing style error
  • Update documentation to cover testing built version
  • Update CONTRIBUTING.md with section about "Making a pull request"
  • Improve RELEASE.md to reduce effort when cutting a new release
  • Deprecate mock
  • Release.md
  • Make npm docs sinon work.
  • Run unit tests against packaged version in CI environment
  • Remove unused Gruntfile
  • Use Vanilla Buster.JS
  • Use files in package.json
  • Fix code style
  • Don't stub getter properties
  • Event listeners for progress, load and readystatechange in the readyStateChange function in FakeXMLHttpRequest are dispatched in a different order in comparison to a browser. Reorder the events dispatched to reflect general browser behaviour.
  • Update linting instructions in CONTRIBUTING.md
  • Lint all files with new linter
  • Update JSCS to 1.11.3 and make npm lint task verify all files
  • Cleanup .restore()

1.14.1

  • Fallback for .restore() native code functions on Chrome & PhantomJS (なつき)
  • Restore support for sinon in IE<9 (Harry Wolff)

1.14.0

  • Stub & spy getters & setters (Simon Zack)
  • Fix #702 async sinon.test using mocha interface (Mohayonao)
  • Add respondImmediately to fake servers (Jonathan Freeman)

1.13.0

  • fix @depends-require mismatches (fixes AMD issues) (Ben Hockey)
  • Fix spy.calledWith(undefined) to return false if it was called without args
  • yieldsRight (Alexander Schmidt)
  • stubs retain function arity (Charlie Rudolph)
  • (AMD) use explicit define in built version
  • spy().reset() returns this (Ali Shakiba)
  • Add lengthComputable and download progress (Tamas Szebeni)
  • Don't setContent-type when sending FormData (AJ Ortega)
  • sinon.assert with spyCall (Alex Urbano)
  • fakeXHR requests in Node. (Jmeas)
  • Enhancement: run builds on docker (till@php.net)
  • Use FakeXDomainRequest when XHR does not support CORS. Fixes #584 (Eric Wendelin)
  • More lenient check for ActiveXObject
  • aligned sandbox.useFakeXMLHttpRequest API to documentation (Phred)
  • Fix #643. Returns supersedes previous throws (Adam Hull)
  • Safely overwrite properties in IE - no more IE files!
  • Add check for setInterval/clearInterval (kdpecker)
  • Add safety check for document.createElement (kdpecker)
  • Fix #633. Use a try/catch when deleting a property in IE8. (Garrick Cheung)

1.12.1

  • Fixed lolex issue on node

1.12.0

1.11.1

  • Expose match on returned sandbox (Duncan Beevers)
  • Fix issue #586 (Antonio D'Ettole)
  • Declare log_error dependency (Kurt Ruppel)

1.11.0

  • Proper AMD support
  • Don't call sinon.expectation.pass if there aren't any expectations (Jeffrey Falgout)
  • Throw error when reset-ing while calling fake
  • Added xhr.response property (Gyandeep Singh)
  • Fixed premature sandbox destruction (Andrew Gurinovich)
  • Add sandbox reset method (vitalets)
  • A bunch of bug fixes (git log)
  • Various source organizational improvements (Morgan Roderick and others)

1.10.3

  • Fix loading in Web Workers (Victor Costan)
  • Allow null as argument to clearTimeout and clearInterval (Lars Thorup)

1.10.2

  • Fix returnValue and exception regression on spy calls (Maximilian Antoni)

1.10.1

  • Improved mocha compatibility for async tests (Ming Liu)
  • Make the fakeServer log function overloadable (Brian M Hunt)

1.10.0

  • Ensure that spy createCallProperties is set before function invocation (James Barwell)
  • XDomainRequest support (Søren Enemærke, Jonathan Sokolowski)
  • Correct AMD behavior (Tim Branyen)
  • Allow explicit naming of spies and stubs (Glen Mailer)
  • deepEqual test for unequal objects in calledWithExactly (Bryan Donovan)
  • Fix clearTimeout() for Node.js (Xiao Ma)
  • fix fakeServer.respond() in IE8 (John Bernardo)
  • Fix #448 (AMD require.amd)
  • Fix wrapMethod error handling (Nikita Litvin)

1.9.1

  • Fix an issue passing NaN to calledWith (Blake Israel)
  • Explicate dependency on util package (Kris Kowal)
  • Fake timers return an object with ref and unref properties on Node (Ben Fleis)

1.9.0

  • Add sinon.assert.match (Robin Pedersen)
  • Added ProgressEvent and CustomEvent. Fixes bug with progress events on IE. (Geries Handal)
  • prevent setRequestHeaders from being called twice (Phred)
  • Fix onload call, 'this' should be equal to XHR object (Niklas Andreasson)
  • Remove sandbox injected values on restore (Marcus Hüsgen)
  • Coerce matcher.or/and arguments into matchers (Glen Mailer)
  • Don't use buster.format any more
  • Fix comparison for regexp deepEqual (Matt Kern)

1.8.2

  • Fixes an edge case with calledWithNew and spied native functions, and other functions that lack a .prototype
  • Add feature detection for the new ProgressEvent support

1.8.1

  • Screwed up NPM release of 1.8.0, unable to replace it

1.8.0

  • Add clearImmediate mocking support to the timers API (Tim Perry)
  • Mirror custom Date properties when faking time
  • Improved Weinre support
  • Update call properties even if exceptions are thrown (Tim Perry)
  • Update call properties even if exceptions are thrown (Tim Perry)
  • Reverse matching order for fake server (Gordon L. Hempton)
  • Fix restoring globals on another frame fails on Firefox (Burak Yiğit Kaya)
  • Handle stubbing falsy properties (Tim Perry)
  • Set returnValues correctly when the spied function is called as a constructor (Tim Perry)
  • When creating a sandbox, do not overwrite existing properties when inject properties into an object (Sergio Cinos)
  • Added withCredentials property to fake xhr (Geries)
  • Refine behavior withArgs error message (Tim Fischbach)
  • Auto-respond to successive requests made with a single XHR object (Jan Suchý)
  • Add the ability for mock to accept sinon.match matchers as expected arguments (Zcicala)
  • Adding support for XMLHttpRequest.upload to FakeXMLHttpRequest (Benjamin Coe)
  • Allow onCall to be combined with returns* and throwsException in stub behavior sequences (Tim Fischbach)
  • Fixed deepEqual to detect properties on array objects
  • Fixed problem with chained timers with delay=0 (Ian Lewis)
  • Use formatio in place of buster-format (Devin Weaver)

1.7.3

  • Removed use of array forEach, breaks in older browsers (Martin Hansen)
  • sinon.deepEqual(new Date(0), new Date()) returns true (G.Serebryanskyi)

1.7.2

  • Sinon 1.7 has split calls out to a separate file. This caused some problems, so 1.7.2 ships with spyCall as part of spy.js like it used to be.

1.7.1

  • Fake XMLHttpRequest updated to call onerror and onsuccess callbacks, fixing jQuery 2.0 problems (Roman Potashow)
  • Implement XMLHttpRequest progress event api (Marten Lienen)
  • Added sinon.restore() (Jonny Reeves)
  • Fix bug where throwing a string was handled incorrectly by Sinon (Brandon Heyer)
  • Web workers support (Victor Costan)

1.7.0

  • Failed release, see 1.7.1

1.6.0

  • Add methods to spyCall interface: callArgOn, callArgOnWith, yieldOn, yieldToOn (William Sears)
  • sinon.createStubInstance creates a fully stubbed instance from a constructor (Shawn Krisman)
  • resetBehavior resets fakes created by withArgs (Martin Sander)
  • The fake server now logs to sinon.log, if set (Luis Cardoso)
  • Cleaner npm package that also includes pkg/sinon.js and pkg/sinon-ie.js for cases where npm is used to install Sinon for browser usage (Domenic Denicola)
  • Improved spy formatter %C output (Farid Neshat)
  • clock.tick returns clock.now (Michael Jackson)
  • Fixed issue #248 with callOrder assertion Did not fail if the last given spy was never called (Maximilian Antoni)
  • Fixed issue with setResponseHeader for synchronous requests (goligo)
  • Remove msSetImmediate; it only existed in IE10 previews (Domenic Denicola)
  • Fix #231: not always picking up the latest calls to callsArgWith, etc. (Domenic Denicola)
  • Fix failing anonymous mock expectations

1.5.2

  • Revert stub.reset changes that caused existing tests to fail.

1.5.1

  • Ensure window.Image can be stubbed. (Adrian Phinney)
  • Fix spy() in IE 8 (Scott Andrews)
  • Fix sinon base in IE 8 (Scott Andrews)
  • Format arguments output when mock expectation is not met (kbackowski)
  • Calling spy.reset directly from stub.reset (Thomas Meyer)

1.5.0

  • Don't force "use strict" on Sinon consumers
  • Don't assume objects have hasOwnProperties. Fixes problem with e.g. stubbing properties on process.env
  • Preserve function length for spy (Maximilian Antoni)
  • Add 'invokeCallback' alias for 'yield' on calls (Maximilian Antoni)
  • Added matcher support for calledOn (Maximilian Antoni)
  • Retain original expectation messages, for failed mocks under sinon.test (Giorgos Giannoutsos)
  • Allow yields* and callsArg* to create sequences of calls. (Domenic Denicola)
  • sinon.js can catch itself in endless loop while filling stub prototype with asynch methods (Jan Kopriva)

1.4.2

  • sinon.match for arrays (Maximilian Antoni)

1.4.1

  • Strengthen a Node.JS inference to avoid quirky behavior with Mocha (which provides a shim process object)

1.4.0

  • Argument matchers (Maximilian Antoni) sinon.match.{any, same, typeOf, instanceOf, has, hasOwn, defined, truthy, falsy} as well as typeOf shortcuts for boolean, number, string, object, function, array, regexp and date. The result of a call can be used with spy.calledWith.
  • spy.returned now works with matchers and compares objects deeply.
  • Matcher assertions: calledWithMatch, alwaysCalledWithMatch and neverCalledWithMatch
  • calledWithNew and alwaysCalledWithNew for assert (Maximilian Antoni)
  • Easier stubbed fluent interfaces: stub.returnsThis() (Glen Mailer)
  • allow yields() and family to be used along with returns()/throws() and family (Glen Mailer)
  • Async versions callsArg* and yields* for stubs (TEHEK)
  • Format args when doing spy.printf("%*") (Domenic Denicola)
  • Add notCalled property to spies
  • Fix: spy.reset did not reset fakes created by spy.withArgs (Maximilian Antoni)
  • Properly restore stubs when stubbing entire objects through the sandbox (Konrad Holowinski)
  • Restore global methods properly - delete properties that where not own properties (Keith Cirkel)
  • setTimeout and setInterval pass arguments (Rodion Vynnychenko)
  • Timer callbacks that contain a clock.tick no longer fails (Wesley Waser)
  • spy(undefined, "property") now throws
  • Prevent multiple restore for fake timers (Kevin Decker)
  • Fix toString format under Node (Kevin Decker)
  • Mock expectations emit success and failure events (Kevin Decker)
  • Development improvement: Use Buster.JS to test Sinon
  • Fix bug where expect.atLeast failed when minimum calls where received
  • Make fake server safe to load on node.js
  • Add support for no args on .withArgs and .withExactArgs (Tek Nynja)
  • Avoid hasOwnProperty for host objects

1.3.2

  • Stronger Node inference in sandbox
  • Fixed issue with sinon.useFakeTimers() and Rhino.js 1.7R3
  • Formatting brush-up
  • FIX Internet Explorer misreporting the type of Function objects originating in an external window as "object" instead of "function".
  • New methods stub.callsArgOn, stub.callsArgOnWith, stub.yieldsOn, stub.yieldsToOn
  • Implemented
  • Fixing clearTimeout to not throw when called for nonexistent IDs.
  • Spys that are created using 'withArgs' now get initialized with previous calls to the original spy.
  • Minor bug fixes and docs cleanup.

1.3.1

  • Fix bug in core sinon: isNode was used for both a variable and a function, causing load errors and lots of bugs. Should have never left the door.

1.3.0

  • Support using bare functions as fake server response handlers (< 1.3.0 required URL and/or method matcher too)

  • Log some internal errors to sinon.log (defaults to noop). Set sinon.log to your logging utility of choice for better feedback when.

  • White-list fake XHRs: Allows some fake requests and some that fall through to the backend server (Tim Ruffles)

  • Decide Date.now support at fake-time. Makes it possible to load something that polyfills Date.now after Sinon loaded and still have Date.now on fake Dates.

  • Mirror properties on replaced function properties

  • New methods: spy.yield(), spy.yieldTo(), spy.callArg() and spy.callArgWith() can be used to invoke callbacks passed to spies (while avoiding the mock-like upfront yields() and friends). invokeCallback is available as an alias for yield for people working with strict mode. (Maximilian Antoni)

  • New properties: spy.firstCall, spy.secondCall, spy.thirdCall and spy.lastCall. (Maximilian Antoni)

  • New method: stub.returnsArg(), causes stub to return one of its arguments. (Gavin Huang)

  • Stubs now work for inherited methods. This was previously prohibited to avoid stubbing not-yet-implemented methods. (Felix Geisendörfer)

  • server.respond() can now accept the same arguments as server.respondWith() for quick-and-dirty respondWith+respond. (Gavin Huang)

  • Format objects with buster-format in the default bundle. Default to util.inspect on node unless buster-format is available (not a hard dependency, more like a 'preference').

  • Bug fix: Make sure XHRs can complete even if onreadystatechange handler fails

  • Bug fix: Mirror entire Date.prototype, including toUTCString when faking

  • Bug fix: Default this object to global in exposed asserts

  • Bug fix: sinon.test: use try/finally instead of catch and throw - preserves stack traces (Kevin Turner)

  • Bug fix: Fake setTimeout now returns ids greater than 0. (Domenic Denicola)

  • Bug fix: NPM install warning (Felix Geisendörfer)

  • Bug fix: Fake timers no longer swallows exceptions (Felix Geisendörfer)

  • Bug fix: Properly expose all needed asserts for node

  • Bug fix: wrapMethod on window property (i.e. when stubbing/spying on global functions)

  • Bug fix: Quote "yield" (Ben Hockey)

  • Bug fix: callOrder works correctly when spies have been called multiple times

1.2.0

  • Bug fix: abort() switches state to DONE when OPENED and sent. Fix by Tristan Koch.
  • Bug fix: Mootools uses MSXML2.XMLHTTP as objectId, which Sinon matched with different casing. Fix by Olmo Maldonado.
  • Bug fix: When wrapping a non-owned property, restore now removes the wrapper instead of replacing it. Fix by Will Butler.
  • Bug fix: Make it possibly to stub Array.prototype.push by not using that method directly inside Sinon.
  • Bug fix: Don't assume that req.requestBody is a string in the fake server.
  • Added spy.printf(format) to print a nicely formatted message with details about a spy.
  • Garbage collection: removing fakes from collections when restoring the original methods. Fix by Tristan Koch.
  • Add spy.calledWithNew to check if a function was used as a constructor
  • Add spy.notCalledWith(), spy.neverCalledWith() and sinon.assert.neverCalledWith. By Max Antoni
  • Publicly expose sinon.expectation.fail to allow tools to integrate with mock expectations.
  • Fake XMLHttpRequests now support a minimal portion of the events API, making them work seamlessly with e.g. SproutCode (which uses xhr.addEventListener("readystatechange"). Partially by Sven Fuchs.

1.1.1

  • Fix broken mock verification in CommonJS when not including the full Sinon package.

1.1.0

  • The fake server now has a autoRespond method which allows it to respond to requests on the fly (asynchronously), making it a good fit for mockup development
  • Stubs and spies now has a withArgs method. Using it allows you to create several spies/stubs for the same method, filtered by received arguments
  • Stubs now has yields and yieldsTo methods for fuzzily invoking callbacks. They work like callsArgAt only by inferring what callback to invoke, and yieldsTo can invoke callbacks in object "options" arguments.
  • Allow sandboxes/collections to stub any property so long as the object has the property as an own property
  • Significantly improve error reporting from failed mock expectations. Now prints all met and unmet expectations with expected and received arguments
  • Allow mock expectations to be consumed in any order
  • Add pretty printing of all calls when assertions fail
  • Fix bug: Stub exception message ended up as "undefined" (string) if not specified
  • Pass capture groups in URLs to fakeServer function handlers
  • Pass through return value from test function in testCase
  • typeof require is not enough to assume node, also use typeof module
  • Don't use Object.create in sinon.create. In the off chance that someone stubs it, sinon will fail mysteriously (Thanks to Espen Dalløkken)
  • Catch exceptions when parsing DOM elements "on a hunch" When responding to XHRs, Sinon acts like most browsers and try to parse the response into responseXML if Content-Type indicates XML or HTML. However, it also does this if the type is not set. Obviously, this may misfire and should be caught.
  • Fix fakeServer.respond() to not drop requests when they are queued during the processing of an existing queue. (Sven Fuchs)
  • Clean up module loading in CommonJS environments (Node.js still the only tested such environment). No longer (temporarily) modifies require.paths, always loads all modules.

1.0.2

  • Fix JSON bug in package.json
  • Sandbox no longer tries to use a fake server if config says so, but server is not loaded

1.0.1

  • Make sure sinon.sandbox is exposed in node.js (fix by Gord Tanner)

1.0.0

  • Switched indentation from 2 to 4 spaces :)

  • Node.js compatibility improvements

  • Remove magic booleans from sinon.assert.expose, replace with option object

  • Put QUnit adapter in its own repository

  • Update build script to build standalone timers and server files

  • Breaking change: thisObj -> thisValue Change brings consistency to the code-base, always use thisValue

  • Add sinon.assert.pass callback for successful assertions

  • Extract sandbox configuration from sinon.test

    Refactored sinon.test to not do all the heavy lifting in creating sandbox objects from sinon.config. Now sinon.sandbox.create accepts an optional configuration that can be retrieved through sinon.getConfig({ ... }) - or, to match previous behavior, through sinon.getConfig(sinon.config);

    The default configuration now lives in sinon.defaultConfig rather than the previous sinon.test.

    This change enables external tools, such as test framework adapters, to easily create configurable sandboxes without going through sinon.test

  • Rewrite sinon.clock.tick to fix bug and make implementation clearer

  • Test config load correct files

  • Make timers and XHR truly standalone by splitting the IE work-around in two files

  • Don't fail when comparing DOM elements in sinon.deepEqual (used in calledWith(...))

  • Should mirror properties on Date when faking it

  • Added and updated configuration for both JsLint and JavaScript lint

  • [August Lilleaas] The build script can optionally build a file without the version name in it, by passing 'plain', i.e. './build plain'.

    Useful when using the build script to build and use sinon programatically, so one can 'cp path/to/sinon/pkg/sinon.js my/scripts/'

  • [August Lilleaas] Checking and warning if we got a load error and rubygems isn't present.

  • [August Lilleaas] Updating build script to be runnable from any directory. Current working directory doesn't have to be repo root.

0.8.0

  • sinon.wrapMethod no longer accepts faking already faked methods
  • sinon-qunit 'plugin'
  • sinon.test / sinon.config can now expose the sandbox object

0.7.2

  • Add sinon.sandbox.create back in
  • Fix bug where clock.tick would fire timeouts in intervals when setInterval was also called

0.7.1

  • The fake server will now match paths against full URLs, meaning that server.respondWith("/", "OK"); will match requests for "http://currentHost/".
  • Improved toString method for spies and stubs which leads to more precise error messages from sinon.assert.*

0.7.0

  • sinon.useFakeTimers now fakes the Date constructor by default
  • sinon.testCase now fakes XHR and timers by default
  • sinon.config controls the behavior of sinon.testCase
  • Fixed bug in clock.tick - now fires timers in correct order
  • Added the ability to tick a clock string for longer ticks. Passing a number causes the clock to tick the specified amount of milliseconds, passing a string like "12:32" ticks 12 minutes and 32 seconds.
  • calledBefore and calledAfter for individual calls
  • New assertions sinon.assert.notCalled sinon.assert.calledOnce sinon.assert.calledTwice sinon.assert.calledThrice
  • sinon.test now throws if passed anything other than a function
  • sinon.testCase now throws if passed anything other than an object
  • sinon.{spy,stub}(obj, method) now throws if the property is not an existing function - helps avoid perpetuating typo bugs
  • Vastly improved error messages from assertions
  • Spies/stubs/expectations can have their names resolved in many cases
  • Removed feature where sinon.testCase allowed for nested test cases (does not belong in Sinon.JS)
  • Organizational change: src/ becomes lib/ Helps npm compatibility
  • Thanks to Cory Flanigan for help on npm compatibility

0.6.2

  • Fixed another bug in sinon.fakeServerWithClock where consecutive respond() calls did not trigger timeouts.

0.6.1

  • Fixed a bug in sinon.fakeServerWithClock where the clock was ticked before the server had responded to all requests, resulting in objects not having been responded to by the time the timeout ran.

0.6.0

  • FakeXMLHttpRequest
  • sinon.useFakeXMLHttpRequest
  • sinon.fakeServer
  • sinon.fakeServerWithClock
  • Improved fake timers implementation, made them work properly in IE 6-8
  • Improved sinon.sandbox
    • Added useFakeServer
    • Added inject method
  • Improved sinon.test method
    • Made configuration aware
    • Now uses sinon.sandbox in place of sinon.collection
  • Changed default configuration for sinon.test, breaking compatibility with 0.5.0 - can be changed through sinon.config

0.5.0

  • Initial release
  • Spies, stubs, mocks
  • Assertions
  • collections, test, testCase
  • Fake timers (half-baked)