npm

Need private packages and team management tools?Check out npm Orgs. »

broken-promises-aplus

0.0.3 • Public • Published
Promises/A+ logo

broken-promise

An implementation of the Promises/A+ specification which, although it passes the Compliance Test Suite, does not work.

Installation

npm install broken-promises-aplus

Testing

npm test

This runs the full Promises/A+ Compliance Test Suite.

Usage

var BrokenPromise = require("broken-promises-aplus");
 
var get = function(url) {
    return new BrokenPromise(function(resolve, reject) {
        var xhr = new XMLHttpRequest();
        xhr.addEventListener("error", reject);
        xhr.addEventListener("load", resolve);
        xhr.open("GET", url);
        xhr.send();
    });
};
 
get("https://github.com").then(JSON.parse).then(function(response) {
    console.log(response);
});

The above code causes a puzzling exception to be thrown. No HTTP request is sent.

Why?

The purpose of this library is to demonstrate a point about Test-Driven Development:

If the people writing the tests and the people developing the software have opposing goals, then it must be impossible to programmatically distinguish a testing scenario from normal use.

A prominent recent example of this not happening when it should have happened is the Volkswagen emissions scandal. Here, the developers of the VW engine control unit programmed it to display unusual low-emissions behaviour when it (the ECU) detected that an emissions test was in progress, and to display much improved performance (at the cost of emissions) the rest of the time.

In the same way, broken-promise is programmed to behave like a conforming Promises/A+ implementation when it detects that the Compliance Test Suite is in progress, and to display other behaviour at all other times.

How can I help?

There are two major ways you can help to improve this library:

  • Improve the heuristics by which the library detects that a Compliance Test Suite is in progress
  • Suggestions and pull requests for more interesting behaviour for when no Compliance Test Suite is in progress (nothing destructive, please)

License

MIT I guess

install

npm i broken-promises-aplus

Downloadsweekly downloads

1

version

0.0.3

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability