@@ -1595,5 +1595,148 @@ test('assert/strict exists', () => {
15951595 assert . strictEqual ( require ( 'assert/strict' ) , assert . strict ) ;
15961596} ) ;
15971597
1598+ test ( 'Printf-like format strings as error message' , ( ) => {
1599+ assert . throws (
1600+ ( ) => assert . equal ( 1 , 2 , 'The answer to all questions is %i' , 42 ) ,
1601+ / T h e a n s w e r t o a l l q u e s t i o n s i s 4 2 /
1602+ ) ;
1603+
1604+ assert . throws (
1605+ ( ) => assert . strictEqual ( 1 , 2 , 'The answer to all questions is %i' , 42 ) ,
1606+ / T h e a n s w e r t o a l l q u e s t i o n s i s 4 2 /
1607+ ) ;
1608+
1609+ assert . throws (
1610+ ( ) => assert . notEqual ( 1 , 1 , 'The answer to all questions is %i' , 42 ) ,
1611+ / T h e a n s w e r t o a l l q u e s t i o n s i s 4 2 /
1612+ ) ;
1613+
1614+ assert . throws (
1615+ ( ) => assert . notStrictEqual ( 1 , 1 , 'The answer to all questions is %i' , 42 ) ,
1616+ / T h e a n s w e r t o a l l q u e s t i o n s i s 4 2 /
1617+ ) ;
1618+
1619+ assert . throws (
1620+ ( ) => assert . deepEqual ( 1 , 2 , 'The answer to all questions is %i' , 42 ) ,
1621+ / T h e a n s w e r t o a l l q u e s t i o n s i s 4 2 /
1622+ ) ;
1623+
1624+ assert . throws (
1625+ ( ) => assert . notDeepEqual ( 1 , 1 , 'The answer to all questions is %i' , 42 ) ,
1626+ / T h e a n s w e r t o a l l q u e s t i o n s i s 4 2 /
1627+ ) ;
1628+
1629+ assert . throws (
1630+ ( ) => assert . deepStrictEqual ( 1 , 2 , 'The answer to all questions is %i' , 42 ) ,
1631+ / T h e a n s w e r t o a l l q u e s t i o n s i s 4 2 /
1632+ ) ;
1633+
1634+ assert . throws (
1635+ ( ) => assert . notDeepStrictEqual ( 1 , 1 , 'The answer to all questions is %i' , 42 ) ,
1636+ / T h e a n s w e r t o a l l q u e s t i o n s i s 4 2 /
1637+ ) ;
1638+
1639+ assert . throws (
1640+ ( ) => assert . partialDeepStrictEqual ( 1 , 2 , 'The answer to all questions is %i' , 42 ) ,
1641+ / T h e a n s w e r t o a l l q u e s t i o n s i s 4 2 /
1642+ ) ;
1643+
1644+ assert . throws (
1645+ ( ) => assert . match ( 'foo' , / b a r / , 'The answer to all questions is %i' , 42 ) ,
1646+ / T h e a n s w e r t o a l l q u e s t i o n s i s 4 2 /
1647+ ) ;
1648+
1649+ assert . throws (
1650+ ( ) => assert . doesNotMatch ( 'foo' , / f o o / , 'The answer to all questions is %i' , 42 ) ,
1651+ / T h e a n s w e r t o a l l q u e s t i o n s i s 4 2 /
1652+ ) ;
1653+ } ) ;
1654+
1655+ test ( 'Functions as error message' , ( ) => {
1656+ function errorMessage ( actual , expected ) {
1657+ return `Nice message including ${ actual } and ${ expected } ` ;
1658+ }
1659+ assert . throws (
1660+ ( ) => assert . equal ( 1 , 2 , errorMessage ) ,
1661+ { message : 'Nice message including 1 and 2' }
1662+ ) ;
1663+
1664+ assert . throws (
1665+ ( ) => assert . strictEqual ( 1 , 2 , errorMessage ) ,
1666+ // TODO(BridgeAR): Align input arguments with generated message for all
1667+ // methods.
1668+ // TODO(BridgeAR): Check how to handle this for custom messages. Do
1669+ // we need this? Should it be skipped for methods like these?
1670+ { message : 'Nice message including 1 and 2\n\n1 !== 2\n' }
1671+ ) ;
1672+
1673+ assert . throws (
1674+ ( ) => assert . notEqual ( 1 , 1 , errorMessage ) ,
1675+ { message : 'Nice message including 1 and 1' }
1676+ ) ;
1677+
1678+ assert . throws (
1679+ ( ) => assert . notStrictEqual ( 1 , 1 , errorMessage ) ,
1680+ { message : 'Nice message including 1 and 1' }
1681+ ) ;
1682+
1683+ assert . throws (
1684+ ( ) => assert . deepEqual ( 1 , 2 , errorMessage ) ,
1685+ { message : 'Nice message including 1 and 2' }
1686+ ) ;
1687+
1688+ assert . throws (
1689+ ( ) => assert . notDeepEqual ( 1 , 1 , errorMessage ) ,
1690+ { message : 'Nice message including 1 and 1' }
1691+ ) ;
1692+
1693+ assert . throws (
1694+ ( ) => assert . deepStrictEqual ( 1 , 2 , errorMessage ) ,
1695+ { message : 'Nice message including 1 and 2\n\n1 !== 2\n' }
1696+ ) ;
1697+
1698+ assert . throws (
1699+ ( ) => assert . notDeepStrictEqual ( 1 , 1 , errorMessage ) ,
1700+ { message : 'Nice message including 1 and 1' }
1701+ ) ;
1702+
1703+ assert . throws (
1704+ ( ) => assert . partialDeepStrictEqual ( 1 , 2 , errorMessage ) ,
1705+ { message : 'Nice message including 1 and 2\n\n1 !== 2\n' }
1706+ ) ;
1707+
1708+ assert . throws (
1709+ ( ) => assert . match ( 'foo' , / b a r / , errorMessage ) ,
1710+ { message : 'Nice message including foo and /bar/' }
1711+ ) ;
1712+
1713+ assert . throws (
1714+ ( ) => assert . doesNotMatch ( 'foo' , / f o o / , errorMessage ) ,
1715+ { message : 'Nice message including foo and /foo/' }
1716+ ) ;
1717+ } ) ;
1718+
1719+ test ( 'Ambiguous error messages fail' , ( ) => {
1720+ function errorMessage ( actual , expected ) {
1721+ return `Nice message including ${ actual } and ${ expected } ` ;
1722+ }
1723+
1724+ assert . throws (
1725+ ( ) => assert . doesNotMatch ( 'foo' , / f o o / , errorMessage , 'foobar' ) ,
1726+ {
1727+ code : 'ERR_AMBIGUOUS_ARGUMENT' ,
1728+ message : / e r r o r M e s s a g e /
1729+ }
1730+ ) ;
1731+
1732+ assert . throws (
1733+ ( ) => assert . doesNotMatch ( 'foo' , / f o o / , new Error ( 'baz' ) , 'foobar' ) ,
1734+ {
1735+ code : 'ERR_AMBIGUOUS_ARGUMENT' ,
1736+ message : / b a z /
1737+ }
1738+ ) ;
1739+ } ) ;
1740+
15981741/* eslint-enable no-restricted-syntax */
15991742/* eslint-enable no-restricted-properties */
0 commit comments