| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
A small framework for isolated testing of tmux plugins. Isolation is achieved by running the tests in Vagrant. Works on travis too.
Extracted from tmux plugin manager and tmux-copycat.
Dependencies: Vagrant (not required when running on travis).
Let's say you made tmux plugin with the following file hierarchy:
/tmux-plugin
|-- plugin.tmux
`-- scripts
`-- plugin_script.sh
From your project root directory (tmux-plugin/) execute the following shell command to fetch tmux-test and add it as a submodule:
$ git submodule add https://github.com/tmux-plugins/tmux-test.git lib/tmux-test
Run the setup script:
$ lib/tmux-test/setup
The project directory will now look like this (additions have comments):
/tmux-plugin
|-- plugin.tmux
|-- run_tests # symlink, gitignored
|-- .gitignore # 2 lines appended to gitignore
|-- .travis.yml # added
|-- lib/tmux-test/ # git submodule
|-- scripts
| `-- plugin_script.sh
`-- tests # dir to put the tests in
`-- run_tests_in_isolation.sh # symlink, gitignored
`-- helpers
`-- helpers.sh # symlinked bash helpers, gitignored
tmux-test is now set up. You are ok to commit the additions to the repo.
A test is any executable with a name starting with test_ in tests/ directory.
Now that you installed tmux-test let's create an example test.
create a tests/test_example.sh file with the following content (it's a bash script but it can be any executable):
#/usr/bin/env bash
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# bash helpers provided by 'tmux-test'
source $CURRENT_DIR/helpers/helpers.sh
# installs plugin from current repo in Vagrant (or on Travis)
install_tmux_plugin_under_test_helper
# start tmux in background (plugin under test is sourced)
tmux new -d
# get first session name
session_name="$(tmux list-sessions -F "#{session_name}")"
# fail the test if first session name is not "0"
if [ "$session_name" == "0" ]; then
# fail_helper is also provided by 'tmux-test'
fail_helper "First session name is not '0' by default"
fi
# sets the right script exit code ('tmux-test' helper)
exit_helper
make the test file executable with $ chmod +x tests/test_example.sh
run the test by executing ./run_tests from the project root directory
the first invocation might take some time because Vagrant's ubuntu virtual machine is downloading. You should see Success, tests pass! message when it's done.
Check out more example test scripts in this project's tests/ directory.
The setup script (lib/tmux-test/setup) added a .travis.yml file to the project root. To setup continuous integration, just add/enable the project on travis.
tmux-test uses itself to test itself. To run framework tests:
| Back | FazBrowse Home | New Git URL |