Installation

Supported Bash versions

The following is a list of Bash versions that are currently supported by Bats. This list is composed of platforms that Bats has been tested on and is known to work on without issues.

  • Bash versions:

    • Everything from 3.2.57(1) and higher (macOS’s highest version)

  • Operating systems:

    • Arch Linux

    • Alpine Linux

    • Ubuntu Linux

    • FreeBSD 10.x and 11.x

    • macOS

    • Windows 10

  • Latest version for the following Windows platforms:

    • Git for Windows Bash (MSYS2 based)

    • Windows Subsystem for Linux

    • MSYS2

    • Cygwin

Homebrew

On macOS, you can install Homebrew if you haven’t already, then run:

$ brew install bats-core

npm

You can install the Bats npm package via:

# To install globally:
$ npm install -g bats

# To install into your project and save it as one of the "devDependencies" in
# your package.json:
$ npm install --save-dev bats

Installing Bats from source

Check out a copy of the Bats repository. Then, either add the Bats bin directory to your $PATH, or run the provided install.sh command with the location to the prefix in which you want to install Bats. For example, to install Bats into /usr/local,

$ git clone https://github.com/bats-core/bats-core.git
$ cd bats-core
$ ./install.sh /usr/local

Note: You may need to run install.sh with sudo if you do not have permission to write to the installation prefix.

Installing Bats from source onto Windows Git Bash

Check out a copy of the Bats repository and install it to $HOME. This will place the bats executable in $HOME/bin, which should already be in $PATH.

$ git clone https://github.com/bats-core/bats-core.git
$ cd bats-core
$ ./install.sh $HOME

Running Bats in Docker

There is an official image on the Docker Hub:

$ docker run -it bats/bats:latest --version

Building a Docker image

Check out a copy of the Bats repository, then build a container image:

$ git clone https://github.com/bats-core/bats-core.git
$ cd bats-core
$ docker build --tag bats/bats:latest .

This creates a local Docker image called bats/bats:latest based on Alpine Linux (to push to private registries, tag it with another organisation, e.g. my-org/bats:latest).

To run Bats’ internal test suite (which is in the container image at /opt/bats/test):

$ docker run -it bats/bats:latest /opt/bats/test

To run a test suite from a directory called test in the current directory of your local machine, mount in a volume and direct Bats to its path inside the container:

$ docker run -it -v "${PWD}:/code" bats/bats:latest test

/code is the working directory of the Docker image. “${PWD}/test” is the location of the test directory on the local machine.

This is a minimal Docker image. If more tools are required this can be used as a base image in a Dockerfile using FROM <Docker image>. In the future there may be images based on Debian, and/or with more tools installed (curl and openssl, for example). If you require a specific configuration please search and +1 an issue or raise a new issue.

Further usage examples are in the wiki.