README.md 2.73 KB
Newer Older
1
# Tests
2 3 4

Like, yes, we have some! :)

5
## el-get manual tests
6 7 8 9

Tries to cover some known issues, example that will allow building a
regression test suite some day.

10
Typical run (in bash):
11

12 13 14 15
    mkdir -p /tmp/test/.emacs.d/el-get/
    rm -rf /tmp/test/.emacs.d/el-get/*
    HOME=/tmp/test /usr/bin/emacs-snapshot-gtk -Q -batch -L . -l el-get \
        -l test/el-get-issue-303.el
16 17

At the moment you need to run the el-get-issue scripts with some known
18 19 20
working el-get version to know what to expect, and you probably need
to have el-get installed at +~/dev/emacs/el-get/+ for this to work
as-is.
21 22 23

Yet it might be useful.

24
## el-get automated tests
25

26
### Simple script-based automation
27 28 29 30

In the test directory, there is a simple bash script called
+run-test.sh+ that attempts to automate the manual steps detailed
above. The script creates a temporary home directory and runs emacs in
31 32 33
batch mode, first loading el-get and then the specified test file. An
invocation equivalent to the above would look like this (starting from
the main el-get directory):
34

35
    test/run-test.sh el-get-issue-303.el
36 37 38

or even just

39
    test/run-test.sh 303
40 41 42

The script takes care of cleaning up the temporary directory after the
test, so you can run tests one after the other without previous tests
43 44
causing problems for later ones. The bahavior of the +run-test.sh+
script can be customized with a few environment variables:
45

46
- `TMPDIR` and `TEST_HOME`, for controlling where the temporary home
47
  directory is created;
48 49 50
- `EL_GET_LIB_DIR`, the directory where the el-get code resides;
- `EMACS`, which can be used to override the copy of emacs found in
  your `PATH`, or to provide one if there is no emacs in your `PATH`
51 52
  or it is installed under a nonstandard name.

53
You can run multiple tests by simply providing multiple test files to
54
`run-test.sh`:
55

56
    test/run-test.sh 200 303 310
57 58 59 60

When running multiple tests, the script will wait 5 seconds between
tests, since many tests involve downloading files from the same few
servers (Github, emacswiki, marmalade, etc.), and it is impolite to
61 62 63 64 65 66
download a large number of files in rapid succession just for
testing. There is a script called +run-all-tests.sh+ that acts as a
shortcut for running all the available tests.

Sometimes you may want to run a test in an interactive emacs session
so that you can use Emacs' debugging facilities to investigate what
67 68
went wrong. To do this, use `run-test-interactive.sh` instead of
`run-test.sh`.
69 70

If simply want to test installation, updating, and removal of one or
71
more recipes, you can use the `test-recipe.sh` script.
72

73
### ERT-based automation
74

75 76 77 78 79 80 81
See `test.el` in this directory.  You can run ERT-based tests by:

    test/run-ert.sh

To run the tests with GUI window for debugging, you can use:

    test/run-ert-interactive.sh