mirror of
https://github.com/tj/n.git
synced 2024-11-24 02:27:28 +01:00
71 lines
1.9 KiB
Markdown
71 lines
1.9 KiB
Markdown
# Tests
|
|
|
|
Automated tests for `n`.
|
|
|
|
## Setup
|
|
|
|
Optional proxy using mitmproxy:
|
|
|
|
# using homebrew (Mac) to install mitmproxy
|
|
brew install mitmproxy
|
|
|
|
|
|
## Running Tests
|
|
|
|
Run all the tests across a range of containers and on the host system:
|
|
|
|
npm run test
|
|
|
|
Run all the tests on a single system:
|
|
|
|
cd test
|
|
npx bats tests
|
|
docker-compose run ubuntu-curl bats /mnt/test/tests
|
|
|
|
Run single test on a single system::
|
|
|
|
cd test
|
|
npx bats tests/install-contents.bats
|
|
docker-compose run ubuntu-curl bats /mnt/test/tests/install-contents.bats
|
|
|
|
## Proxy
|
|
|
|
To speed up running tests multiple times, you can optionally run a caching proxy for the node downloads. The curl settings are modified
|
|
to allow an insecure connection through the mitm proxy.
|
|
|
|
cd test
|
|
bin/proxy-build
|
|
bin/proxy-run
|
|
# follow the instructions for configuring environment variables for using proxy, then run tests
|
|
|
|
`node` versions added to proxy cache (and used in tests):
|
|
|
|
* v4.9.1
|
|
* lts
|
|
* latest
|
|
|
|
## Docker Tips
|
|
|
|
Using `docker-compose` in addition to `docker` for convenient mounting of `n` script and the tests into the container. Changes to the tests or to `n` itself are reflected immediately without needing to rebuild the containers.
|
|
|
|
`bats` is being mounted directly out of `node_modules` into the container as a manual install based on its own install script. This is a bit of a hack, but avoids needing to install `git` or `npm` for a full remote install of `bats`, and means everything on the same version of `bats`.
|
|
|
|
The containers each have:
|
|
|
|
* either curl or wget (or both) installed
|
|
|
|
Using `docker-compose` to run the container adds:
|
|
|
|
* specified `n` script mounted to `/usr/local/bin/n`
|
|
* `test/tests` mounted to `/mnt/test/tests`
|
|
* `node_modules/bats` provides `/usr/local/bin/bats` et al
|
|
* `.curlrc` with `--insecure` to allow use of proxy
|
|
|
|
So for example:
|
|
|
|
cd test
|
|
docker-compose run ubuntu-curl
|
|
# in container
|
|
n --version
|
|
bats /mnt/test/tests
|