mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-05-27 22:34:18 +02:00
ci: Put space and non-ASCII char in scratch dir
Also, add a missing quote around -DCMAKE_INSTALL_PREFIX to avoid word splitting. Otherwise, cmake would warn: ``` + cmake -S /home/runner/work/_temp -B /home/runner/work/_temp/build -DCMAKE_COMPILE_WARNING_AS_ERROR=ON -DBUILD_BENCH=ON -DBUILD_FUZZ_BINARY=ON -DCMAKE_INSTALL_PREFIX=/home/runner/work/_temp/ci/scratch_ ₿🧪_/out -Werror=dev --preset=dev-mode -DSANITIZERS=address,float-divide-by-zero,integer,undefined -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_FLAGS=-ftrivial-auto-var-init=pattern -DCMAKE_CXX_FLAGS=-ftrivial-auto-var-init=pattern -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=mold -DAPPEND_CXXFLAGS=-std=c++23 '-DAPPEND_CPPFLAGS=-DARENA_DEBUG -DDEBUG_LOCKORDER' CMake Warning: Ignoring extra path from command line: "₿🧪_/out" ``` Also, allow spaces in the debug log file regex in a test. Otherwise, the test would fail: ``` TestFramework (ERROR): Unexpected exception: Traceback (most recent call last): File "./test/functional/test_framework/test_framework.py", line 142, in main self.run_test() ~~~~~~~~~~~~~^^ File "./test/functional/feature_logging.py", line 40, in run_test self.nodes[0].assert_start_raises_init_error([f"-debuglogfile={invalidname}"], exp_stderr, match=ErrorMatch.FULL_REGEX) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "./test/functional/test_framework/test_node.py", line 743, in assert_start_raises_init_error self._raise_assertion_error( ~~~~~~~~~~~~~~~~~~~~~~~~~~~^ 'Expected message "{}" does not fully match stderr:\n"{}"'.format(expected_msg, stderr)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "./test/functional/test_framework/test_node.py", line 229, in _raise_assertion_error raise AssertionError(self._node_msg(msg)) AssertionError: [node 0] Expected message "Error: Could not open debug log file \S+$" does not fully match stderr: "Error: Could not open debug log file /Users/runner/work/bitcoin-core-with-ci/bitcoin-core-with-ci/repo_archive/ci/scratch_ ₿🧪_/test_runner/test_runner_₿_🏃_20260218_095938/feature_logging_31/node0/regtest/foo/foo.log" ``` Also, add missing quotes in a test. Otherwise, the test would fail: ``` 455/455 - feature_notifications.py failed, Duration: 402 s stdout: TestFramework (INFO): Initializing test directory /home/runner/work/_temp/ci/scratch_ ₿🧪_/test_runner/test_runner_₿_🏃_20260218_113529/feature_notifications_128 TestFramework (INFO): test -blocknotify TestFramework.utils (ERROR): wait_until() failed. Predicate: '''' self.wait_until(lambda: len(os.listdir(self.blocknotify_dir)) == block_count, timeout=10) '''
This commit is contained in:
@@ -20,8 +20,10 @@ export BASE_ROOT_DIR="${BASE_ROOT_DIR:-/ci_container_base}"
|
||||
# This folder exists only on the ci guest, and on the ci host as a volume.
|
||||
export DEPENDS_DIR=${DEPENDS_DIR:-$BASE_ROOT_DIR/depends}
|
||||
# A folder for the ci system to put temporary files (build result, datadirs for tests, ...)
|
||||
# The name contains a space and a non-ASCII symbol to confirm the build and
|
||||
# tests handle word-splitting and UTF8 correctly.
|
||||
# This folder only exists on the ci guest.
|
||||
export BASE_SCRATCH_DIR=${BASE_SCRATCH_DIR:-$BASE_ROOT_DIR/ci/scratch}
|
||||
export BASE_SCRATCH_DIR=${BASE_SCRATCH_DIR:-$BASE_ROOT_DIR/ci/scratch_ ₿🧪_}
|
||||
|
||||
echo "Setting specific values in env"
|
||||
# shellcheck disable=SC1090
|
||||
|
||||
@@ -109,7 +109,7 @@ ccache --zero-stats
|
||||
# Folder where the build is done.
|
||||
BASE_BUILD_DIR=${BASE_BUILD_DIR:-$BASE_SCRATCH_DIR/build-$HOST}
|
||||
|
||||
BITCOIN_CONFIG_ALL="$BITCOIN_CONFIG_ALL -DCMAKE_INSTALL_PREFIX=$BASE_OUTDIR -Werror=dev"
|
||||
BITCOIN_CONFIG_ALL="$BITCOIN_CONFIG_ALL '-DCMAKE_INSTALL_PREFIX=$BASE_OUTDIR' -Werror=dev"
|
||||
|
||||
if [[ "${RUN_IWYU}" == true || "${RUN_TIDY}" == true ]]; then
|
||||
BITCOIN_CONFIG_ALL="$BITCOIN_CONFIG_ALL -DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
|
||||
|
||||
@@ -37,8 +37,8 @@ class LoggingTest(BitcoinTestFramework):
|
||||
invdir = self.relative_log_path("foo")
|
||||
invalidname = os.path.join("foo", "foo.log")
|
||||
self.stop_node(0)
|
||||
exp_stderr = r"Error: Could not open debug log file \S+$"
|
||||
self.nodes[0].assert_start_raises_init_error([f"-debuglogfile={invalidname}"], exp_stderr, match=ErrorMatch.FULL_REGEX)
|
||||
exp_stderr = "Error: Could not open debug log file "
|
||||
self.nodes[0].assert_start_raises_init_error([f"-debuglogfile={invalidname}"], exp_stderr, match=ErrorMatch.PARTIAL_REGEX)
|
||||
assert not os.path.isfile(os.path.join(invdir, "foo.log"))
|
||||
|
||||
# check that invalid log (relative) works after path exists
|
||||
@@ -51,7 +51,7 @@ class LoggingTest(BitcoinTestFramework):
|
||||
self.stop_node(0)
|
||||
invdir = os.path.join(self.options.tmpdir, "foo")
|
||||
invalidname = os.path.join(invdir, "foo.log")
|
||||
self.nodes[0].assert_start_raises_init_error([f"-debuglogfile={invalidname}"], exp_stderr, match=ErrorMatch.FULL_REGEX)
|
||||
self.nodes[0].assert_start_raises_init_error([f"-debuglogfile={invalidname}"], exp_stderr, match=ErrorMatch.PARTIAL_REGEX)
|
||||
assert not os.path.isfile(os.path.join(invdir, "foo.log"))
|
||||
|
||||
# check that invalid log (absolute) works after path exists
|
||||
|
||||
@@ -31,6 +31,10 @@ LARGE_WORK_INVALID_CHAIN_WARNING = (
|
||||
def notify_outputname(walletname, txid):
|
||||
return txid if platform.system() == 'Windows' else f'{walletname}_{txid}'
|
||||
|
||||
def shell_escape_posix(arg):
|
||||
# Identical to ShellEscape() in the C++ code
|
||||
return "'" + arg.replace("'", "'\"'\"'") + "'"
|
||||
|
||||
|
||||
class NotificationsTest(BitcoinTestFramework):
|
||||
def set_test_params(self):
|
||||
@@ -51,13 +55,18 @@ class NotificationsTest(BitcoinTestFramework):
|
||||
os.mkdir(self.walletnotify_dir)
|
||||
os.mkdir(self.shutdownnotify_dir)
|
||||
|
||||
if platform.system() == 'Windows':
|
||||
walletnotify_path = f"\"{os.path.join(self.walletnotify_dir, notify_outputname('%w', '%s'))}\""
|
||||
else:
|
||||
walletnotify_path = f"{shell_escape_posix(os.path.join(self.walletnotify_dir, ''))}{notify_outputname('%w', '%s')}"
|
||||
|
||||
# -alertnotify and -blocknotify on node0, walletnotify on node1
|
||||
self.extra_args = [[
|
||||
f"-alertnotify=echo %s >> {self.alertnotify_file}",
|
||||
f"-blocknotify=echo > {os.path.join(self.blocknotify_dir, '%s')}",
|
||||
f"-shutdownnotify=echo > {self.shutdownnotify_file}",
|
||||
f"-alertnotify=echo %s >> \"{self.alertnotify_file}\"",
|
||||
f"-blocknotify=echo > \"{os.path.join(self.blocknotify_dir, '%s')}\"",
|
||||
f"-shutdownnotify=echo > \"{self.shutdownnotify_file}\"",
|
||||
], [
|
||||
f"-walletnotify=echo %h_%b > {os.path.join(self.walletnotify_dir, notify_outputname('%w', '%s'))}",
|
||||
f"-walletnotify=echo %h_%b > {walletnotify_path}",
|
||||
]]
|
||||
self.wallet_names = [self.default_wallet_name, self.wallet]
|
||||
super().setup_network()
|
||||
|
||||
Reference in New Issue
Block a user