New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

code

Package Overview
Dependencies
Maintainers
2
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

code - npm Package Compare versions

Comparing version 2.1.0 to 2.1.1

API.md

14

lib/index.js

@@ -83,4 +83,8 @@ 'use strict';

const original = this._ref;
original.at = internals.at(this._ref);
const at = internals.at(this._ref);
if (at !== undefined) {
original.at = at;
}
throw original;

@@ -436,8 +440,10 @@ }

error = error || new Error();
const at = error.stack.replace(error.toString(), '').split('\n').slice(1).filter(internals.filterLocal)[0].match(/^\s*at \(?(.+)\:(\d+)\:(\d+)\)?$/);
return {
const stack = typeof error.stack === 'string' ? error.stack : '';
const frame = stack.replace(error.toString(), '').split('\n').slice(1).filter(internals.filterLocal)[0] || '';
const at = frame.match(/^\s*at \(?(.+)\:(\d+)\:(\d+)\)?$/);
return Array.isArray(at) ? {
filename: at[1],
line: at[2],
column: at[3]
};
} : undefined;
};

@@ -444,0 +450,0 @@

{
"name": "code",
"description": "assertion library",
"version": "2.1.0",
"version": "2.1.1",
"repository": "git://github.com/hapijs/code",

@@ -19,9 +19,12 @@ "main": "lib/index.js",

"devDependencies": {
"lab": "7.x.x"
"lab": "10.x.x",
"markdown-toc": "0.12.3"
},
"scripts": {
"test": "lab -v -t 100 -L",
"test-cov-html": "lab -L -r html -o coverage.html"
"test-cov-html": "lab -L -r html -o coverage.html",
"toc": "node generate-api-toc.js",
"version": "npm run toc && git add API.md"
},
"license": "BSD-3-Clause"
}

@@ -1,59 +0,10 @@

#code
# code
BDD assertion library.
> BDD assertion library.
[![Current Version](https://img.shields.io/npm/v/code.svg)](https://www.npmjs.org/package/code)
[![Build Status](https://secure.travis-ci.org/hapijs/code.png)](http://travis-ci.org/hapijs/code)
[![Build Status](https://secure.travis-ci.org/hapijs/code.svg)](http://travis-ci.org/hapijs/code)
Lead Maintainer - [Colin Ihrig](https://github.com/cjihrig)
## Table of Contents
- [Example](#example)
- [Acknowledgments](#acknowledgments)
- [Usage](#usage)
- Grammar
- Flags
- [`expect(value, [prefix])`](#expectvalue-prefix)
- Types
- [`arguments()`](#arguments)
- [`array()`](#array)
- [`boolean()`](#boolean)
- [`buffer()`](#buffer)
- [`date()`](#date)
- [`function()`](#function)
- [`number()`](#number)
- [`regexp()`](#regexp)
- [`string()`](#string)
- [`object()`](#object)
- Values
- [`true()`](#true)
- [`false()`](#false)
- [`null()`](#null)
- [`undefined()`](#undefined)
- [`include(values)`](#includevalues)
- [`startWith(value)`](#startwithvalue)
- [`endWith(value)`](#endwithvalue)
- [`exist()`](#exist)
- [`empty()`](#empty)
- [`length(size)`](#lengthsize)
- [`equal(value[, options])`](#equalvalue-options)
- [`above(value)`](#abovevalue)
- [`least(value)`](#leastvalue)
- [`below(value)`](#belowvalue)
- [`most(value)`](#mostvalue)
- [`within(from, to)`](#withinfrom-to)
- [`between(from, to)`](#betweenfrom-to)
- [`about(value, delta)`](#aboutvalue-delta)
- [`instanceof(type)`](#instanceoftype)
- [`match(regex)`](#matchregex)
- [`satisfy(validator)`](#satisfyvalidator)
- [`throw([type], [message])`](#throwtype-message)
- [`fail(message)`](#failmessage)
- [`count()`](#count)
- [`incomplete()`](#incomplete)
- [Settings](#settings)
- [`truncateMessages`](#truncatemessages)
- [`comparePrototypes`](#compareprototypes)
## Example

@@ -79,3 +30,3 @@

an assertion library that is small, simple, and intuitive - without plugins, extensions, or the overhead
of having to support testing in the browser. **code** provides much of the same functionality is about
of having to support testing in the browser. **code** provides much of the same functionality in about
300 lines of code that are trivial to read in a few minutes.

@@ -92,613 +43,3 @@

## Usage
### Grammar
**code** supports usage of connecting words to make assertions more readable. The inclusion of these
grammar elements has no impact over the assertion outcome and are used for human readability only.
Every method or property of the assertion object returned by `expect()` returns `this` which allows
chaining addition assertions or grammar words.
The supported words are:
- `a`
- `an`
- `and`
- `at`
- `be`
- `have`
- `in`
- `to`
```js
const Code = require('code');
const expect = Code.expect;
expect(10).to.be.above(5);
expect('abc').to.be.a.string();
expect([1, 2]).to.be.an.array();
expect(20).to.be.at.least(20);
expect('abc').to.have.length(3);
expect('abc').to.be.a.string().and.contain(['a', 'b']);
expect(6).to.be.in.range(5, 6);
```
### Flags
The following words toggle a status flag for the current assertion:
- `deep` - performs a deep comparison instead of simple equality (`===`). Required when trying to compare
objects to an identical copy that is not the same reference. Used by `equal()` and `include()`.
- `not` - inverses the expected result of any assertion.
- `once` - requires that inclusion matches appear only once in the provided value. Used by `include()`.
- `only` - requires that only the provided elements appear in the provided value. Used by `include()`.
- `part` - allows a partial match when asserting inclusion. Used by `include()`.
```js
const Code = require('code');
const expect = Code.expect;
expect(10).to.not.be.above(20);
expect([{ a: 1 }]).to.deep.include({ a: 1 });
expect([1, 1, 2]).to.only.include([1, 2]);
expect([1, 2]).to.once.include([1, 2]);
expect([1, 2, 3]).to.part.include([1, 4]);
```
Note that including the same flag twice toggles the last value set. This is especially important when
chaining multiple assertions in a single statement (e.g. when using the `and` grammar word).
### `expect(value, [prefix])`
Generates an assertion object where:
- `value` - the reference value on which to apply the assertion rules.
- `prefix` - an optional string used as an error message prefix.
```js
const Code = require('code');
const expect = Code.expect;
expect(10, 'Age').to.be.above(5);
```
#### Types
Asserts that the reference value is of a certain type.
##### `arguments()`
Asserts that the reference value is an `arguments` object.
```js
const Code = require('code');
const expect = Code.expect;
const func = function () { return arguments; };
expect(func()).to.be.arguments();
```
##### `array()`
Asserts that the reference value is an `Array`.
```js
const Code = require('code');
const expect = Code.expect;
expect([1, 2]).to.be.an.array();
```
##### `boolean()`
Asserts that the reference value is a boolean.
```js
const Code = require('code');
const expect = Code.expect;
expect(true).to.be.a.boolean();
```
##### `buffer()`
Asserts that the reference value is a `Buffer`.
```js
const Code = require('code');
const expect = Code.expect;
expect(new Buffer('')).to.be.a.buffer();
```
##### `date()`
Asserts that the reference value is a `Date`.
```js
const Code = require('code');
const expect = Code.expect;
expect(new Date()).to.be.a.date();
```
##### `function()`
Asserts that the reference value is a `function`.
```js
const Code = require('code');
const expect = Code.expect;
expect(function () {}).to.be.a.function();
```
##### `number()`
Asserts that the reference value is a `number`.
```js
const Code = require('code');
const expect = Code.expect;
expect(123).to.be.a.number();
```
##### `regexp()`
Asserts that the reference value is an `RegExp`.
```js
const Code = require('code');
const expect = Code.expect;
expect(/abc/).to.be.a.regexp();
```
##### `string()`
Asserts that the reference value is a string.
```js
const Code = require('code');
const expect = Code.expect;
expect('abc').to.be.a.string();
```
##### `object()`
Asserts that the reference value is an object (excluding array, buffer, or other native objects).
```js
const Code = require('code');
const expect = Code.expect;
expect({ a: '1' }).to.be.an.object();
```
#### Values
Asserts that the reference value is equals to a predefined value.
##### `true()`
Asserts that the reference value is true.
```js
const Code = require('code');
const expect = Code.expect;
expect(true).to.be.true();
```
##### `false()`
Asserts that the reference value is false.
```js
const Code = require('code');
const expect = Code.expect;
expect(false).to.be.false();
```
##### `null()`
Asserts that the reference value is null.
```js
const Code = require('code');
const expect = Code.expect;
expect(null).to.be.null();
```
##### `undefined()`
Asserts that the reference value is undefined.
```js
const Code = require('code');
const expect = Code.expect;
expect(undefined).to.be.undefined();
```
#### `include(values)`
Aliases: `includes()`, `contain()`, `contains()`
Asserts that the reference value (a string, array, or object) includes the provided values where:
- `values` - a single or array of values. If the reference value is a string, the values must be strings.
If the reference value is an array, the values can be any array member (`deep` is required to compare
non-literal types). If the reference value is an object, the values can be key names, or a single object
with key-value pairs to match.
```js
const Code = require('code');
const expect = Code.expect;
expect('abc').to.include('ab');
expect('abc').to.only.include('abc');
expect('aaa').to.only.include('a');
expect('abc').to.once.include('b');
expect('abc').to.include(['a', 'c']);
expect('abc').to.part.include(['a', 'd']);
expect([1, 2, 3]).to.include(1);
expect([{ a: 1 }]).to.deep.include({ a: 1 });
expect([1, 2, 3]).to.include([1, 2]);
expect([{ a: 1 }]).to.deep.include([{ a: 1 }]);
expect([1, 1, 2]).to.only.include([1, 2]);
expect([1, 2]).to.once.include([1, 2]);
expect([1, 2, 3]).to.part.include([1, 4]);
expect([[1], [2]]).to.deep.include([[1]]);
expect({ a: 1, b: 2, c: 3 }).to.include('a');
expect({ a: 1, b: 2, c: 3 }).to.include(['a', 'c']);
expect({ a: 1, b: 2, c: 3 }).to.only.include(['a', 'b', 'c']);
expect({ a: 1, b: 2, c: 3 }).to.include({ a: 1 });
expect({ a: 1, b: 2, c: 3 }).to.include({ a: 1, c: 3 });
expect({ a: 1, b: 2, c: 3 }).to.part.include({ a: 1, d: 4 });
expect({ a: 1, b: 2, c: 3 }).to.only.include({ a: 1, b: 2, c: 3 });
expect({ a: [1], b: [2], c: [3] }).to.deep.include({ a: [1], c: [3] });
```
#### `startWith(value)`
Aliases: `startsWith()`,
Asserts that the reference value (a string) starts with the provided value where:
- `value` - a string.
Note that this assertion is case sensitive.
```js
const Code = require('code');
const expect = Code.expect;
expect('https://example.org/secure').to.startWith('https://');
```
#### `endWith(value)`
Aliases: `endsWith()`,
Asserts that the reference value (a string) ends with the provided value where:
- `value` - a string.
Note that this assertion is case sensitive.
```js
const Code = require('code');
const expect = Code.expect;
expect('http://example.org/relative').to.endWith('/relative');
```
#### `exist()`
Aliases: `exists`
Asserts that the reference value exists (not `null` or `undefined`).
```js
const Code = require('code');
const expect = Code.expect;
expect(4).to.exist();
expect(null).to.not.exist();
```
#### `empty()`
Asserts that the reference value has a `length` property equal to zero or an object with no keys.
```js
const Code = require('code');
const expect = Code.expect;
expect('abc').to.be.empty();
```
#### `length(size)`
Asserts that the reference value has a `length` property matching the provided size or an object with the
specified number of keys where:
- `size` - the required size.
```js
const Code = require('code');
const expect = Code.expect;
expect('abcd').to.have.length(4);
```
#### `equal(value[, options])`
Aliases: `equals()`
Asserts that the reference value equals the provided value (`deep` is required to compare non-literal
types) where:
- `value` - the value to compare to.
- `options` - optional object specifying comparison options. This is only used on
deep comparisons, and is ignored otherwise.
```js
const Code = require('code');
const expect = Code.expect;
expect(5).to.equal(5);
expect({ a: 1 }).to.deep.equal({ a: 1 });
```
Deep comparisons are performed using
[`Hoek.deepEqual()`](https://github.com/hapijs/hoek#deepequalb-a-options). The
optional `options` argument is passed directly to `Hoek.deepEqual()`. An example
deep comparison which ignores object prototypes is shown below.
```js
const Code = require('code');
const expect = Code.expect;
expect(Object.create(null)).to.deep.equal({}, { prototype: false });
```
#### `above(value)`
Aliases: `greaterThan()`
Asserts that the reference value is greater than (`>`) the provided value where:
- `value` - the value to compare to.
```js
const Code = require('code');
const expect = Code.expect;
expect(10).to.be.above(5);
```
#### `least(value)`
Aliases: `min()`
Asserts that the reference value is at least (`>=`) the provided value where:
- `value` - the value to compare to.
```js
const Code = require('code');
const expect = Code.expect;
expect(10).to.be.at.least(10);
```
#### `below(value)`
Aliases: `lessThan()`
Asserts that the reference value is less than (`<`) the provided value where:
- `value` - the value to compare to.
```js
const Code = require('code');
const expect = Code.expect;
expect(10).to.be.below(20);
```
#### `most(value)`
Aliases: `max()`
Asserts that the reference value is at most (`<=`) the provided value where:
- `value` - the value to compare to.
```js
const Code = require('code');
const expect = Code.expect;
expect(10).to.be.at.most(10);
```
#### `within(from, to)`
Aliases: `range()`
Asserts that the reference value is within (`from <= value <= to`) the provided values where:
- `from` - the start of the range (inclusive).
- `to` - the end of the range (inclusive).
```js
const Code = require('code');
const expect = Code.expect;
expect(10).to.be.within(10, 20);
expect(20).to.be.within(10, 20);
```
#### `between(from, to)`
Asserts that the reference value is between but not equal (`from < value < to`) the provided values where:
- `from` - the start of the range (exclusive).
- `to` - the end of the range (exclusive).
```js
const Code = require('code');
const expect = Code.expect;
expect(15).to.be.between(10, 20);
```
#### `about(value, delta)`
Asserts that the reference value is about the provided value within a delta margin of difference where:
- `value` - the value to compare to.
- `delta` - the allowed margin of difference.
```js
const Code = require('code');
const expect = Code.expect;
expect(10).to.be.about(9, 1);
```
#### `instanceof(type)`
Aliases: `instanceOf()`
Asserts that the reference value has the provided `instanceof` value where:
- `type` - the type value to match.
```js
const Code = require('code');
const expect = Code.expect;
expect(new Date()).to.be.an.instanceof(Date);
```
#### `match(regex)`
Aliases: `matches()`
Asserts that the reference value is a string matching the provided regular expression where:
- `regex` - the regular expression to match.
```js
const Code = require('code');
const expect = Code.expect;
expect('a5').to.match(/\w\d/);
```
#### `satisfy(validator)`
Aliases: `satisfies()`
Asserts that the reference value satisfies the provided validator function where:
- `validator` - a function with the signature `function(value)` with return value `true` or `false`. The
reference value is passed as the only argument to the `validator` function and the assertion passes if
the return value is `true`.
```js
const Code = require('code');
const expect = Code.expect;
expect('x').to.satisfy(function (value) { return value === 'x'; });
```
#### `throw([type], [message])`
Aliases: `throws`
Asserts that the function reference value throws an exception when called. The provided reference function
is invoked within a `try`-`catch` block and any error throws is caught and compared to the provided optional
requirements where:
- `type` - the `instanceof` value of the thrown object.
- `message` a string or regular expression matching the thrown error `message` property. Note that a string
must provide a full match.
```js
const NodeUtil = require('util');
const Code = require('code');
const expect = Code.expect;
const CustomError = function (message) {
Error.call(this, message);
};
NodeUtil.inherit(CustomError, Error)
const throws = function () {
throw new CustomError('Oh no!');
};
expect(throws).to.throw(CustomError, 'Oh no!');
```
### `fail(message)`
Make the test fail with `message`.
```js
const Code = require('code');
Code.fail('This should not occur');
```
### `count()`
Returns the total number of assertions created using the `expect()` method.
```js
const Code = require('code');
const expect = Code.expect;
expect(5).to.not.be.a.string();
console.log(Code.count()); // -> 1
```
### `incomplete()`
Returns an array of the locations where incomplete assertions were declared or `null` if
no incomplete assertions found.
```js
const Code = require('code');
const expect = Code.expect;
expect(5).to.not.be.a.string;
console.log(Code.incomplete()); // -> [ 'readme.js:667:1' ]
```
### Settings
**code** can be configured using the module's `settings` object. The following
settings are supported:
#### `truncateMessages`
A Boolean value that, when `true`, causes long assertion error messages to be
truncated for readability. Setting this to `false` causes the entire message
to be displayed. Defaults to `true`.
```js
const Code = require('code');
const expect = Code.expect;
const foo = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
Code.settings.truncateMessages = false;
expect(foo).to.deep.equal([]);
```
#### `comparePrototypes`
A boolean value that, when `false`, ignores object prototypes when doing a deep comparison. Defaults to `true`.
```js
const Code = require('code');
const expect = Code.expect;
const foo = Object.create(null);
Code.setting.comparePrototypes = false;
expect(foo).to.deep.equal({});
```
## API
See the [API Reference](API.md).

@@ -1042,2 +1042,19 @@ 'use strict';

});
it('validates assertion (error with incomplete stack)', (done) => {
let exception = false;
try {
const err = new Error('foo');
err.stack = undefined;
Code.expect(err).to.not.exist();
}
catch (err) {
exception = err;
}
Hoek.assert(exception.message === 'foo', exception);
Hoek.assert(exception.at === undefined, exception);
done();
});
});

@@ -1044,0 +1061,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc