Skip to content

referee.exception doesn't test for exact match of exception properties #252

@gukoff

Description

@gukoff

We understand you have a problem and are in a hurry, but please provide us with some info to make it much more likely for your issue to be understood, worked on and resolved quickly.

  • library version : 10.0.0
  • Environment : OSX
  • Other libraries you are using: sinon

How to reproduce

assert.exception(
    function () {
        throw new TypeError('long exception message');
    },
    {
        message: "message",
        name: "rr",
    }
);

What did you expect to happen?

Test fails

What actually happens

Test succeeds

Reason

When samsam library detects there's no match, referee tries to verify that by iterating property-by-property and comparing again: https://github.com/sinonjs/referee/blob/main/lib/assertions/exception.js#L52

The problem is, comparing objects is different from comparing strings in samsam.

When iterating property-by-property, we don't check for string equality, rather that one string is a substring of anoter: https://github.com/sinonjs/samsam/blob/main/lib/match.js#L71-L74

This makes the check in assert.exception weaker - it succeeds if the strings in the matcher strings are just the substrings of the corresponding properties.

I would expect this behaviour to be either changed or explicitly documented.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions