diff --git a/mocha/mocha-tests.ts b/mocha/mocha-tests.ts
index f90fefaf9..a2e2b0796 100644
--- a/mocha/mocha-tests.ts
+++ b/mocha/mocha-tests.ts
@@ -249,3 +249,37 @@ function test_run_withOnComplete() {
console.log(failures);
});
}
+
+class CustomSpecReporter extends MochaDef.reporters.Spec {
+ constructor(runner: Mocha.IRunner) {
+ super(runner);
+
+ runner.on('test', (test: Mocha.ITest) => {
+ console.log(test.parent.title + '/' + test.title);
+ });
+ }
+}
+
+class MyReporter extends MochaDef.reporters.Base {
+ passes: number = 0;
+ failures: number = 0;
+
+ constructor(runner: Mocha.IRunner) {
+ super(runner);
+
+ runner.on('pass', (test: Mocha.ITest) => {
+ this.passes++;
+ console.log('pass: %s', test.fullTitle());
+ });
+
+ runner.on('fail', (test: Mocha.ITest, err: Error) => {
+ this.failures++;
+ console.log('fail: %s -- error: %s', test.fullTitle(), err.message);
+ });
+
+ runner.on('end', () => {
+ console.log('end: %d/%d', this.passes, this.passes + this.failures);
+ process.exit(this.failures);
+ });
+ }
+}
diff --git a/mocha/mocha.d.ts b/mocha/mocha.d.ts
index 63ad66014..fefd91946 100644
--- a/mocha/mocha.d.ts
+++ b/mocha/mocha.d.ts
@@ -1,24 +1,9 @@
-// Type definitions for mocha 2.0.1
+// Type definitions for mocha 2.2.5
// Project: http://mochajs.org/
-// Definitions by: Kazi Manzur Rashid , otiai10 , jt000
+// Definitions by: Kazi Manzur Rashid , otiai10 , jt000 , Vadim Macagon
// Definitions: https://github.com/borisyankov/DefinitelyTyped
-interface Mocha {
- // Setup mocha with the given setting options.
- setup(options: MochaSetupOptions): Mocha;
-
- //Run tests and invoke `fn()` when complete.
- run(callback?: () => void): void;
-
- // Set reporter as function
- reporter(reporter: () => void): Mocha;
-
- // Set reporter, defaults to "dot"
- reporter(reporter: string): Mocha;
-
- // Enable growl support.
- growl(): Mocha
-}
+///
interface MochaSetupOptions {
//milliseconds to wait before considering a test slow
@@ -33,7 +18,7 @@ interface MochaSetupOptions {
//array of accepted globals
globals?: any[];
- // reporter instance (function or string), defaults to `mocha.reporters.Dot`
+ // reporter instance (function or string), defaults to `mocha.reporters.Spec`
reporter?: any;
// bail on the first test failure
@@ -45,56 +30,20 @@ interface MochaSetupOptions {
// grep string or regexp to filter tests with
grep?: any;
}
-
+
interface MochaDone {
(error?: Error): void;
}
declare var mocha: Mocha;
-
-declare var describe: {
- (description: string, spec: () => void): void;
- only(description: string, spec: () => void): void;
- skip(description: string, spec: () => void): void;
- timeout(ms: number): void;
-}
-
+declare var describe: Mocha.IContextDefinition;
// alias for `describe`
-declare var context: {
- (contextTitle: string, spec: () => void): void;
- only(contextTitle: string, spec: () => void): void;
- skip(contextTitle: string, spec: () => void): void;
- timeout(ms: number): void;
-};
-
+declare var context: Mocha.IContextDefinition;
// alias for `describe`
-declare var suite: {
- (suiteTitle: string, spec: () => void): void;
- only(suiteTitle: string, spec: () => void): void;
- skip(suiteTitle: string, spec: () => void): void;
- timeout(ms: number): void;
-};
-
-declare var it: {
- (expectation: string, assertion?: () => void): void;
- (expectation: string, assertion?: (done: MochaDone) => void): void;
- only(expectation: string, assertion?: () => void): void;
- only(expectation: string, assertion?: (done: MochaDone) => void): void;
- skip(expectation: string, assertion?: () => void): void;
- skip(expectation: string, assertion?: (done: MochaDone) => void): void;
- timeout(ms: number): void;
-};
-
+declare var suite: Mocha.IContextDefinition;
+declare var it: Mocha.ITestDefinition;
// alias for `it`
-declare var test: {
- (expectation: string, assertion?: () => void): void;
- (expectation: string, assertion?: (done: MochaDone) => void): void;
- only(expectation: string, assertion?: () => void): void;
- only(expectation: string, assertion?: (done: MochaDone) => void): void;
- skip(expectation: string, assertion?: () => void): void;
- skip(expectation: string, assertion?: (done: MochaDone) => void): void;
- timeout(ms: number): void;
-};
+declare var test: Mocha.ITestDefinition;
declare function before(action: () => void): void;
@@ -128,39 +77,138 @@ declare function suiteTeardown(action: () => void): void;
declare function suiteTeardown(action: (done: MochaDone) => void): void;
-declare module "mocha" {
+declare class Mocha {
+ constructor(options?: {
+ grep?: RegExp;
+ ui?: string;
+ reporter?: string;
+ timeout?: number;
+ bail?: boolean;
+ });
- class Mocha {
- constructor(options?: {
- grep?: RegExp;
- ui?: string;
- reporter?: string;
- timeout?: number;
- bail?: boolean;
- });
+ /** Setup mocha with the given options. */
+ setup(options: MochaSetupOptions): Mocha;
+ bail(value?: boolean): Mocha;
+ addFile(file: string): Mocha;
+ /** Sets reporter by name, defaults to "spec". */
+ reporter(name: string): Mocha;
+ /** Sets reporter constructor, defaults to mocha.reporters.Spec. */
+ reporter(reporter: (runner: Mocha.IRunner, options: any) => any): Mocha;
+ ui(value: string): Mocha;
+ grep(value: string): Mocha;
+ grep(value: RegExp): Mocha;
+ invert(): Mocha;
+ ignoreLeaks(value: boolean): Mocha;
+ checkLeaks(): Mocha;
+ /** Enables growl support. */
+ growl(): Mocha;
+ globals(value: string): Mocha;
+ globals(values: string[]): Mocha;
+ useColors(value: boolean): Mocha;
+ useInlineDiffs(value: boolean): Mocha;
+ timeout(value: number): Mocha;
+ slow(value: number): Mocha;
+ enableTimeouts(value: boolean): Mocha;
+ asyncOnly(value: boolean): Mocha;
+ noHighlighting(value: boolean): Mocha;
+ /** Runs tests and invokes `onComplete()` when finished. */
+ run(onComplete?: (failures: number) => void): Mocha.IRunner;
+}
- bail(value?: boolean): Mocha;
- addFile(file: string): Mocha;
- reporter(value: string): Mocha;
- ui(value: string): Mocha;
- grep(value: string): Mocha;
- grep(value: RegExp): Mocha;
- invert(): Mocha;
- ignoreLeaks(value: boolean): Mocha;
- checkLeaks(): Mocha;
- growl(): Mocha;
- globals(value: string): Mocha;
- globals(values: string[]): Mocha;
- useColors(value: boolean): Mocha;
- useInlineDiffs(value: boolean): Mocha;
- timeout(value: number): Mocha;
- slow(value: number): Mocha;
- enableTimeouts(value: boolean): Mocha;
- asyncOnly(value: boolean): Mocha;
- noHighlighting(value: boolean): Mocha;
-
- run(onComplete?: (failures: number) => void): void;
+// merge the Mocha class declaration with a module
+declare module Mocha {
+ /** Partial interface for Mocha's `Runnable` class. */
+ interface IRunnable extends NodeJS.EventEmitter {
+ title: string;
+ fn: Function;
+ async: boolean;
+ sync: boolean;
+ timedOut: boolean;
}
+ /** Partial interface for Mocha's `Suite` class. */
+ interface ISuite extends NodeJS.EventEmitter {
+ parent: ISuite;
+ title: string;
+
+ fullTitle(): string;
+ }
+
+ /** Partial interface for Mocha's `Test` class. */
+ interface ITest extends IRunnable {
+ parent: ISuite;
+ pending: boolean;
+
+ fullTitle(): string;
+ }
+
+ /** Partial interface for Mocha's `Runner` class. */
+ interface IRunner extends NodeJS.EventEmitter {}
+
+ interface IContextDefinition {
+ (description: string, spec: () => void): ISuite;
+ only(description: string, spec: () => void): ISuite;
+ skip(description: string, spec: () => void): void;
+ timeout(ms: number): void;
+ }
+
+ interface ITestDefinition {
+ (expectation: string, assertion?: () => void): ITest;
+ (expectation: string, assertion?: (done: MochaDone) => void): ITest;
+ only(expectation: string, assertion?: () => void): ITest;
+ only(expectation: string, assertion?: (done: MochaDone) => void): ITest;
+ skip(expectation: string, assertion?: () => void): void;
+ skip(expectation: string, assertion?: (done: MochaDone) => void): void;
+ timeout(ms: number): void;
+ }
+
+ export module reporters {
+ export class Base {
+ stats: {
+ suites: number;
+ tests: number;
+ passes: number;
+ pending: number;
+ failures: number;
+ };
+
+ constructor(runner: IRunner);
+ }
+
+ export class Doc extends Base {}
+ export class Dot extends Base {}
+ export class HTML extends Base {}
+ export class HTMLCov extends Base {}
+ export class JSON extends Base {}
+ export class JSONCov extends Base {}
+ export class JSONStream extends Base {}
+ export class Landing extends Base {}
+ export class List extends Base {}
+ export class Markdown extends Base {}
+ export class Min extends Base {}
+ export class Nyan extends Base {}
+ export class Progress extends Base {
+ /**
+ * @param options.open String used to indicate the start of the progress bar.
+ * @param options.complete String used to indicate a complete test on the progress bar.
+ * @param options.incomplete String used to indicate an incomplete test on the progress bar.
+ * @param options.close String used to indicate the end of the progress bar.
+ */
+ constructor(runner: IRunner, options?: {
+ open?: string;
+ complete?: string;
+ incomplete?: string;
+ close?: string;
+ });
+ }
+ export class Spec extends Base {}
+ export class TAP extends Base {}
+ export class XUnit extends Base {
+ constructor(runner: IRunner, options?: any);
+ }
+ }
+}
+
+declare module "mocha" {
export = Mocha;
}