tsc-test
TypeScript icon, indicating that this package has built-in type declarations

0.3.1 • Public • Published

Build Status

tsc-test

Testing TypeScript compilation (should succeed or should fail)

Basic usage

  1. put tsconfig.json into test directory.

    "noEmit" is recommended.

    {
        "compilerOptions": {
            "target": "es5",
            "module": "commonjs",
            "noEmit": true,
            "strictNullChecks": true
        },
        "filesGlob": [
            "*.ts"
        ],
        "exclude": [
            "node_modules"
        ]
    }
  2. put files to be tested into test directory.

    // should-succeed.ts
     
    interface Foo { foo: string; }
     
    export function test(foo: Foo) {
        console.log(foo.foo);
    }

    When compilation errors should be occurred, write error code inline after 4 slashes(////).

    // should-fail-1.ts
     
    interface Foo { foo: string; }
     
    export function test(foo: Foo) {
        console.log(foo.bar);       //// TS2339
    }

    You can write part of error message after error code. (with colon)

    // should-fail-2.ts
     
    interface Foo { foo: string; }
     
    export function test(foo: Foo) {
        console.log(foo.bar);       //// TS2339: Property 'bar' does not exist on
    }

    Or regular expression.

    // should-fail-3.ts (but this code is not wrong acturally ...)
     
    interface Foo { foo: string; }
     
    export function test(foo: Foo) {
        console.log(foo.foo);       //// TS2339: /property .* does not exist/i
    }
  3. run tsc-test command

    $ tsc-test -p test/tsconfig.json
    

    And you will get output like below:

    OK: test/should-fail-1.ts
    OK: test/should-fail-2.ts
    NG: test/should-fail-3.ts
    OK: test/should-succeed.ts
    
    test/should-fail-3.ts:6
      expected: TS2339: /property .* does not exist/i
      bat was:  <no error>
    

Run with test runner

ava

// runner.ts
 
import test from "ava";
import { Tester, formatFailureMessage } from "tsc-test";
 
const tester = Tester.fromConfig("<path to tsconfig.json>");
tester.sources.forEach(fileName => {
    test(fileName, t => {
        const failures = tester.test(fileName);
        if (failures.length > 0) {
            t.fail(formatFailureMessage(...failures));
        }
    })
});

License

MIT

Readme

Keywords

Package Sidebar

Install

npm i tsc-test

Weekly Downloads

8

Version

0.3.1

License

MIT

Unpacked Size

22.2 kB

Total Files

14

Last publish

Collaborators

  • iwata0303