Skip to content
This repository has been archived by the owner on Jul 21, 2020. It is now read-only.

Commit

Permalink
Auto generate TypeScript definition to allow chaining (#884)
Browse files Browse the repository at this point in the history
  • Loading branch information
ivogabe authored and sindresorhus committed Jul 13, 2016
1 parent 05f1890 commit 1dd6d5b
Show file tree
Hide file tree
Showing 6 changed files with 260 additions and 215 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ node_modules
.nyc_output
coverage
bench/.results
types/generated.d.ts
212 changes: 0 additions & 212 deletions index.d.ts

This file was deleted.

2 changes: 2 additions & 0 deletions lib/runner.js
Original file line number Diff line number Diff line change
Expand Up @@ -198,3 +198,5 @@ Runner.prototype.run = function (options) {

return Promise.resolve(this.tests.build(this._bail).run()).then(this._buildStats);
};

Runner._chainableMethods = chainableMethods.chainableMethods;
12 changes: 9 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,18 +33,21 @@
}
],
"bin": "cli.js",
"typings": "types/generated.d.ts",
"engines": {
"node": ">=0.10.0"
},
"scripts": {
"test": "xo && nyc --cache --reporter=lcov --reporter=text tap --no-cov --timeout=150 test/*.js test/reporters/*.js",
"test-win": "tap --no-cov --reporter=classic --timeout=150 test/*.js test/reporters/*.js",
"visual": "node test/visual/run-visual-tests.js"
"visual": "node test/visual/run-visual-tests.js",
"prepublish": "npm run make-ts",
"make-ts": "babel-node --presets=babel-preset-es2015 --plugins=transform-runtime types/make.js"
},
"files": [
"lib",
"*.js",
"index.d.ts"
"types/generated.d.ts"
],
"keywords": [
"test",
Expand Down Expand Up @@ -153,6 +156,7 @@
"update-notifier": "^1.0.0"
},
"devDependencies": {
"babel-cli": "^6.10.1",
"babel-preset-react": "^6.5.0",
"cli-table2": "^0.2.0",
"coveralls": "^2.11.4",
Expand Down Expand Up @@ -182,7 +186,9 @@
},
"overrides": [
{
"files": ["test/**/*.js"],
"files": [
"test/**/*.js"
],
"rules": {
"max-lines": 0
}
Expand Down
124 changes: 124 additions & 0 deletions types/base.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
export default test;

export type ErrorValidator
= (new (...args: any[]) => any)
| RegExp
| string
| ((error: any) => boolean);

export interface Observable {
subscribe(observer: (value: {}) => void): void;
}

export type Test = (t: TestContext) => PromiseLike<void> | Iterator<any> | Observable | void;
export type ContextualTest = (t: ContextualTestContext) => PromiseLike<void> | Iterator<any> | Observable | void;
export type CallbackTest = (t: CallbackTestContext) => void;
export type ContextualCallbackTest = (t: ContextualCallbackTestContext) => void;

export interface AssertContext {
/**
* Passing assertion.
*/
pass(message?: string): void;
/**
* Failing assertion.
*/
fail(message?: string): void;
/**
* Assert that value is truthy.
*/
truthy(value: any, message?: string): void;
/**
* Assert that value is falsy.
*/
falsy(value: any, message?: string): void;
/**
* DEPRECATED, use `truthy`. Assert that value is truthy.
*/
ok(value: any, message?: string): void;
/**
* DEPRECATED, use `falsy`. Assert that value is falsy.
*/
notOk(value: any, message?: string): void;
/**
* Assert that value is true.
*/
true(value: boolean, message?: string): void;
/**
* Assert that value is false.
*/
false(value: boolean, message?: string): void;
/**
* Assert that value is equal to expected.
*/
is<U>(value: U, expected: U, message?: string): void;
/**
* Assert that value is not equal to expected.
*/
not<U>(value: U, expected: U, message?: string): void;
/**
* Assert that value is deep equal to expected.
*/
deepEqual<U>(value: U, expected: U, message?: string): void;
/**
* Assert that value is not deep equal to expected.
*/
notDeepEqual<U>(value: U, expected: U, message?: string): void;
/**
* Assert that function throws an error or promise rejects.
* DEPRECATED, use `deepEqual`. Assert that value is deep equal to expected.
* @param error Can be a constructor, regex, error message or validation function.
*/
same<U>(value: U, expected: U, message?: string): void;
/**
* DEPRECATED use `notDeepEqual`. Assert that value is not deep equal to expected.
*/
notSame<U>(value: U, expected: U, message?: string): void;
/**
* Assert that function throws an error or promise rejects.
* @param error Can be a constructor, regex, error message or validation function.
*/
throws(value: PromiseLike<any>, error?: ErrorValidator, message?: string): Promise<any>;
throws(value: () => void, error?: ErrorValidator, message?: string): any;
/**
* Assert that function doesn't throw an error or promise resolves.
*/
notThrows<U>(value: PromiseLike<U>, message?: string): Promise<U>;
notThrows(value: () => void, message?: string): void;
/**
* Assert that contents matches regex.
*/
regex(contents: string, regex: RegExp, message?: string): void;
/**
* Assert that contents does not match regex.
*/
notRegex(contents, regex, message?: string): void;
/**
* Assert that error is falsy.
*/
ifError(error: any, message?: string): void;
}
export interface TestContext extends AssertContext {
/**
* Plan how many assertion there are in the test.
* The test will fail if the actual assertion count doesn't match planned assertions.
*/
plan(count: number): void;

skip: AssertContext;
}
export interface CallbackTestContext extends TestContext {
/**
* End the test.
*/
end(): void;
}
export interface ContextualTestContext extends TestContext {
context: any;
}
export interface ContextualCallbackTestContext extends CallbackTestContext {
context: any;
}

export function test(name: string, run: ContextualTest): void;
export function test(run: ContextualTest): void;
Loading

0 comments on commit 1dd6d5b

Please sign in to comment.