Commit Graph

17209 Commits

Author SHA1 Message Date
Wladimir J. van der Laan
08513bfffd Merge #11437: [Docs] Update Windows build instructions for using WSL and Ubuntu 17.04
696ce46 [Docs] Update Windows build instructions for using WSL and Ubuntu 17.04 (fanquake)
4f890ba Add new step to clean $PATH var by removing /mnt specific Window's %PATH% paths that cause issues with the make system (Donal OConnor)

Pull request description:

  This updates the Windows build documentation with the workaround required to build using Ubuntu 17.04 on WSL, and makes it's explicit that building on Ubuntu 16.04 is broken, and not recommended.

  This includes a commit from @donaloconnor in #11244, and is mostly the investigative work of @laanwj throughout #8732, #8653 and quite a few other issues.

  I tested building on 14.04, 16.04.3 and 17.04 [here](https://github.com/bitcoin/bitcoin/pull/11244#issuecomment-327990251) and got the results we expect.

  ---

  Built master at c22a53cd63 on a Windows 10 VM (Version 1607, OS Build 14393.1593) using WSL with Ubuntu 14.04.
  ![windows](https://user-images.githubusercontent.com/863730/30195033-867f1f24-9489-11e7-932c-e87b8764a627.png)

  Upgraded WSL to 16.04.3, and tried building c22a53cd63 using these instructions. The result is as expected.
  ![ubuntu 16 04 3](https://user-images.githubusercontent.com/863730/30235670-b9bf36bc-953d-11e7-8c1d-4debf7113032.png)

  Upgraded WSL to 17.04 and tried building 3255d6347b using these instructions.
  ![ubuntu 17 04](https://user-images.githubusercontent.com/863730/30235669-b7473434-953d-11e7-8ea3-d05a319ae2d4.png)

  If someone else could also verify that builds are working on both 14.04 and 17.04 with these instructions, that would be great.

Tree-SHA512: 866f1003eb45d208d8ae849504f54fc2f27c32240129d2124ce5a2ee7167bcbf062d29f23b1745123f532ffd0253a8611e719b2a316d1331d3c3924f91e7775d
2019-09-25 10:33:21 +02:00
Wladimir J. van der Laan
9e3cb7599e Merge #9937: rpc: Prevent dumpwallet from overwriting files
0cd9273 rpc: Prevent `dumpwallet` from overwriting files (Wladimir J. van der Laan)

Pull request description:

  Prevent arbitrary files from being overwritten by `dumpwallet`. There have been reports that users have overwritten wallet files this way. It may also avoid other security issues.

  Fixes #9934. Adds mention to release notes and adds a test.

Tree-SHA512: 268c98636d40924d793b55a685a0b419bafd834ad369edaec08227ebe26ed4470ddea73008d1c4beb10ea445db1b0bb8e3546ba8fc2d1a411ebd4a0de8ce9120
2019-09-25 10:33:21 +02:00
Wladimir J. van der Laan
1d3ac9a760 Merge #11440: Fix validationinterface build on super old boost/clang
96c2ce9 Fix validationinterface build on super old boost/clang (Matt Corallo)

Pull request description:

  This should fix all the non-dependancy issues for termux builds.
  See Github issue #11388.

Tree-SHA512: ff0918fa76a6d4639a6c5b5e045ef053ce1d93eb0b1fe94c5fdfcc4d5e54e1118eeb09676ffd8f6d1acd630a63656944c6274ee3dbd7c09b7129c30647dbf4f9
2019-09-25 10:33:21 +02:00
Wladimir J. van der Laan
6ab6809598 Merge #11338: qt: Backup former GUI settings on -resetguisettings
723aa1b qt: Backup former GUI settings on `-resetguisettings` (Wladimir J. van der Laan)

Pull request description:

  Writes the GUI settings to `guisettings.bak` in the data directory before wiping them. This can be used to retroactively troubleshoot issues (e.g. #11262) where `-resetguisettings` solves the problem.
  (as discussed in yesterday's IRC meeting)

Tree-SHA512: c64f5052d992eb02057ba285435f143c42d0cc456144a4c565e1c87be833737f9df750d0aee10810f85047c820d9b4f9f22fd94a6f09f4b28a9cf41b63a56586
2019-09-25 10:33:21 +02:00
Wladimir J. van der Laan
3b0df3422e Merge #11318: Put back inadvertently removed copyright notices
d552ed6 Put back inadvertently removed copyright notices (Paul Berg)

Pull request description:

  In an abundance of caution this restores "Bitcoin Developers" to the COPYING file in
  case there were contributors before that point in time that would object to the
  current label.  It's harmless and more pedantically correct.

  (Change extracted from the Bitcoin-abc github)

Tree-SHA512: ea71645fbca5548bcae750b9bb7c7cc56791d8c8d2574b778fa1666e09abad23b30fcb434f0d92c52a2eb7d7e89caa32695dff3a5a99a2ab43ed0f3636436677
2019-09-25 10:33:21 +02:00
Wladimir J. van der Laan
b6e7a4b612 Merge #11335: Replace save|restoreWindowGeometry with Qt functions
13baf72 Replace save|restoreWindowGeometry with Qt functions (MeshCollider)

Pull request description:

  Alternative to https://github.com/bitcoin/bitcoin/pull/11208, closes https://github.com/bitcoin/bitcoin/issues/11207

  According to the [Qt documentation](https://doc.qt.io/qt-4.8/qwidget.html#restoreGeometry), restoreGeometry does all the checks we need, so it would be better to rely on them instead of doing it ourselves.

  ~Haven't tested this properly yet, hence the WIP.~
  Gives expected behavior exactly as the other system apps do based on my tests. Only potential issue is the case when the GUI is almost entirely offscreen with only a single strip of pixels, its not really possible to see the GUI, but if you know it's there you can bring it back onscreen with just the mouse. And that's exactly how notepad behaves on Windows so I don't think its a real issue.

  This also gives much better behavior when closing a maximized window, currently (0.15.0 release) a maximized window will save the window size on close, and then reopen as a not-maximized but still that size, which is really annoying. This reopens as maximized.

  Gitian build here: https://bitcoin.jonasschnelli.ch/build/305

Tree-SHA512: a8bde14793b4316192df1fa2eaaeb32b44d5ebc5219c35252379840056cd737a9fd162625fd715987f275fec8375334ec1ec328dbc671563f084c611a938985c
2019-09-25 10:33:21 +02:00
Jonas Schnelli
61c5fb9ef7 Merge #11015: [Qt] Add delay before filtering transactions
7b137aced [Qt] Add delay before filtering transactions Fixes 3141 (Lucas Betschart)

Pull request description:

  As discussed in https://github.com/bitcoin/bitcoin/issues/3141.

  This adds a QTimer pause of 200ms before start to filter so it should be possible to filter big data sets easier.

Tree-SHA512: ee599367794eac2c5b8bc7ecac47f44295e40c0ff543ff2f2c4860590f917b59b1cfb273fa564e6eb4c44016c0ef412d49f1a8f1b36b07e034022f51bb76653c
2019-09-25 10:33:21 +02:00
MarcoFalke
654c78fa29 Merge #11267: rpc: update cli for estimate*fee argument rename
5acd82de9 rpc: make estimatesmartfee argument naming consistent with documentation (Wladimir J. van der Laan)
24697c40e rpc: update cli for estimatefee argument rename (Wladimir J. van der Laan)

Pull request description:

  The first argument of `estimaterawfee` was renamed from `nblocks` to `conf_target` in 06bcdb8da6. Update the client-side table as well.
  This makes #10753 pass again.

Tree-SHA512: 107c0072a45e0f4e083dc803d534973e6bd4c005e62337a867815d7c98ab1c21d97b7a495c32763883975cbbb001b80003001a6709b7d9bdd81ce4d441b667be
2019-09-25 10:33:21 +02:00
Alexander Block
cbf59efef0 Implement WalletModel::IsSpendable for CScript
Which is like the CTxDestination version instead of having our own
implementation of the old havePrivKey
2019-09-25 10:33:21 +02:00
MarcoFalke
a88e000fe9 Merge #11247: qt: Use IsMine to validate custom change address
a1ea1cfbd qt: Use IsMine to validate custom change address (Chris Moore)

Pull request description:

  Fixes #11137
  Closes #11184 (which was accidentally opened against 0.15 branch)

Tree-SHA512: a20a59b4f36c1471a9c84bcc7c69048576d1f413104c299a7ed9ba221f28eddf93d727fca2926420ea5d0dd9aba582924f26a5acd44d995039b7202c73eb53bc
2019-09-25 10:33:21 +02:00
Wladimir J. van der Laan
6ec77c0a71 Merge #11131: rpc: Write authcookie atomically
82dd719 rpc: Write authcookie atomically (Wladimir J. van der Laan)

Pull request description:

  Use POSIX rename atomicity at the `bitcoind` side to create a working
  cookie atomically:

  - Write `.cookie.tmp`, close file
  - Rename `.cookie.tmp` to `.cookie`

  This avoids clients reading invalid/partial cookies as in #11129. As such, this is an alternative to that PR.

Tree-SHA512: 47fcc1ed2ff3d8fed4b7441e4939f29cc99b57b7a035673c3b55a124a2e49c8a904637a6ff700dd13a184be8c0255707d74781f8e626314916418954e2467e03
2019-09-24 20:06:52 +02:00
MarcoFalke
9a5b798e9c Merge #10957: Avoid returning a BIP9Stats object with uninitialized values
3eb53b867 Avoid returning a BIP9Stats object with uninitialized values (practicalswift)

Pull request description:

  Uninitialized data potentially used in `rpc/blockchain.cpp`:

  ```
  static UniValue BIP9SoftForkDesc(const Consensus::Params& consensusParams, Consensus::DeploymentPos id)
  {
      ...
      const ThresholdState thresholdState = VersionBitsTipState(consensusParams, id);
      ...
      if (THRESHOLD_STARTED == thresholdState)
      {
          UniValue statsUV(UniValue::VOBJ);
          BIP9Stats statsStruct = VersionBitsTipStatistics(consensusParams, id);
          statsUV.push_back(Pair("period", statsStruct.period));
          statsUV.push_back(Pair("threshold", statsStruct.threshold));
          statsUV.push_back(Pair("elapsed", statsStruct.elapsed));
          statsUV.push_back(Pair("count", statsStruct.count));
          statsUV.push_back(Pair("possible", statsStruct.possible));
          rv.push_back(Pair("statistics", statsUV));
      }
      ...
      return rv;
  }
  ```

  Friendly ping @pinheadmz :-)

Tree-SHA512: cc1debe11d81157b9fa8e6064bfec199524cd1e2d0230ff35f45d97ecabbc664df8423edb1c9e4ba3daf19bbd51ab87bb50e5e5cd279be1d2aa1f7d8b300f148
2019-09-24 20:06:48 +02:00
Jonas Schnelli
76776fb62e Merge #11017: [wallet] Close DB on error.
03bc719a8 [wallet] Close DB on error. (Karl-Johan Alm)

Pull request description:

  This PR intends to plug some leaks. It specifically implements adherence to the requirement in BDB to close a handle which failed to open (https://docs.oracle.com/cd/E17276_01/html/api_reference/C/dbopen.html):

  > The `DB->open()` method returns a non-zero error value on failure and 0 on success. If `DB->open()` fails, the `DB->close()` method must be called to discard the DB handle.

Tree-SHA512: cc1f2b925ef3fd6de785f62108fbc79454443397f80707762acbc56757841d2c32b69c0234f87805571aa40c486da31f315ca4c607a2c7d1c97c82a01301e2a6
2019-09-24 19:59:26 +02:00
Alexander Block
b93785d8dc Fix maxuploadtarget.py
start_node() calls TestNode.start, which internally uses the old mocktime
value. We need to pass the current value manually.
2019-09-24 17:47:35 +02:00
Alexander Block
e37bd6d96c Fix zmq_test.py 2019-09-24 17:47:35 +02:00
Alexander Block
7a44dc1956 Fix hash256() imports
Importing util.* results in the wrong version of hash256 being imported
2019-09-24 17:47:35 +02:00
Alexander Block
7b80cc8040 Allow ignoring of known messages in mininode.py
Instead of throwing an exception.
2019-09-24 17:47:35 +02:00
Alexander Block
9ef73e6add Fix mining.py 2019-09-24 17:47:35 +02:00
Alexander Block
5a59538630 Remove SegWit tests from script_standard_tests.cpp
Also add compatibility version of IsMine to avoid merge conflicts in the
future.
2019-09-24 17:47:35 +02:00
Alexander Block
5291c27ca3 A few compilation fixes 2019-09-24 17:47:35 +02:00
MarcoFalke
dc303defc0 qa: Fix lcov for out-of-tree builds 2019-09-24 17:47:35 +02:00
MarcoFalke
c8e17f1c37 Merge #11433: qa: Restore bitcoin-util-test py2 compatibility
fafff1220 qa: Restore bitcoin-util-test py2 compatibility (MarcoFalke)

Pull request description:

  Currently `./configure && make check` will look for python3, then python2. As long as we support python2 (and use it as fallback), `make check` should run fine with both python2 and python3.

  Fixes #11352 by @Zenitur

Tree-SHA512: a335ebdd224328d6f924fe52a9b97de196926476c9ee04ce3280743ea93bcae355eb2d5d4bed4050c01b2e904105595eac7db2eaa9307207581caa0a98ebcc0b
2019-09-24 17:47:35 +02:00
Wladimir J. van der Laan
377a8fae2e Merge #11399: Fix bip68-sequence rpc test
49f869f Fix bip68-sequence rpc test (Johnson Lau)

Pull request description:

  The test mined 1 extra block for the ACTIVE state. Test added to catch the right moment of LOCKED_IN->ACTIVE transaction

Tree-SHA512: a42477cf0b137e7e3b7c6c7b2530101cfad4e4f59866170b8fc0d655c43b3144aad6bca4287a4a8df4c28d7cf08d3f8df166975ad2e8dcb7d2cc15de60cf11cd
2019-09-24 17:47:35 +02:00
Wladimir J. van der Laan
5c0e3ea6ef Merge #11422: qa: Verify DBWrapper iterators are taking snapshots
bb8376b Verify DBWrapper iterators are taking snapshots (Matt Corallo)

Pull request description:

  The LevelDB docs seem to indicate that an iterator will not take
  snapshots (even providing instructions on how to do so yourself).
  In several of the places we use them, we assume snapshots to have
  been taken.

  In order to make sure LevelDB doesn't change out from under us
  (and to prevent the next person who reads the docs from having the
  same fright I did), verify that snapshots are taken in our tests.

Tree-SHA512: 54f24dabc294962e9c20882f61809604421a661208d1568bb107102248603e8e7c12e929ccb0812a73d4e4f23fea61f1b48e7cc24da5a7260f1d14d89ba88cd6
2019-09-24 17:47:35 +02:00
Suhas Daftuar
8855f4b97d qa: Treat mininode p2p exceptions as fatal 2019-09-24 17:47:35 +02:00
MarcoFalke
7ddd169212 Merge #10552: [Test] Tests for zmqpubrawtx and zmqpubrawblock
d3677ab75 Tests for zmqpubrawtx and zmqpubrawblock (Andrew Chow)

Pull request description:

Tree-SHA512: 9e367fd8936514bfb567ef3f3d83770d374287354b59c9187e844056dd086e8aa2de32ce55d35486cecd706e7c93cd1c1e2709ee82d3dddb805827be8d2bcb14
2019-09-24 17:47:35 +02:00
Wladimir J. van der Laan
eb68d88b94 Merge #11116: [script] Unit tests for script/standard and IsMine functions.
7a1e873 [script] Unit tests for IsMine (Jim Posen)
d7afe2d [script] Unit tests for script/standard functions (Jim Posen)

Pull request description:

  Simply adding unit test coverage.

Tree-SHA512: aaf16b1b07b6d43c884a67f4fd5f83c31bf2c560f78798036d7aa37a3efe71a7ca3c82c4b3ba1f3119bcbe3b78013e64bb0020fe57ebc69aea1cb54943881959
2019-09-24 17:47:35 +02:00
MarcoFalke
bc5918aa1b Merge #11310: [tests] Test listwallets RPC
fb1f32582 Add listwallets RPC test to multiwallet.py (Cristian Mircea Messel)

Pull request description:

Tree-SHA512: acf3377ac86fcc4e7fe36e3b97120f3e51b7bd94cb7136ce22e7e2043ce8ec5555c246c41f8501272aeb1e56ad16d05eb8c4eeb6acf3315a218c1ed4e5844871
2019-09-24 17:47:35 +02:00
MarcoFalke
797b474608 Merge #11230: [tests] fixup dbcrash interaction with add_nodes()
8fdb6f912 [tests] fixup dbcrash interaction with add_nodes() (John Newbery)

Pull request description:

  Another conflict with #11121. Apologies - this is entirely my fault. I didn't run the extended test suite after rebasing on master.

  @MarcoFalke @sdaftuar

Tree-SHA512: eefce1d1c63dc4a63c5e030a541e046ad4832e8a709c0a8aad40ffdc4712b2065486778b406dfa57cfd34e66db86064278ee3fea8f2c2afd2390772875e6fa3e
2019-09-24 17:47:35 +02:00
João Barbosa
102c3f2cec [test] Replace check_output with low level version 2019-09-24 17:47:35 +02:00
João Barbosa
654815456e [test] Add assert_raises_process_error to assert process errors 2019-09-24 17:47:35 +02:00
João Barbosa
6245ce95e1 [test] Add support for custom arguments to TestNodeCLI 2019-09-24 17:47:35 +02:00
João Barbosa
d446cc57aa [test] Improve assert_raises_jsonrpc docstring 2019-09-24 17:47:35 +02:00
Alexander Block
b9599c297f Partially backport bitcoin#10838 for bitcoin_cli.py
This allows further backports while postponing removal of "getinfo"
2019-09-24 17:47:35 +02:00
MarcoFalke
ded01879d0 Merge #11067: [qa] TestNode: Add wait_until_stopped helper method
faa8d9581 [qa] TestNode: Add wait_until_stopped helper method (MarcoFalke)

Pull request description:

  This adds a helper method `wait_until_stopped` to the `TestNode` class. This should prevent numerous `time.sleep()` over all places.

  Additionally, the timeout behavior is restored. (Was removed by the introduction of `TestNode`.)
  This should prevent tests from running indefinitely by accident.

Tree-SHA512: 7133fc64d55711869c4e372e9d30625c98f1237fb3578c24a26900d9319831f10eb95592d7b08e536fa706158dffb0abf9197f11c5d9ef605c880628e1a6533f
2019-09-24 17:47:35 +02:00
Wladimir J. van der Laan
a2e8cb4f45 Merge #11210: Stop test_bitcoin-qt touching ~/.bitcoin
dea086f49 Stop test_bitcoin-qt touching ~/.bitcoin (MeshCollider)

Pull request description:

  Fixes https://github.com/bitcoin/bitcoin/issues/11192

  The directory remains unused, but this stops the tests touching ~/.bitcoin at all (namely creating it if it doesn't exist)

Tree-SHA512: e59ad6b83dbc5ea2fb2761994c09933721d29668b0eef09b9d938a4ee1c67871c5125c57483ee0ea25f2385e308d275d86bcb9087dd4d502923013b4f3dbac82
2019-09-24 17:47:35 +02:00
Wladimir J. van der Laan
ec892d459d Merge #11234: Remove redundant testutil.cpp|h files
d1138e362 Remove redundant testutil files (MeshCollider)

Pull request description:

  The only function in testutil.cpp, `GetTempPath()` simply called `fs::temp_directory_path()` directly. This just tidies things up by removing that redundant function and the file containing it

  I can understand wanting a general util file for tests to use, but if there's nothing in it, we might as well remove it, it can always be added back later when it's put to use.

Tree-SHA512: b923f99acf33328743755368a1aa90f5da4a7d5f61b163a4b0b894275c98db80a91edf8f051fbfb4893d970fda5a9078aae78a2672867ff521c4ca4b653c71c0
2019-09-24 17:47:35 +02:00
Wladimir J. van der Laan
d643ada802 Merge #11241: [tests] Improve signmessages functional test
b3d6fc654 Improve signmessages functional test (Cristian Mircea Messel)

Pull request description:

  This patch improves branch coverage of the test, making sure a message can not be verified with the wrong address or signature.

Tree-SHA512: 984eb66af8ba1caaccfb8ce2c5cc89c634a50d2fa587bfaf6e196aaf5b89e77accd76522ac33105621ead795521ec6d90f0afcb3b6064d22e53b54d2b41c7991
2019-09-24 17:47:35 +02:00
Pieter Wuille
b9ce8480df Merge #11215: [tests] fixups from set_test_params()
3918d93f3 [tests] fixups from set_test_params() (John Newbery)

Pull request description:

  #11121 had a silent merge conflict in `bitcoin_cli.py`. This fixes it.

  Also fixes a comment in `example_test.py`

Tree-SHA512: f22a645c51c9aeda005526338ad6f2ee07f2bab172847fc54f51fecf1c79e778970be61e5e637d4e0aba3a02e5aba0737b0b57f1bc11a514a1acd94c221b54d6
2019-09-24 17:47:35 +02:00
Alexander Block
a304d4d47c Fix DashTestFramework and tests depending on it 2019-09-24 17:47:35 +02:00
Alexander Block
ac0f483d85 Fix issues with set_test_params and start/stop_node 2019-09-24 17:47:35 +02:00
Alexander Block
703f4c77a7 Fix stderr related issues
Also remove use of stderr=sys.stdout for tests where it's not needed anymore
2019-09-24 17:47:35 +02:00
Alexander Block
39a1c6452f Allow to set self.stderr when using vanilla setup_nodes() 2019-09-24 16:58:03 +02:00
Alexander Block
8ba042b58e Fix dip3-deterministicmns.py 2019-09-24 16:58:03 +02:00
Alexander Block
f51a4df5c4 Allow calling add_nodes multiple times without reusing datadirs 2019-09-24 16:58:03 +02:00
MarcoFalke
17bb230d74 Merge #11121: TestNode tidyups
7148b74dc [tests] Functional tests must explicitly set num_nodes (John Newbery)
5448a1471 [tests] don't override __init__() in individual tests (John Newbery)
6cf094a02 [tests] Avoid passing around member variables in test_framework (John Newbery)
36b626867 [tests] TestNode: separate add_node from start_node (John Newbery)
be2a2ab6a [tests] fix - use rpc_timeout as rpc timeout (John Newbery)

Pull request description:

  Some additional tidyups after the introduction of TestNode:

  - commit 1 makes TestNode use the correct rpc timeout. This should have been included in #11077
  - commit 2 separates `add_node()` from `start_node()` as originally discussed here: https://github.com/bitcoin/bitcoin/pull/10556#discussion_r121161453 with @kallewoof . The test writer no longer needs to assign to `self.nodes` when starting/stopping nodes.
  - commit 3 adds a `set_test_params()` method, so individual tests don't need to override `__init__()` and call `super().__init__()`

Tree-SHA512: 0adb030623b96675b5c29e2890ce99ccd837ed05f721d0c91b35378c5ac01b6658174aac12f1f77402e1d38b61f39b3c43b4df85c96952565dde1cda05b0db84
2019-09-24 16:58:03 +02:00
MarcoFalke
37250c02e2 Merge #11150: [tests] Add getmininginfo test
4f2905b76 Add getmininginfo functional test (Cristian Mircea Messel)

Pull request description:

  Add `getmininginfo` functional test in `mining.py`

Tree-SHA512: 12be9cfb37e9ac4c6625fc06051704c8a8dfd7271c2654f994c7659c8810e4b7a4335105ae159315308bcd45b65589bab1829bd134d2f4cabf74d63f2e5d22fe
2019-09-24 16:58:03 +02:00
MarcoFalke
74325db11a Merge #10859: RPC: gettxout: Slightly improve doc and tests
6d2d2eb49 RPC: gettxout: Slightly improve doc and tests (Jorge Timón)

Pull request description:

  Slightly related to https://github.com/bitcoin/bitcoin/pull/10822 in the sense that I felt the documentation and testing wasn't as good as it could be while writing it.

  Ping @sipa since we discussed this on IRC.

Tree-SHA512: a0b3ffdac65245a0429e772fc2d8bcc1e829b02c70fb2af6ee0b7578cae46683f6c51a824b4d703d4dc3f99b6f03a658d6bbc818bf32981516f24124249a211d
2019-09-24 16:58:03 +02:00
Alexander Block
ebfec2218a Dashify BITCOINCLI 2019-09-24 16:58:03 +02:00
MarcoFalke
1adc2001a8 Merge #10798: [tests] [utils] test bitcoin-cli
c6ec4358a [tests] Add bitcoin_cli.py test script (John Newbery)
b23549f6e [tests] add TestNodeCLI class for calling bitcoin-cli for a node (John Newbery)

Pull request description:

  We don't test bitcoin-cli at all. That means that we can miss inconsistencies between the bitcoin-cli client and the RPC interface, such as #10698 and #10747. It also means that the various bitcoin-cli options and features are untested and regressions could be silently introduced.

  Let's fix that.

  This PR adds bitcoin-cli testing in the python functional test_framework:

  1. Add a bitcoin_cli.py test script that tests bitcoin-cli. At the moment it only tests that the result of `getinfo` is the same if you run it as an RPC or through bitcoin-cli, but can easily be extended to test additional bitcoin-cli features

  **EDIT: `--usecli` option is moved to a separate PR. This PR now only covers the bitcoin_cli.py test.**

  2. ~Add a `--usecli` option to the test framework. This changes the test to use bitcoin-cli for all RPC calls instead of using direct HTTP requests. This is somewhat experimental. It works for most tests, but there are some cases where it can't work transparently because:~
  - ~the testcase is asserting on a specific error code, and bitcoin-cli returns a different error code from the direct RPC~
  - ~we're sending a very large RPC request (eg `submitblock`) and it can't be serialized into a shell bitcoin-cli call.~

  ~I think that even though `--usecli` doesn't work on all tests, it's still a useful experimental feature. Future potential enhancements:~
  - ~enhance the framework to automatically skip tests that are known to fail with bitcoin-cli if the `--usecli` option is used.~
  - ~run a subset of tests in Travis with `-usecli`~

  This builds on and requires the `TestNode` PR #10711 . As an aside, this is a good demonstration of how tidy it is to add additional features/interfaces now that test node logic/state is encapsulated in a TestNode class.

  Addresses #10791

Tree-SHA512: a1e6be12e8e007f6f67b3d3bbcd142d835787300831eb38e6027a1ad25ca9d79c4bc99a41b19e31ee95205cba1b3b2d21a688b5909316aad70bfc2b4eb6d8a52
2019-09-24 16:58:03 +02:00