mirror of
https://github.com/dogecoin/dogecoin.git
synced 2026-03-03 17:46:01 +00:00
Tree-SHA512: 7bcdf6c42ac75fb24df8d6b60bddcac5f14363a3f7dd89a239f798bb14b5c911c2d7535a0372c2998719d33a561d0d28b0b6764aaf1f2ec330d4035ce965997b -----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEz7FuIclQ9n+pXlWPLuufXMCVJsEFAmEp9EoACgkQLuufXMCV JsGvcQ//ZSQOCEFH3e+gBuXHthXG2UZsHagC715ruQquhRt4aOKiFLu/eJGwiKBt Frc1wLF21dgtl/2JUtVBpVb54whni1PKgDowtkk4Ge7gWM0awW2OnvdgA21E+syD 501duaW6ORvo5icmf7uPQ7u/g9Ks1s1chBr1bLnYqqqg2e3/aqC4+drTjd8wziy3 J+8Bzc+KLAklgv8cIpH1EDuFGrumlMYxW0KHqJeN7Vk8wGX8PINrkEGCyrBDQ7DY BEd6txwcivPxqMfj61OP60DU0oG6IVECGMPrANtyK+ba0FHl+GkNQuTaX8zv4Ik9 dKscJ1OiRX2ER/pEJTwg8PJfOET5D/WRc1xSmrYBOK7cFLtYVqH2yvnHiLlWvH1P 7TQOAjfzQwa+yUnGRf2dWW+Rngv876JjBUX5vbm4UC5Geo8Bdl3z9U9glaq03fVd 3Q8uAgljLnXWFiylK9oDYhsFfWSUYgjyhM11LCb5K3y3t7ageclu6RTl574jy5sb 8qBwQxpJt5UtwIK2SNqq1iDmMW3J65sb3CmTND9ppDA79GfZzwlvGVwO1bN2TC6m 0dGTPvOPWS9x/PSq8+8o1uCHDzHrW9B5lUikf8kx+zNI7Rd3QLJ0pbdqwrJ3CcOk ttV5QXAYD2trfkCKEi69eiIpH21rasqjyI11ZoH4u+0BCpw8hQg= =GXjC -----END PGP SIGNATURE----- Merge tag 'v0.21.2rc2' into 1.21-dev Bitcoin Core 0.21.2 release candidate 2 Tree-SHA512: 7bcdf6c42ac75fb24df8d6b60bddcac5f14363a3f7dd89a239f798bb14b5c911c2d7535a0372c2998719d33a561d0d28b0b6764aaf1f2ec330d4035ce965997b
90 lines
4.3 KiB
Python
Executable File
90 lines
4.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# Copyright (c) 2018-2019 The Bitcoin Core developers
|
|
# Distributed under the MIT software license, see the accompanying
|
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
"""Tests the includeconf argument
|
|
|
|
Verify that:
|
|
|
|
1. adding includeconf to the configuration file causes the includeconf
|
|
file to be loaded in the correct order.
|
|
2. includeconf cannot be used as a command line argument.
|
|
3. includeconf cannot be used recursively (ie includeconf can only
|
|
be used from the base config file).
|
|
4. multiple includeconf arguments can be specified in the main config
|
|
file.
|
|
"""
|
|
import os
|
|
|
|
from test_framework.test_framework import BitcoinTestFramework
|
|
|
|
class IncludeConfTest(BitcoinTestFramework):
|
|
def set_test_params(self):
|
|
self.setup_clean_chain = False
|
|
self.num_nodes = 1
|
|
|
|
def setup_chain(self):
|
|
super().setup_chain()
|
|
# Create additional config files
|
|
# - tmpdir/node0/relative.conf
|
|
with open(os.path.join(self.options.tmpdir, "node0", "relative.conf"), "w", encoding="utf8") as f:
|
|
f.write("uacomment=relative\n")
|
|
# - tmpdir/node0/relative2.conf
|
|
with open(os.path.join(self.options.tmpdir, "node0", "relative2.conf"), "w", encoding="utf8") as f:
|
|
f.write("uacomment=relative2\n")
|
|
with open(os.path.join(self.options.tmpdir, "node0", "dogecoin.conf"), "a", encoding='utf8') as f:
|
|
f.write("uacomment=main\nincludeconf=relative.conf\n")
|
|
|
|
def run_test(self):
|
|
self.log.info("-includeconf works from config file. subversion should end with 'main; relative)/'")
|
|
|
|
subversion = self.nodes[0].getnetworkinfo()["subversion"]
|
|
assert subversion.endswith("main; relative)/")
|
|
|
|
self.log.info("-includeconf cannot be used as command-line arg")
|
|
self.stop_node(0)
|
|
self.nodes[0].assert_start_raises_init_error(
|
|
extra_args=['-noincludeconf=0'],
|
|
expected_msg='Error: Error parsing command line arguments: -includeconf cannot be used from commandline; -includeconf=true',
|
|
)
|
|
self.nodes[0].assert_start_raises_init_error(
|
|
extra_args=['-includeconf=relative2.conf', '-includeconf=no_warn.conf'],
|
|
expected_msg='Error: Error parsing command line arguments: -includeconf cannot be used from commandline; -includeconf="relative2.conf"',
|
|
)
|
|
|
|
self.log.info("-includeconf cannot be used recursively. subversion should end with 'main; relative)/'")
|
|
with open(os.path.join(self.options.tmpdir, "node0", "relative.conf"), "a", encoding="utf8") as f:
|
|
f.write("includeconf=relative2.conf\n")
|
|
self.start_node(0)
|
|
|
|
subversion = self.nodes[0].getnetworkinfo()["subversion"]
|
|
assert subversion.endswith("main; relative)/")
|
|
self.stop_node(0, expected_stderr="warning: -includeconf cannot be used from included files; ignoring -includeconf=relative2.conf")
|
|
|
|
self.log.info("-includeconf cannot contain invalid arg")
|
|
|
|
# Commented out as long as we ignore invalid arguments in configuration files
|
|
#with open(os.path.join(self.options.tmpdir, "node0", "relative.conf"), "w", encoding="utf8") as f:
|
|
# f.write("foo=bar\n")
|
|
#self.nodes[0].assert_start_raises_init_error(expected_msg="Error: Error reading configuration file: Invalid configuration value foo")
|
|
|
|
self.log.info("-includeconf cannot be invalid path")
|
|
os.remove(os.path.join(self.options.tmpdir, "node0", "relative.conf"))
|
|
self.nodes[0].assert_start_raises_init_error(expected_msg="Error: Error reading configuration file: Failed to include configuration file relative.conf")
|
|
|
|
self.log.info("multiple -includeconf args can be used from the base config file. subversion should end with 'main; relative; relative2)/'")
|
|
with open(os.path.join(self.options.tmpdir, "node0", "relative.conf"), "w", encoding="utf8") as f:
|
|
# Restore initial file contents
|
|
f.write("uacomment=relative\n")
|
|
|
|
with open(os.path.join(self.options.tmpdir, "node0", "dogecoin.conf"), "a", encoding='utf8') as f:
|
|
f.write("includeconf=relative2.conf\n")
|
|
|
|
self.start_node(0)
|
|
|
|
subversion = self.nodes[0].getnetworkinfo()["subversion"]
|
|
assert subversion.endswith("main; relative; relative2)/")
|
|
|
|
if __name__ == '__main__':
|
|
IncludeConfTest().main()
|