Skip to content
/ runner Public

Test Runner with Preparation/Postparation Stages

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
LICENSE.deon
Notifications You must be signed in to change notification settings

plurid/runner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation



License: DEL

runner

Test Runner

runner is intended to run programmatic tests with complete preparation and postparation stages.

Supported languages:

  • JavaScript
  • TypeScript

Contents

Usage

Install runner

npm install --save-dev @plurid/runner

or

yarn add -D @plurid/runner

write a test runner using TypeScript or JavaScript, adding .run, .test, or .runner before the file extension (e.g. example.run.ts)

import runner, {
    RunnerPrepare,
    RunnerPostpare,
    RunnerRun,
} from '@plurid/runner';



interface Prepared {
    data: boolean;
}
interface Runned {
    data: boolean;
}


const prepare: RunnerPrepare<Prepared> = async (
    check,
) => {
    const value = Math.random();
    check('example · works', value, 0.5, '<');

    const data = value < 0.5;
    check('example · works', data, true);

    return {
        data,
    };
}

const run: RunnerRun<Prepared, Runned> = async (
    check,
    prepared,
) => {
    check('example · works', prepared.data, true);

    return {
        data: false,
    };
}

const postpare: RunnerPostpare<Prepared, Runned> = async (
    check,
    prepared,
    runned,
) => {
    check('example · works', prepared.data, true);
    const passed = check('example · works', runned.data, true);

    if (passed) {
        // passed action
    } else {
        // not passed action
    }
}


runner(
    prepare,
    run,
    postpare,
);

To execute the runners use the runner cli

runner /path/to/test/file/or/folder

Running the example runner will log similar to the following

prepare passed :: example · works :: 0.15412422456759045 < 0.5
prepare passed :: example · works :: true == true
run passed :: example · works :: true == true
postpare passed :: example · works :: true == true
postpare failed :: example · works :: false not == true

or

prepare failed :: example · works :: 0.7123851592649375 not < 0.5
prepare failed :: example · works :: false not == true
run failed :: example · works :: false not == true
postpare failed :: example · works :: false not == true
postpare failed :: example · works :: false not == true

The prepare and postpare are meant for setting up and tearing down the environment in which the run will execute.

The results of prepare are passed to run, and the results of prepare and run are passed to postpare.

Usually, prepare and postpare imply priviledged executions (such as writing/deleting directly from the database, direct manipulation of the file system, anything required to ensure the run is set to pass).

checks can be performed at any stage of the runner.

A check respects the following interface

export type Check = (
    message: string,
    testValue: any,
    expectedValue: any,
    relationship?: CheckRelationship,
) => void;

export type CheckRelationship =
    | '==' | '<' | '<=' | '>' | '>=';

Packages

Version

@plurid/runner-javascript • the JavaScript/TypeScript implementation

About

Test Runner with Preparation/Postparation Stages

Topics

Resources

License

Unknown, Unknown licenses found

Licenses found

Unknown
LICENSE
Unknown
LICENSE.deon

Stars

Watchers

Forks