c7b7e0a692tests: Make only desc wallets for wallet_multwallet.py --descriptors (Andrew Chow)d4b67ad214Avoid creating legacy wallets in wallet_importdescriptors.py (Andrew Chow)6c9c12bf87Update feature_backwards_compatibility for descriptor wallets (Andrew Chow)9a4c631e1cUpdate wallet_labels.py to not require descriptors=False (Andrew Chow)242aed7cc1tests: Add a --legacy-wallet that is mutually exclusive with --descriptors (Andrew Chow)388053e172Disable some tests for tool_wallet when descriptors (Andrew Chow)47d3243160Make raw multisig tests legacy wallet only in rpc_rawtransaction.py (Andrew Chow)59d3da5bceDo addmultisigaddress tests in legacy wallet mode in wallet_address_types.py (Andrew Chow)25bc5dccbfUse importdescriptors when in descriptor wallet mode in wallet_createwallet.py (Andrew Chow)0bd1860300Avoid dumpprivkey and watchonly behavior in rpc_signrawtransaction.py (Andrew Chow)08067aebfdAdd script equivalent of functions in address.py (Andrew Chow)86968882a8Add descriptor wallet output to tool_wallet.py (Andrew Chow)3457679870Use separate watchonly wallet for multisig in feature_nulldummy.py (Andrew Chow)a42652ec10Move import and watchonly tests to be legacy wallet only in wallet_balance.py (Andrew Chow)4b871909d6Use importdescriptors for descriptor wallets in wallet_bumpfee.py (Andrew Chow)c2711e4230Avoid dumpprivkey in wallet_listsinceblock.py (Andrew Chow)553dbf9af4Make import tests in wallet_listtransactions.py legacy wallet only (Andrew Chow)dc81418fd0Use a separate watchonly wallet in rpc_fundrawtransaction.py (Andrew Chow)a357111047Update wallet_importprunedfunds to avoid dumpprivkey (Andrew Chow) Pull request description: I went through all the tests and checked whether they passed with descriptor wallets. This partially informed some changes in #16528. Some tests needed changes to work with descriptor wallets. These were primarily due to import and watchonly behavior. There are some tests and test cases that only test legacy wallet behavior so those tests won't be run with descriptor wallets. This PR updates more tests to have to the `--descriptors` switch in `test_runner.py`. Additionally a mutually exclusive `--legacy-wallet` option has been added to force legacy wallets. This does nothing currently but will be useful in the future when descriptor wallets are the default. For the tests that rely on legacy wallet behavior, this option is being set so that we don't forget in the future. Those tests are `feature_segwit.py`, `wallet_watchonly.py`, `wallet_implicitsegwit.py`, `wallet_import_with_label.py`, and `wallet_import_with_label.py`. If you invert the `--descriptors`/`--legacy-wallet` default so that descriptor wallets are the default, all tests (besides the legacy wallet specific ones) will pass. ACKs for top commit: MarcoFalke: review ACKc7b7e0a692🎿 laanwj: ACKc7b7e0a692Tree-SHA512: 2f4e87815005d1d0a2543ea7947f7cd7593d8cf5312228ef85f8e096f19739b225769961943049cb44f6f07a35b8de988e2246ab9aca5bb5a0b2e62694d5637d
Bitcoin Core integration/staging tree
What is Bitcoin?
Bitcoin is an experimental digital currency that enables instant payments to anyone, anywhere in the world. Bitcoin uses peer-to-peer technology to operate with no central authority: managing transactions and issuing money are carried out collectively by the network. Bitcoin Core is the name of open source software which enables the use of this currency.
For more information, as well as an immediately usable, binary version of the Bitcoin Core software, see https://bitcoincore.org/en/download/, or read the original whitepaper.
License
Bitcoin Core is released under the terms of the MIT license. See COPYING for more information or see https://opensource.org/licenses/MIT.
Development Process
The master branch is regularly built (see doc/build-*.md for instructions) and tested, but it is not guaranteed to be
completely stable. Tags are created
regularly from release branches to indicate new official, stable release versions of Bitcoin Core.
The https://github.com/bitcoin-core/gui repository is used exclusively for the development of the GUI. Its master branch is identical in all monotree repositories. Release branches and tags do not exist, so please do not fork that repository unless it is for development reasons.
The contribution workflow is described in CONTRIBUTING.md and useful hints for developers can be found in doc/developer-notes.md.
Testing
Testing and code review is the bottleneck for development; we get more pull requests than we can review and test on short notice. Please be patient and help out by testing other people's pull requests, and remember this is a security-critical project where any mistake might cost people lots of money.
Automated Testing
Developers are strongly encouraged to write unit tests for new code, and to
submit new unit tests for old code. Unit tests can be compiled and run
(assuming they weren't disabled in configure) with: make check. Further details on running
and extending unit tests can be found in /src/test/README.md.
There are also regression and integration tests, written
in Python, that are run automatically on the build server.
These tests can be run (if the test dependencies are installed) with: test/functional/test_runner.py
The Travis CI system makes sure that every pull request is built for Windows, Linux, and macOS, and that unit/sanity tests are run automatically.
Manual Quality Assurance (QA) Testing
Changes should be tested by somebody other than the developer who wrote the code. This is especially important for large or high-risk changes. It is useful to add a test plan to the pull request description if testing the changes is not straightforward.
Translations
Changes to translations as well as new translations can be submitted to Bitcoin Core's Transifex page.
Translations are periodically pulled from Transifex and merged into the git repository. See the translation process for details on how this works.
Important: We do not accept translation changes as GitHub pull requests because the next pull from Transifex would automatically overwrite them again.
Translators should also subscribe to the mailing list.