mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-09-11 21:20:39 +02:00
test: test_bitcoin: allow -testdatadir=<datadir>
Specifying this argument overrides the path location for test_bitcoin; it becomes <datadir>/test_common_Bitcoin Core/<testname>/datadir. Also, this directory isn't removed after the test completes. This can make it easier for developers to study the results of a test (see the state of the data directory after the test runs), and also (for example) have an editor open on debug.log to monitor it across multiple test runs instead of having to re-open a different pathname each time. Example usage (note the "--" is needed): test_bitcoin --run_test=getarg_tests/boolarg -- \ -testdatadir=/somewhere/mydatadir This will create (if necessary) and use the data directory: /somewhere/mydatadir/test_common_Bitcoin Core/getarg_tests/boolarg/datadir Co-authored-by: furszy <mfurszy@protonmail.com>
This commit is contained in:
@@ -41,17 +41,18 @@ test_bitcoin --log_level=all --run_test=getarg_tests
|
||||
```
|
||||
|
||||
`log_level` controls the verbosity of the test framework, which logs when a
|
||||
test case is entered, for example. `test_bitcoin` also accepts the command
|
||||
line arguments accepted by `bitcoind`. Use `--` to separate both types of
|
||||
arguments:
|
||||
test case is entered, for example.
|
||||
|
||||
`test_bitcoin` also accepts some of the command line arguments accepted by
|
||||
`bitcoind`. Use `--` to separate these sets of arguments:
|
||||
|
||||
```bash
|
||||
test_bitcoin --log_level=all --run_test=getarg_tests -- -printtoconsole=1
|
||||
```
|
||||
|
||||
The `-printtoconsole=1` after the two dashes redirects the debug log, which
|
||||
would normally go to a file in the test datadir
|
||||
(`BasicTestingSetup::m_path_root`), to the standard terminal output.
|
||||
The `-printtoconsole=1` after the two dashes sends debug logging, which
|
||||
normally goes only to `debug.log` within the data directory, also to the
|
||||
standard terminal output.
|
||||
|
||||
... or to run just the doubledash test:
|
||||
|
||||
@@ -59,7 +60,42 @@ would normally go to a file in the test datadir
|
||||
test_bitcoin --run_test=getarg_tests/doubledash
|
||||
```
|
||||
|
||||
Run `test_bitcoin --help` for the full list.
|
||||
`test_bitcoin` creates a temporary working (data) directory with a randomly
|
||||
generated pathname within `test_common_Bitcoin Core/`, which in turn is within
|
||||
the system's temporary directory (see
|
||||
[`temp_directory_path`](https://en.cppreference.com/w/cpp/filesystem/temp_directory_path)).
|
||||
This data directory looks like a simplified form of the standard `bitcoind` data
|
||||
directory. Its content will vary depending on the test, but it will always
|
||||
have a `debug.log` file, for example.
|
||||
|
||||
The location of the temporary data directory can be specified with the
|
||||
`-testdatadir` option. This can make debugging easier. The directory
|
||||
path used is the argument path appended with
|
||||
`/test_common_Bitcoin Core/<test-name>/datadir`.
|
||||
The directory path is created if necessary.
|
||||
Specifying this argument also causes the data directory
|
||||
not to be removed after the last test. This is useful for looking at
|
||||
what the test wrote to `debug.log` after it completes, for example.
|
||||
(The directory is removed at the start of the next test run,
|
||||
so no leftover state is used.)
|
||||
|
||||
```bash
|
||||
$ test_bitcoin --run_test=getarg_tests/doubledash -- -testdatadir=/somewhere/mydatadir
|
||||
Test directory (will not be deleted): "/somewhere/mydatadir/test_common_Bitcoin Core/getarg_tests/doubledash/datadir
|
||||
Running 1 test case...
|
||||
|
||||
*** No errors detected
|
||||
$ ls -l '/somewhere/mydatadir/test_common_Bitcoin Core/getarg_tests/doubledash/datadir'
|
||||
total 8
|
||||
drwxrwxr-x 2 admin admin 4096 Nov 27 22:45 blocks
|
||||
-rw-rw-r-- 1 admin admin 1003 Nov 27 22:45 debug.log
|
||||
```
|
||||
|
||||
If you run an entire test suite, such as `--run_test=getarg_tests`, or all the test suites
|
||||
(by not specifying `--run_test`), a separate directory
|
||||
will be created for each individual test.
|
||||
|
||||
Run `test_bitcoin --help` for the full list of tests.
|
||||
|
||||
### Adding test cases
|
||||
|
||||
|
||||
Reference in New Issue
Block a user