1#!/usr/bin/env python3 2# Copyright 2022 The Pigweed Authors 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); you may not 5# use this file except in compliance with the License. You may obtain a copy of 6# the License at 7# 8# https://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13# License for the specific language governing permissions and limitations under 14# the License. 15"""Tests for bazel_parser.""" 16 17import difflib 18from pathlib import Path 19import tempfile 20import unittest 21 22from pw_presubmit import bazel_parser 23 24# This is a real Bazel failure, trimmed slightly. 25_REAL_TEST_INPUT = """ 26Starting local Bazel server and connecting to it... 27WARNING: --verbose_explanations has no effect when --explain=<file> is not enabled 28Loading: 29Loading: 0 packages loaded 30Analyzing: 1362 targets (197 packages loaded) 31Analyzing: 1362 targets (197 packages loaded, 0 targets configured) 32INFO: Analyzed 1362 targets (304 packages loaded, 15546 targets configured). 33 34INFO: Found 1362 targets... 35[6 / 124] [Prepa] BazelWorkspaceStatusAction stable-status.txt 36[747 / 1,548] Compiling pw_kvs/entry.cc; 0s linux-sandbox ... (3 actions, ... 37ERROR: /usr/local/google/home/mohrr/pigweed/pigweed/pw_kvs/BUILD.bazel:25:14: Compiling pw_kvs/entry.cc failed: (Exit 1): gcc failed: error executing command 38 (cd /usr/local/google/home/mohrr/.cache/bazel/_bazel_mohrr/7e133e1f95b61... \ 39 exec env - \ 40 CPP_TOOL_PATH=external/clang_llvm_12_00_x86_64_linux_gnu_ubuntu_16_04/... \ 41 GCC_TOOL_PATH=external/clang_llvm_12_00_x86_64_linux_gnu_ubuntu_16_04/... \ 42 LD_TOOL_PATH=external/clang_llvm_12_00_x86_64_linux_gnu_ubuntu_16_04/... \ 43 NM_TOOL_PATH=external/clang_llvm_12_00_x86_64_linux_gnu_ubuntu_16_04/... \ 44 OBJDUMP_TOOL_PATH=external/clang_llvm_12_00_x86_64_linux_gnu_ubuntu_16_... \ 45 PATH=/usr/local/google/home/mohrr/pigweed/pigweed/out/host/host_tools:... \ 46 PWD=/proc/self/cwd \ 47 external/rules_cc_toolchain/cc_toolchain/wrappers/posix/gcc -MD -MF bazel-out/k8-fastbuild/bin/pw_kvs/_objs/pw_kvs/entry.pic.d '-frandom-seed=bazel-out/k8-fastbuild/bin/pw_kvs/_objs/pw_kvs/entry.pic.o' -fPIC -iquote . -iquote bazel-out/k8-fastbuild/bin -isystem pw_kvs/public -isystem bazel-out/k8-fastbuild/bin/pw_kvs/public -isystem pw_assert/assert_compatibility_public_overrides -isystem bazel-out/k8-fastbuild/bin/pw_assert/assert_compatibility_public_overrides -isystem pw_assert/public -isystem bazel-out/k8-fastbuild/bin/pw_assert/public -isystem pw_preprocessor/public -isystem bazel-out/k8-fastbuild/bin/pw_preprocessor/public -isystem pw_assert_basic/public -isystem bazel-out/k8-fastbuild/bin/pw_assert_basic/public -isystem pw_assert_basic/public_overrides -isystem bazel-out/k8-fastbuild/bin/pw_assert_basic/public_overrides -isystem pw_string/public -isystem bazel-out/k8-fastbuild/bin/pw_string/public -isystem pw_span/public -isystem bazel-out/k8-fastbuild/bin/pw_span/public -isystem pw_polyfill/public -isystem bazel-out/k8-fastbuild/bin/pw_polyfill/public -isystem pw_status/public -isystem bazel-out/k8-fastbuild/bin/pw_status/public -isystem pw_result/public -isystem bazel-out/k8-fastbuild/bin/pw_result/public -isystem pw_sys_io/public -isystem bazel-out/k8-fastbuild/bin/pw_sys_io/public -isystem pw_bytes/public -isystem bazel-out/k8-fastbuild/bin/pw_bytes/public -isystem pw_containers/public -isystem bazel-out/k8-fastbuild/bin/pw_containers/public -isystem pw_checksum/public -isystem bazel-out/k8-fastbuild/bin/pw_checksum/public -isystem pw_compilation_testing/public -isystem bazel-out/k8-fastbuild/bin/pw_compilation_testing/public -isystem pw_log/public -isystem bazel-out/k8-fastbuild/bin/pw_log/public -isystem pw_log_basic/public -isystem bazel-out/k8-fastbuild/bin/pw_log_basic/public -isystem pw_log_basic/public_overrides -isystem bazel-out/k8-fastbuild/bin/pw_log_basic/public_overrides -isystem pw_stream/public -isystem bazel-out/k8-fastbuild/bin/pw_stream/public -nostdinc++ -nostdinc -isystemexternal/clang_llvm_12_00_x86_64_linux_gnu_ubuntu_16_04/include/c++/v1 -isystemexternal/debian_stretch_amd64_sysroot/usr/local/include -isystemexternal/debian_stretch_amd64_sysroot/usr/include/x86_64-linux-gnu -isystemexternal/debian_stretch_amd64_sysroot/usr/include -isystemexternal/clang_llvm_12_00_x86_64_linux_gnu_ubuntu_16_04/lib/clang/12.0.0 -isystemexternal/clang_llvm_12_00_x86_64_linux_gnu_ubuntu_16_04/lib/clang/12.0.0/include -fdata-sections -ffunction-sections -no-canonical-prefixes -Wno-builtin-macro-redefined '-D__DATE__="redacted"' '-D__TIMESTAMP__="redacted"' '-D__TIME__="redacted"' -xc++ --sysroot external/debian_stretch_amd64_sysroot -O0 -fPIC -g -fno-common -fno-exceptions -ffunction-sections -fdata-sections -Wall -Wextra -Werror '-Wno-error=cpp' '-Wno-error=deprecated-declarations' -Wno-private-header '-std=c++17' -fno-rtti -Wnon-virtual-dtor -Wno-register -c pw_kvs/entry.cc -o bazel-out/k8-fastbuild/bin/pw_kvs/_objs/pw_kvs/entry.pic.o) 48# Configuration: 752863e407a197a5b9da05cfc572e7013efd6958e856cee61d2fa474ed... 49# Execution platform: @local_config_platform//:host 50 51Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging 52pw_kvs/entry.cc:49:20: error: no member named 'Dat' in 'pw::Status' 53 return Status::Dat aLoss(); 54 ~~~~~~~~^ 55pw_kvs/entry.cc:49:23: error: expected ';' after return statement 56 return Status::Dat aLoss(); 57 ^ 58 ; 592 errors generated. 60INFO: Elapsed time: 5.662s, Critical Path: 1.01s 61INFO: 12 processes: 12 internal. 62FAILED: Build did NOT complete successfully 63FAILED: Build did NOT complete successfully 64""" 65 66_REAL_TEST_SUMMARY = """ 67ERROR: /usr/local/google/home/mohrr/pigweed/pigweed/pw_kvs/BUILD.bazel:25:14: Compiling pw_kvs/entry.cc failed: (Exit 1): gcc failed: error executing command 68# Execution platform: @local_config_platform//:host 69pw_kvs/entry.cc:49:20: error: no member named 'Dat' in 'pw::Status' 70 return Status::Dat aLoss(); 71 ~~~~~~~~^ 72pw_kvs/entry.cc:49:23: error: expected ';' after return statement 73 return Status::Dat aLoss(); 74 ^ 75 ; 762 errors generated. 77INFO: Elapsed time: 5.662s, Critical Path: 1.01s 78INFO: 12 processes: 12 internal. 79FAILED: Build did NOT complete successfully 80FAILED: Build did NOT complete successfully 81""" 82 83_REAL_TEST_INPUT_2 = """ 84[4,421 / 4,540] 302 / 343 tests; Compiling pw_transfer/client_test.cc; 7s linux-sandbox ... (15 actions running) 85[4,425 / 4,540] 302 / 343 tests; Compiling pw_transfer/client_test.cc; 9s linux-sandbox ... (16 actions, 15 running) 86[4,426 / 4,540] 302 / 343 tests; Compiling pw_transfer/client_test.cc; 10s linux-sandbox ... (16 actions running) 87[4,430 / 4,540] 302 / 343 tests; Compiling pw_rpc/raw/service_nc_test.cc; 7s linux-sandbox ... (14 actions, 13 running) 88[4,439 / 4,542] 304 / 343 tests; Compiling pw_rpc/nanopb/client_server_context_test.cc; 7s linux-sandbox ... (15 actions running) 89[4,443 / 4,542] 304 / 343 tests; Compiling pw_rpc/pwpb/synchronous_call_test.cc; 7s linux-sandbox ... (15 actions running) 90[4,449 / 4,544] 306 / 343 tests; Compiling pw_transfer/transfer.cc; 6s linux-sandbox ... (16 actions, 15 running) 91[4,458 / 4,546] 308 / 343 tests; Compiling pw_rpc/test_helpers_test.cc; 4s linux-sandbox ... (16 actions running) 92[4,460 / 4,547] 309 / 343 tests; Compiling pw_rpc/test_helpers_test.cc; 5s linux-sandbox ... (16 actions running) 93[4,466 / 4,548] 310 / 343 tests; Compiling pw_rpc/test_helpers_test.cc; 6s linux-sandbox ... (16 actions, 15 running) 94[4,469 / 4,549] 311 / 343 tests; Compiling pw_rpc/test_helpers_test.cc; 7s linux-sandbox ... (16 actions running) 95[4,478 / 4,550] 312 / 343 tests; Compiling pw_transfer/client_test.cc; 8s linux-sandbox ... (14 actions, 13 running) 96[4,481 / 4,550] 312 / 343 tests; Compiling pw_transfer/client_test.cc; 9s linux-sandbox ... (16 actions, 15 running) 97[4,486 / 4,551] 313 / 343 tests; Compiling pw_transfer/client_test.cc; 10s linux-sandbox ... (16 actions, 15 running) 98[4,492 / 4,552] 314 / 343 tests; Compiling pw_transfer/integration_test/server.cc; 7s linux-sandbox ... (16 actions, 15 running) 99[4,501 / 4,556] 318 / 343 tests; Compiling pw_transfer/atomic_file_transfer_handler_test.cc; 5s linux-sandbox ... (15 actions running) 100[4,506 / 4,556] 318 / 343 tests; Compiling pw_rpc/pwpb/client_server_context_threaded_test.cc; 5s linux-sandbox ... (16 actions, 15 running) 101[4,513 / 4,557] 319 / 343 tests; Compiling pw_transfer/client.cc; 6s linux-sandbox ... (15 actions, 14 running) 102[4,519 / 4,557] 319 / 343 tests; Compiling pw_rpc/pwpb/client_server_context_threaded_test.cc; 5s linux-sandbox ... (16 actions, 15 running) 103[4,524 / 4,558] 320 / 343 tests; Compiling pw_transfer/integration_test/client.cc; 6s linux-sandbox ... (16 actions running) 104[4,533 / 4,560] 322 / 343 tests; Compiling pw_rpc/pwpb/fake_channel_output_test.cc; 4s linux-sandbox ... (16 actions running) 105[4,537 / 4,560] 322 / 343 tests; Compiling pw_rpc/pwpb/fake_channel_output_test.cc; 5s linux-sandbox ... (14 actions running) 106[4,544 / 4,569] 325 / 343 tests; Compiling pw_rpc/pwpb/fake_channel_output_test.cc; 6s linux-sandbox ... (15 actions running) 107[4,550 / 4,569] 325 / 343 tests; Compiling pw_rpc/pwpb/method_lookup_test.cc; 5s linux-sandbox ... (14 actions, 13 running) 108[4,560 / 4,571] 327 / 343 tests; Compiling pw_rpc/pwpb/server_reader_writer_test.cc; 4s linux-sandbox ... (9 actions, 8 running) 109[4,566 / 4,573] 329 / 343 tests; Testing //pw_transfer/integration_test:cross_language_medium_read_test; 4s linux-sandbox ... (7 actions, 6 running) 110[4,567 / 4,573] 329 / 343 tests; Testing //pw_transfer/integration_test:cross_language_medium_read_test; 5s linux-sandbox ... (6 actions running) 111[4,567 / 4,573] 329 / 343 tests; Testing //pw_transfer/integration_test:cross_language_medium_read_test; 14s linux-sandbox ... (6 actions running) 112[4,567 / 4,573] 330 / 343 tests; Testing //pw_transfer/integration_test:cross_language_medium_read_test; 15s linux-sandbox ... (6 actions running) 113[4,568 / 4,573] 330 / 343 tests; Testing //pw_transfer/integration_test:cross_language_medium_read_test; 16s linux-sandbox ... (5 actions running) 114[4,568 / 4,573] 330 / 343 tests; Testing //pw_transfer/integration_test:cross_language_medium_read_test; 26s linux-sandbox ... (5 actions running) 115[4,568 / 4,573] 330 / 343 tests; Testing //pw_transfer/integration_test:cross_language_medium_read_test; 52s linux-sandbox ... (5 actions running) 116[4,569 / 4,573] 331 / 343 tests; Testing //pw_transfer/integration_test:cross_language_medium_read_test; 53s linux-sandbox ... (4 actions running) 117[4,570 / 4,573] 332 / 343 tests; Testing //pw_transfer/integration_test:cross_language_medium_read_test; 54s linux-sandbox ... (3 actions running) 118[4,570 / 4,573] 332 / 343 tests; Testing //pw_transfer/integration_test:cross_language_medium_read_test; 65s linux-sandbox ... (3 actions running) 119[4,570 / 4,573] 332 / 343 tests; Testing //pw_transfer/integration_test:cross_language_medium_read_test; 83s linux-sandbox ... (3 actions running) 120FAIL: //pw_transfer/integration_test:cross_language_medium_read_test (see <truncated>/pw_transfer/integration_test/cross_language_medium_read_test/test.log) 121INFO: From Testing //pw_transfer/integration_test:cross_language_medium_read_test: 122stdout (<truncated>/_tmp/actions/stdout-2115) 1131999 exceeds maximum size of --experimental_ui_max_stdouterr_bytes=1048576 bytes; skipping 123[4,572 / 4,573] 334 / 343 tests, 1 failed; Testing //pw_transfer/integration_test:expected_errors_test; 84s linux-sandbox 124[4,572 / 4,573] 334 / 343 tests, 1 failed; Testing //pw_transfer/integration_test:expected_errors_test; 94s linux-sandbox 125[4,572 / 4,573] 334 / 343 tests, 1 failed; Testing //pw_transfer/integration_test:expected_errors_test; 124s linux-sandbox 126[4,572 / 4,573] 334 / 343 tests, 1 failed; Testing //pw_transfer/integration_test:expected_errors_test; 168s linux-sandbox 127INFO: Elapsed time: 507.459s, Critical Path: 181.66s 128INFO: 1206 processes: 1235 linux-sandbox, 4 worker. 129INFO: Build completed, 1 test FAILED, 1206 total actions 130//pw_allocator:block_test (cached) PASSED in 0.1s 131//pw_allocator:freelist_heap_test (cached) PASSED in 0.1s 132//pw_allocator:freelist_test (cached) PASSED in 0.0s 133//pw_analog:analog_input_test (cached) PASSED in 0.1s 134//pw_analog:microvolt_input_test (cached) PASSED in 0.0s 135//pw_arduino_build/py:builder_test (cached) PASSED in 0.7s 136//pw_arduino_build/py:file_operations_test (cached) PASSED in 1.0s 137//pw_assert:assert_backend_compile_test (cached) PASSED in 0.2s 138//pw_assert:assert_facade_test (cached) PASSED in 0.1s 139//pw_async:fake_dispatcher_test (cached) PASSED in 0.1s 140//pw_async_basic:dispatcher_test (cached) PASSED in 0.1s 141//pw_async_basic:fake_dispatcher_fixture_test (cached) PASSED in 0.1s 142//pw_async_basic:heap_dispatcher_test (cached) PASSED in 0.1s 143//pw_base64:base64_test (cached) PASSED in 0.2s 144//pw_blob_store:blob_store_chunk_write_test (cached) PASSED in 0.8s 145//pw_blob_store:blob_store_deferred_write_test (cached) PASSED in 0.5s 146//pw_blob_store:blob_store_test (cached) PASSED in 1.0s 147//pw_blob_store:flat_file_system_entry_test (cached) PASSED in 0.1s 148//pw_bluetooth:address_test (cached) PASSED in 0.3s 149//pw_bluetooth:api_test (cached) PASSED in 0.4s 150//pw_bluetooth:result_test (cached) PASSED in 0.2s 151//pw_bluetooth:uuid_test (cached) PASSED in 0.1s 152//pw_bluetooth_hci:packet_test (cached) PASSED in 0.1s 153//pw_bluetooth_hci:uart_transport_fuzzer (cached) PASSED in 0.2s 154//pw_bluetooth_hci:uart_transport_test (cached) PASSED in 0.1s 155//pw_bluetooth_profiles:device_info_service_test (cached) PASSED in 0.0s 156//pw_build:file_prefix_map_test (cached) PASSED in 0.1s 157//pw_build_info:build_id_test (cached) PASSED in 0.1s 158//pw_bytes:array_test (cached) PASSED in 0.1s 159//pw_bytes:bit_test (cached) PASSED in 0.1s 160//pw_bytes:byte_builder_test (cached) PASSED in 0.0s 161//pw_bytes:endian_test (cached) PASSED in 0.1s 162//pw_bytes:units_test (cached) PASSED in 0.1s 163//pw_checksum:crc16_ccitt_test (cached) PASSED in 0.1s 164//pw_checksum:crc32_test (cached) PASSED in 0.1s 165//pw_chrono:simulated_system_clock_test (cached) PASSED in 0.1s 166//pw_chrono:system_clock_facade_test (cached) PASSED in 0.1s 167//pw_chrono:system_timer_facade_test (cached) PASSED in 0.7s 168//pw_cli/py:envparse_test (cached) PASSED in 0.8s 169//pw_cli/py:plugins_test (cached) PASSED in 0.7s 170//pw_containers:algorithm_test (cached) PASSED in 0.1s 171//pw_containers:filtered_view_test (cached) PASSED in 0.1s 172//pw_containers:flat_map_test (cached) PASSED in 0.1s 173//pw_containers:inline_deque_test (cached) PASSED in 0.3s 174//pw_containers:inline_queue_test (cached) PASSED in 0.1s 175//pw_containers:intrusive_list_test (cached) PASSED in 0.1s 176//pw_containers:raw_storage_test (cached) PASSED in 0.1s 177//pw_containers:to_array_test (cached) PASSED in 0.1s 178//pw_containers:vector_test (cached) PASSED in 0.1s 179//pw_containers:wrapped_iterator_test (cached) PASSED in 0.2s 180//pw_cpu_exception_cortex_m/py:exception_analyzer_test (cached) PASSED in 1.0s 181//pw_crypto:ecdsa_test (cached) PASSED in 0.1s 182//pw_crypto:sha256_mock_test (cached) PASSED in 0.1s 183//pw_crypto:sha256_test (cached) PASSED in 0.0s 184//pw_digital_io:digital_io_test (cached) PASSED in 0.2s 185//pw_file:flat_file_system_test (cached) PASSED in 0.2s 186//pw_function:function_test (cached) PASSED in 0.1s 187//pw_function:pointer_test (cached) PASSED in 0.3s 188//pw_function:scope_guard_test (cached) PASSED in 0.1s 189//pw_fuzzer/examples/fuzztest:metrics_fuzztest (cached) PASSED in 0.1s 190//pw_fuzzer/examples/fuzztest:metrics_unittest (cached) PASSED in 0.2s 191//pw_fuzzer/examples/libfuzzer:toy_fuzzer (cached) PASSED in 0.2s 192//pw_hdlc:decoder_test (cached) PASSED in 0.3s 193//pw_hdlc:encoded_size_test (cached) PASSED in 0.2s 194//pw_hdlc:encoder_test (cached) PASSED in 0.1s 195//pw_hdlc:rpc_channel_test (cached) PASSED in 0.1s 196//pw_hdlc:wire_packet_parser_test (cached) PASSED in 0.2s 197//pw_hdlc/java/test/dev/pigweed/pw_hdlc:DecoderTest (cached) PASSED in 0.5s 198//pw_hdlc/java/test/dev/pigweed/pw_hdlc:EncoderTest (cached) PASSED in 0.6s 199//pw_hdlc/java/test/dev/pigweed/pw_hdlc:FrameTest (cached) PASSED in 0.9s 200//pw_hex_dump:hex_dump_test (cached) PASSED in 0.1s 201//pw_i2c:address_test (cached) PASSED in 0.1s 202//pw_i2c:device_test (cached) PASSED in 0.1s 203//pw_i2c:i2c_service_test (cached) PASSED in 0.0s 204//pw_i2c:initiator_mock_test (cached) PASSED in 0.1s 205//pw_i2c:register_device_test (cached) PASSED in 0.1s 206//pw_i2c_linux:initiator_test (cached) PASSED in 0.1s 207//pw_intrusive_ptr:intrusive_ptr_test (cached) PASSED in 0.0s 208//pw_intrusive_ptr:recyclable_test (cached) PASSED in 0.1s 209//pw_kvs:alignment_test (cached) PASSED in 0.1s 210//pw_kvs:checksum_test (cached) PASSED in 0.2s 211//pw_kvs:converts_to_span_test (cached) PASSED in 0.1s 212//pw_kvs:entry_cache_test (cached) PASSED in 0.1s 213//pw_kvs:entry_test (cached) PASSED in 0.2s 214//pw_kvs:fake_flash_test_key_value_store_test (cached) PASSED in 0.1s 215//pw_kvs:flash_partition_16_alignment_test (cached) PASSED in 2.4s 216//pw_kvs:flash_partition_1_alignment_test (cached) PASSED in 32.1s 217//pw_kvs:flash_partition_256_alignment_test (cached) PASSED in 0.5s 218//pw_kvs:flash_partition_256_write_size_test (cached) PASSED in 0.4s 219//pw_kvs:flash_partition_64_alignment_test (cached) PASSED in 1.0s 220//pw_kvs:flash_partition_stream_test (cached) PASSED in 0.3s 221//pw_kvs:key_test (cached) PASSED in 0.1s 222//pw_kvs:key_value_store_16_alignment_flash_test (cached) PASSED in 0.1s 223//pw_kvs:key_value_store_1_alignment_flash_test (cached) PASSED in 0.3s 224//pw_kvs:key_value_store_256_alignment_flash_test (cached) PASSED in 0.1s 225//pw_kvs:key_value_store_64_alignment_flash_test (cached) PASSED in 0.2s 226//pw_kvs:key_value_store_binary_format_test (cached) PASSED in 0.1s 227//pw_kvs:key_value_store_map_test (cached) PASSED in 6.4s 228//pw_kvs:key_value_store_put_test (cached) PASSED in 0.2s 229//pw_kvs:key_value_store_test (cached) PASSED in 0.3s 230//pw_kvs:key_value_store_wear_test (cached) PASSED in 0.5s 231//pw_kvs:sectors_test (cached) PASSED in 0.1s 232//pw_libc:memset_test (cached) PASSED in 0.1s 233//pw_log:glog_adapter_test (cached) PASSED in 0.1s 234//pw_log:proto_utils_test (cached) PASSED in 0.0s 235//pw_log:test (cached) PASSED in 0.2s 236//pw_log_null:test (cached) PASSED in 0.0s 237//pw_log_rpc:log_filter_service_test (cached) PASSED in 0.1s 238//pw_log_rpc:log_filter_test (cached) PASSED in 0.0s 239//pw_log_rpc:log_service_test (cached) PASSED in 0.0s 240//pw_log_rpc:rpc_log_drain_test (cached) PASSED in 0.2s 241//pw_log_tokenized:log_tokenized_test (cached) PASSED in 0.1s 242//pw_log_tokenized:metadata_test (cached) PASSED in 0.2s 243//pw_log_tokenized/py:format_string_test (cached) PASSED in 0.9s 244//pw_log_tokenized/py:metadata_test (cached) PASSED in 0.6s 245//pw_metric:global_test (cached) PASSED in 0.6s 246//pw_metric:metric_service_pwpb_test (cached) PASSED in 0.1s 247//pw_metric:metric_test (cached) PASSED in 0.2s 248//pw_multisink:multisink_test (cached) PASSED in 0.2s 249//pw_multisink:stl_multisink_threaded_test (cached) PASSED in 0.1s 250//pw_perf_test:chrono_timer_test (cached) PASSED in 0.1s 251//pw_perf_test:perf_test_test (cached) PASSED in 0.1s 252//pw_perf_test:state_test (cached) PASSED in 0.2s 253//pw_perf_test:timer_test (cached) PASSED in 0.1s 254//pw_persistent_ram:flat_file_system_entry_test (cached) PASSED in 0.1s 255//pw_persistent_ram:persistent_buffer_test (cached) PASSED in 0.3s 256//pw_persistent_ram:persistent_test (cached) PASSED in 0.1s 257//pw_polyfill:test (cached) PASSED in 0.1s 258//pw_preprocessor:arguments_test (cached) PASSED in 0.2s 259//pw_preprocessor:boolean_test (cached) PASSED in 0.2s 260//pw_preprocessor:compiler_test (cached) PASSED in 0.2s 261//pw_preprocessor:concat_test (cached) PASSED in 0.1s 262//pw_preprocessor:util_test (cached) PASSED in 0.1s 263//pw_protobuf:codegen_decoder_test (cached) PASSED in 0.1s 264//pw_protobuf:codegen_encoder_test (cached) PASSED in 0.2s 265//pw_protobuf:decoder_fuzz_test (cached) PASSED in 0.2s 266//pw_protobuf:decoder_test (cached) PASSED in 0.1s 267//pw_protobuf:encoder_fuzz_test (cached) PASSED in 0.3s 268//pw_protobuf:encoder_test (cached) PASSED in 0.1s 269//pw_protobuf:find_test (cached) PASSED in 0.1s 270//pw_protobuf:map_utils_test (cached) PASSED in 0.1s 271//pw_protobuf:message_test (cached) PASSED in 0.1s 272//pw_protobuf:serialized_size_test (cached) PASSED in 0.2s 273//pw_protobuf:stream_decoder_test (cached) PASSED in 0.2s 274//pw_protobuf_compiler:nested_packages_test (cached) PASSED in 0.1s 275//pw_protobuf_compiler/py:compiled_protos_test (cached) PASSED in 0.4s 276//pw_random:xor_shift_test (cached) PASSED in 0.2s 277//pw_result:expected_test (cached) PASSED in 0.1s 278//pw_result:result_test (cached) PASSED in 0.1s 279//pw_result:statusor_test (cached) PASSED in 0.2s 280//pw_ring_buffer:prefixed_entry_ring_buffer_test (cached) PASSED in 0.2s 281//pw_router:static_router_test (cached) PASSED in 0.2s 282//pw_rpc:call_test (cached) PASSED in 0.1s 283//pw_rpc:callback_test (cached) PASSED in 0.3s 284//pw_rpc:channel_test (cached) PASSED in 0.2s 285//pw_rpc:client_server_test (cached) PASSED in 0.1s 286//pw_rpc:fake_channel_output_test (cached) PASSED in 0.1s 287//pw_rpc:method_test (cached) PASSED in 0.1s 288//pw_rpc:packet_meta_test (cached) PASSED in 0.1s 289//pw_rpc:packet_test (cached) PASSED in 0.0s 290//pw_rpc:server_test (cached) PASSED in 0.1s 291//pw_rpc:service_test (cached) PASSED in 0.1s 292//pw_rpc:test_helpers_test (cached) PASSED in 0.2s 293//pw_rpc/java/test/dev/pigweed/pw_rpc:ClientTest (cached) PASSED in 1.5s 294//pw_rpc/java/test/dev/pigweed/pw_rpc:EndpointTest (cached) PASSED in 1.5s 295//pw_rpc/java/test/dev/pigweed/pw_rpc:FutureCallTest (cached) PASSED in 1.5s 296//pw_rpc/java/test/dev/pigweed/pw_rpc:IdsTest (cached) PASSED in 0.7s 297//pw_rpc/java/test/dev/pigweed/pw_rpc:PacketsTest (cached) PASSED in 0.6s 298//pw_rpc/java/test/dev/pigweed/pw_rpc:ServiceTest (cached) PASSED in 0.6s 299//pw_rpc/java/test/dev/pigweed/pw_rpc:StreamObserverCallTest (cached) PASSED in 1.5s 300//pw_rpc/java/test/dev/pigweed/pw_rpc:StreamObserverMethodClientTest (cached) PASSED in 1.6s 301//pw_rpc/nanopb:callback_test (cached) PASSED in 0.3s 302//pw_rpc/nanopb:client_call_test (cached) PASSED in 0.1s 303//pw_rpc/nanopb:client_reader_writer_test (cached) PASSED in 0.1s 304//pw_rpc/nanopb:client_server_context_test (cached) PASSED in 0.1s 305//pw_rpc/nanopb:client_server_context_threaded_test (cached) PASSED in 0.1s 306//pw_rpc/nanopb:codegen_test (cached) PASSED in 0.1s 307//pw_rpc/nanopb:fake_channel_output_test (cached) PASSED in 0.2s 308//pw_rpc/nanopb:method_info_test (cached) PASSED in 0.2s 309//pw_rpc/nanopb:method_lookup_test (cached) PASSED in 0.2s 310//pw_rpc/nanopb:method_test (cached) PASSED in 0.1s 311//pw_rpc/nanopb:method_union_test (cached) PASSED in 0.2s 312//pw_rpc/nanopb:serde_test (cached) PASSED in 0.2s 313//pw_rpc/nanopb:server_callback_test (cached) PASSED in 0.2s 314//pw_rpc/nanopb:server_reader_writer_test (cached) PASSED in 0.0s 315//pw_rpc/nanopb:stub_generation_test (cached) PASSED in 0.1s 316//pw_rpc/pwpb:client_call_test (cached) PASSED in 0.1s 317//pw_rpc/pwpb:client_reader_writer_test (cached) PASSED in 0.2s 318//pw_rpc/pwpb:client_server_context_test (cached) PASSED in 0.1s 319//pw_rpc/pwpb:client_server_context_threaded_test (cached) PASSED in 0.0s 320//pw_rpc/pwpb:codegen_test (cached) PASSED in 0.1s 321//pw_rpc/pwpb:echo_service_test (cached) PASSED in 0.0s 322//pw_rpc/pwpb:fake_channel_output_test (cached) PASSED in 0.2s 323//pw_rpc/pwpb:method_info_test (cached) PASSED in 0.1s 324//pw_rpc/pwpb:method_lookup_test (cached) PASSED in 0.1s 325//pw_rpc/pwpb:method_test (cached) PASSED in 0.1s 326//pw_rpc/pwpb:method_union_test (cached) PASSED in 0.1s 327//pw_rpc/pwpb:serde_test (cached) PASSED in 0.1s 328//pw_rpc/pwpb:server_callback_test (cached) PASSED in 0.2s 329//pw_rpc/pwpb:server_reader_writer_test (cached) PASSED in 0.1s 330//pw_rpc/pwpb:stub_generation_test (cached) PASSED in 0.2s 331//pw_rpc/raw:client_reader_writer_test (cached) PASSED in 0.2s 332//pw_rpc/raw:client_test (cached) PASSED in 0.1s 333//pw_rpc/raw:codegen_test (cached) PASSED in 0.2s 334//pw_rpc/raw:method_info_test (cached) PASSED in 0.1s 335//pw_rpc/raw:method_test (cached) PASSED in 0.1s 336//pw_rpc/raw:method_union_test (cached) PASSED in 0.1s 337//pw_rpc/raw:server_reader_writer_test (cached) PASSED in 0.2s 338//pw_rpc/raw:service_nc_test (cached) PASSED in 0.1s 339//pw_rpc/raw:stub_generation_test (cached) PASSED in 0.1s 340//pw_rpc_transport:egress_ingress_test (cached) PASSED in 0.1s 341//pw_rpc_transport:hdlc_framing_test (cached) PASSED in 0.1s 342//pw_rpc_transport:local_rpc_egress_test (cached) PASSED in 0.1s 343//pw_rpc_transport:packet_buffer_queue_test (cached) PASSED in 0.1s 344//pw_rpc_transport:rpc_integration_test (cached) PASSED in 0.2s 345//pw_rpc_transport:simple_framing_test (cached) PASSED in 0.1s 346//pw_rpc_transport:socket_rpc_transport_test (cached) PASSED in 0.2s 347//pw_rpc_transport:stream_rpc_dispatcher_test (cached) PASSED in 0.1s 348//pw_snapshot:cpp_compile_test (cached) PASSED in 0.1s 349//pw_snapshot:uuid_test (cached) PASSED in 0.2s 350//pw_span:compatibility_test (cached) PASSED in 0.1s 351//pw_span:pw_span_test (cached) PASSED in 0.1s 352//pw_spi:initiator_mock_test (cached) PASSED in 0.2s 353//pw_spi:spi_test (cached) PASSED in 0.0s 354//pw_status:status_test (cached) PASSED in 0.2s 355//pw_status:status_with_size_test (cached) PASSED in 0.2s 356//pw_status:try_test (cached) PASSED in 0.2s 357//pw_status/rust:pw_status_doc_test (cached) PASSED in 1.0s 358//pw_status/rust:pw_status_test (cached) PASSED in 0.0s 359//pw_stream:interval_reader_test (cached) PASSED in 0.2s 360//pw_stream:memory_stream_test (cached) PASSED in 0.1s 361//pw_stream:mpsc_stream_test (cached) PASSED in 0.1s 362//pw_stream:null_stream_test (cached) PASSED in 0.2s 363//pw_stream:seek_test (cached) PASSED in 0.1s 364//pw_stream:socket_stream_test (cached) PASSED in 0.1s 365//pw_stream:std_file_stream_test (cached) PASSED in 0.2s 366//pw_stream:stream_test (cached) PASSED in 0.2s 367//pw_stream/rust:pw_stream_doc_test (cached) PASSED in 0.8s 368//pw_stream/rust:pw_stream_test (cached) PASSED in 0.0s 369//pw_stream_uart_linux:stream_test (cached) PASSED in 0.1s 370//pw_string:format_test (cached) PASSED in 0.1s 371//pw_string:string_builder_test (cached) PASSED in 0.1s 372//pw_string:string_test (cached) PASSED in 0.1s 373//pw_string:to_string_test (cached) PASSED in 0.1s 374//pw_string:type_to_string_test (cached) PASSED in 0.1s 375//pw_string:util_test (cached) PASSED in 0.1s 376//pw_symbolizer/py:symbolizer_test (cached) PASSED in 0.6s 377//pw_sync:binary_semaphore_facade_test (cached) PASSED in 0.3s 378//pw_sync:borrow_test (cached) PASSED in 0.2s 379//pw_sync:counting_semaphore_facade_test (cached) PASSED in 0.2s 380//pw_sync:inline_borrowable_test (cached) PASSED in 0.3s 381//pw_sync:interrupt_spin_lock_facade_test (cached) PASSED in 0.2s 382//pw_sync:lock_traits_test (cached) PASSED in 0.2s 383//pw_sync:mutex_facade_test (cached) PASSED in 0.1s 384//pw_sync:recursive_mutex_facade_test (cached) PASSED in 0.4s 385//pw_sync:thread_notification_facade_test (cached) PASSED in 0.1s 386//pw_sync:timed_mutex_facade_test (cached) PASSED in 0.1s 387//pw_sync:timed_thread_notification_facade_test (cached) PASSED in 0.2s 388//pw_thread:id_facade_test (cached) PASSED in 0.2s 389//pw_thread:sleep_facade_test (cached) PASSED in 0.3s 390//pw_thread:test_thread_context_facade_test (cached) PASSED in 0.2s 391//pw_thread:thread_info_test (cached) PASSED in 0.1s 392//pw_thread:thread_snapshot_service_test (cached) PASSED in 0.1s 393//pw_thread:yield_facade_test (cached) PASSED in 0.3s 394//pw_thread_stl:thread_backend_test (cached) PASSED in 0.2s 395//pw_tokenizer:argument_types_test (cached) PASSED in 0.1s 396//pw_tokenizer:base64_test (cached) PASSED in 0.1s 397//pw_tokenizer:decode_test (cached) PASSED in 0.2s 398//pw_tokenizer:detokenize_fuzzer (cached) PASSED in 0.3s 399//pw_tokenizer:detokenize_test (cached) PASSED in 0.2s 400//pw_tokenizer:encode_args_test (cached) PASSED in 0.1s 401//pw_tokenizer:hash_test (cached) PASSED in 0.1s 402//pw_tokenizer:simple_tokenize_test (cached) PASSED in 0.1s 403//pw_tokenizer:token_database_test (cached) PASSED in 0.1s 404//pw_tokenizer:tokenize_test (cached) PASSED in 0.1s 405//pw_tokenizer/rust:pw_tokenizer_core_doc_test (cached) PASSED in 1.0s 406//pw_tokenizer/rust:pw_tokenizer_core_test (cached) PASSED in 0.2s 407//pw_tokenizer/rust:pw_tokenizer_doc_test (cached) PASSED in 0.6s 408//pw_tokenizer/rust:pw_tokenizer_macro_test (cached) PASSED in 0.1s 409//pw_tokenizer/rust:pw_tokenizer_printf_doc_test (cached) PASSED in 1.0s 410//pw_tokenizer/rust:pw_tokenizer_printf_test (cached) PASSED in 0.4s 411//pw_tokenizer/rust:pw_tokenizer_test (cached) PASSED in 0.1s 412//pw_toolchain:no_destructor_test (cached) PASSED in 0.1s 413//pw_trace:trace_backend_compile_test (cached) PASSED in 0.1s 414//pw_trace:trace_facade_test (cached) PASSED in 0.1s 415//pw_trace:trace_zero_facade_test (cached) PASSED in 0.2s 416//pw_transfer:atomic_file_transfer_handler_test (cached) PASSED in 0.1s 417//pw_transfer:chunk_test (cached) PASSED in 0.1s 418//pw_transfer:client_test (cached) PASSED in 0.6s 419//pw_transfer:handler_test (cached) PASSED in 0.2s 420//pw_transfer:transfer_test (cached) PASSED in 0.2s 421//pw_transfer:transfer_thread_test (cached) PASSED in 0.0s 422//pw_transfer/java/test/dev/pigweed/pw_transfer:TransferClientTest (cached) PASSED in 5.4s 423//pw_unit_test:framework_test (cached) PASSED in 0.1s 424//pw_unit_test:static_library_support_test (cached) PASSED in 0.1s 425//pw_varint:stream_test (cached) PASSED in 0.2s 426//pw_varint:varint_test (cached) PASSED in 0.2s 427//pw_varint/rust:pw_varint_doc_test (cached) PASSED in 1.1s 428//pw_varint/rust:pw_varint_test (cached) PASSED in 0.1s 429//pw_work_queue:stl_work_queue_test (cached) PASSED in 0.2s 430//pw_cpu_exception_cortex_m:cpu_exception_entry_test SKIPPED 431//pw_cpu_exception_cortex_m:util_test SKIPPED 432//pw_digital_io_mcuxpresso:mimxrt595_test SKIPPED 433//pw_i2c_mcuxpresso:initiator_test SKIPPED 434//pw_spi_mcuxpresso:flexspi_test SKIPPED 435//pw_spi_mcuxpresso:spi_test SKIPPED 436//pw_stream_shmem_mcuxpresso:stream_test SKIPPED 437//pw_stream_uart_mcuxpresso:stream_test SKIPPED 438//pw_console/py:command_runner_test PASSED in 5.3s 439//pw_console/py:console_app_test PASSED in 5.0s 440//pw_console/py:console_prefs_test PASSED in 4.5s 441//pw_console/py:help_window_test PASSED in 2.8s 442//pw_console/py:log_filter_test PASSED in 4.2s 443//pw_console/py:log_store_test PASSED in 4.1s 444//pw_console/py:log_view_test PASSED in 4.4s 445//pw_console/py:repl_pane_test PASSED in 5.2s 446//pw_console/py:table_test PASSED in 3.0s 447//pw_console/py:text_formatting_test PASSED in 3.5s 448//pw_console/py:window_manager_test PASSED in 5.9s 449//pw_hdlc/py:decode_test PASSED in 0.6s 450//pw_hdlc/py:encode_test PASSED in 0.5s 451//pw_hdlc/py:rpc_test PASSED in 1.5s 452//pw_rpc/nanopb:synchronous_call_test PASSED in 0.1s 453//pw_rpc/pwpb:synchronous_call_test PASSED in 0.1s 454//pw_rpc/py:callback_client_test PASSED in 3.2s 455//pw_rpc/py:client_test PASSED in 2.1s 456//pw_rpc/py:descriptors_test PASSED in 1.1s 457//pw_rpc/py:ids_test PASSED in 1.1s 458//pw_rpc/py:packets_test PASSED in 1.2s 459//pw_rpc/raw:synchronous_call_test PASSED in 0.2s 460//pw_tokenizer/py:decode_test PASSED in 0.9s 461//pw_tokenizer/py:detokenize_test PASSED in 0.8s 462//pw_tokenizer/py:elf_reader_test PASSED in 1.1s 463//pw_tokenizer/py:encode_test PASSED in 0.9s 464//pw_tokenizer/py:tokens_test PASSED in 0.9s 465//pw_transfer/integration_test:cross_language_medium_write_test PASSED in 82.6s 466//pw_transfer/integration_test:cross_language_small_test PASSED in 51.0s 467//pw_transfer/integration_test:expected_errors_test PASSED in 167.6s 468//pw_transfer/integration_test:legacy_binaries_test PASSED in 53.2s 469//pw_transfer/integration_test:multi_transfer_test PASSED in 13.1s 470//pw_transfer/integration_test:proxy_test PASSED in 2.4s 471//pw_transfer/py:transfer_test PASSED in 1.4s 472//pw_transfer/integration_test:cross_language_medium_read_test FAILED in 82.1s 473<truncated>/pw_transfer/integration_test/cross_language_medium_read_test/test.log 474 475Executed 35 out of 343 tests: 334 tests pass, 1 fails locally and 8 were skipped. 476There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are. 477""" 478 479_REAL_TEST_SUMMARY_2 = """ 480FAIL: //pw_transfer/integration_test:cross_language_medium_read_test (see <truncated>/pw_transfer/integration_test/cross_language_medium_read_test/test.log) 481INFO: From Testing //pw_transfer/integration_test:cross_language_medium_read_test: 482stdout (<truncated>/_tmp/actions/stdout-2115) 1131999 exceeds maximum size of --experimental_ui_max_stdouterr_bytes=1048576 bytes; skipping 483INFO: Elapsed time: 507.459s, Critical Path: 181.66s 484INFO: 1206 processes: 1235 linux-sandbox, 4 worker. 485INFO: Build completed, 1 test FAILED, 1206 total actions 486//pw_transfer/integration_test:cross_language_medium_read_test FAILED in 82.1s 487<truncated>/pw_transfer/integration_test/cross_language_medium_read_test/test.log 488Executed 35 out of 343 tests: 334 tests pass, 1 fails locally and 8 were skipped. 489""" 490 491# pylint: disable=attribute-defined-outside-init 492 493 494class TestBazelParser(unittest.TestCase): 495 """Test bazel_parser.""" 496 497 def _run(self, contents: str) -> None: 498 with tempfile.TemporaryDirectory() as tempdir: 499 path = Path(tempdir) / 'foo' 500 501 with path.open('w') as outs: 502 outs.write(contents) 503 504 self.output = bazel_parser.parse_bazel_stdout(path) 505 506 def _assert_equal(self, left, right): 507 if ( 508 not isinstance(left, str) 509 or not isinstance(right, str) 510 or '\n' not in left 511 or '\n' not in right 512 ): 513 return self.assertEqual(left, right) 514 515 diff = ''.join( 516 difflib.unified_diff(left.splitlines(True), right.splitlines(True)) 517 ) 518 return self.assertSequenceEqual(left, right, f'\n{diff}\n') 519 520 def test_simple(self) -> None: 521 error = 'ERROR: abc\nerror 1\nerror2\n' 522 self._run('[0/10] foo\n[1/10] bar\n' + error) 523 self._assert_equal(error.strip(), self.output.strip()) 524 525 def test_path(self) -> None: 526 error_in = 'ERROR: abc\n PATH=... \\\nerror 1\nerror2\n' 527 error_out = 'ERROR: abc\nerror 1\nerror2\n' 528 self._run('[0/10] foo\n[1/10] bar\n' + error_in) 529 self._assert_equal(error_out.strip(), self.output.strip()) 530 531 def test_failure(self) -> None: 532 self._run(_REAL_TEST_INPUT) 533 self._assert_equal(_REAL_TEST_SUMMARY.strip(), self.output.strip()) 534 535 def test_failure_2(self) -> None: 536 self._run(_REAL_TEST_INPUT_2) 537 self._assert_equal(_REAL_TEST_SUMMARY_2.strip(), self.output.strip()) 538 539 540if __name__ == '__main__': 541 unittest.main() 542