Skip to content
/ rust Public
forked from rust-lang/rust

Commit

Permalink
Rollup merge of rust-lang#127461 - c6c7:fixup-failing-fuchsia-tests, …
Browse files Browse the repository at this point in the history
…r=tmandry

Fixup failing fuchsia tests

The Fuchsia platform passes all tests with these changes. Two tests are ignored because they rely on Fuchsia not returning a status code upon a process aborting. See rust-lang#102032 and rust-lang#58590 for more details on that topic.

Many formatting changes are also included in this PR.

r? tmandry
r? erickt
  • Loading branch information
jhpratt authored Jul 10, 2024
2 parents e71d3d5 + 479b0cd commit 7490729
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 49 deletions.
63 changes: 17 additions & 46 deletions src/ci/docker/scripts/fuchsia-test-runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
"""

import argparse
from concurrent.futures import ThreadPoolExecutor
from dataclasses import dataclass
import glob
import io
import json
Expand All @@ -20,6 +18,8 @@
import shutil
import subprocess
import sys
from concurrent.futures import ThreadPoolExecutor
from dataclasses import dataclass
from pathlib import Path
from typing import ClassVar, List, Optional

Expand All @@ -42,12 +42,8 @@ def exhaust_pipe(handler, pipe):
for line in pipe:
handler(line.rstrip())

executor_out = executor.submit(
exhaust_pipe, stdout_handler, process.stdout
)
executor_err = executor.submit(
exhaust_pipe, stderr_handler, process.stderr
)
executor_out = executor.submit(exhaust_pipe, stdout_handler, process.stdout)
executor_err = executor.submit(exhaust_pipe, stderr_handler, process.stderr)
executor_out.result()
executor_err.result()
retcode = process.poll()
Expand Down Expand Up @@ -203,9 +199,7 @@ def build_id(self, binary):
raise Exception(f"Unreadable build-id for binary {binary}")
data = json.loads(process.stdout)
if len(data) != 1:
raise Exception(
f"Unreadable output from llvm-readelf for binary {binary}"
)
raise Exception(f"Unreadable output from llvm-readelf for binary {binary}")
notes = data[0]["Notes"]
for note in notes:
note_section = note["NoteSection"]
Expand Down Expand Up @@ -265,19 +259,10 @@ def write_to_file(self):
def setup_logging(self, log_to_file=False):
fs = logging.Formatter("%(asctime)s %(levelname)s:%(name)s:%(message)s")
if log_to_file:
logfile_handler = logging.FileHandler(
self.tmp_dir().joinpath("log")
)
logfile_handler = logging.FileHandler(self.tmp_dir().joinpath("log"))
logfile_handler.setLevel(logging.DEBUG)
logfile_handler.setFormatter(fs)
logging.getLogger().addHandler(logfile_handler)
stream_handler = logging.StreamHandler(sys.stdout)
stream_handler.setFormatter(fs)
if self.verbose:
stream_handler.setLevel(logging.DEBUG)
else:
stream_handler.setLevel(logging.INFO)
logging.getLogger().addHandler(stream_handler)
logging.getLogger().setLevel(logging.DEBUG)

@property
Expand Down Expand Up @@ -454,9 +439,7 @@ def start(self):
# Initialize temp directory
os.makedirs(self.tmp_dir(), exist_ok=True)
if len(os.listdir(self.tmp_dir())) != 0:
raise Exception(
f"Temp directory is not clean (in {self.tmp_dir()})"
)
raise Exception(f"Temp directory is not clean (in {self.tmp_dir()})")
self.setup_logging(log_to_file=True)
os.mkdir(self.output_dir)

Expand Down Expand Up @@ -493,9 +476,7 @@ def start(self):
shutil.rmtree(self.local_pb_path, ignore_errors=True)

# Look up the product bundle transfer manifest.
self.env_logger.info(
"Looking up the product bundle transfer manifest..."
)
self.env_logger.info("Looking up the product bundle transfer manifest...")
product_name = "minimal." + self.triple_to_arch(self.target)
sdk_version = self.read_sdk_version()

Expand All @@ -517,9 +498,7 @@ def start(self):
)

try:
transfer_manifest_url = json.loads(output)[
"transfer_manifest_url"
]
transfer_manifest_url = json.loads(output)["transfer_manifest_url"]
except Exception as e:
print(e)
raise Exception("Unable to parse transfer manifest") from e
Expand Down Expand Up @@ -769,9 +748,7 @@ def run(self, args):
# Use /tmp as the test temporary directory
env_vars += '\n "RUST_TEST_TMPDIR=/tmp",'

cml.write(
self.CML_TEMPLATE.format(env_vars=env_vars, exe_name=exe_name)
)
cml.write(self.CML_TEMPLATE.format(env_vars=env_vars, exe_name=exe_name))

runner_logger.info("Compiling CML...")

Expand Down Expand Up @@ -922,20 +899,16 @@ def run(self, args):

if stdout_path is not None:
if not os.path.exists(stdout_path):
runner_logger.error(
f"stdout file {stdout_path} does not exist."
)
runner_logger.error(f"stdout file {stdout_path} does not exist.")
else:
with open(stdout_path, encoding="utf-8", errors="ignore") as f:
runner_logger.info(f.read())
sys.stdout.write(f.read())
if stderr_path is not None:
if not os.path.exists(stderr_path):
runner_logger.error(
f"stderr file {stderr_path} does not exist."
)
runner_logger.error(f"stderr file {stderr_path} does not exist.")
else:
with open(stderr_path, encoding="utf-8", errors="ignore") as f:
runner_logger.error(f.read())
sys.stderr.write(f.read())

runner_logger.info("Done!")
return return_code
Expand Down Expand Up @@ -1037,7 +1010,7 @@ def debug(self, args):
f"--symbol-path={self.rust_dir}/lib/rustlib/{self.target}/lib",
]

# Add rust source if it's available
# Add rust source if it's available
rust_src_map = None
if args.rust_src is not None:
# This matches the remapped prefix used by compiletest. There's no
Expand Down Expand Up @@ -1210,7 +1183,7 @@ def print_help(args):
start_parser.add_argument(
"--use-local-product-bundle-if-exists",
help="if the product bundle already exists in the local path, use "
"it instead of downloading it again",
"it instead of downloading it again",
action="store_true",
)
start_parser.set_defaults(func=start)
Expand Down Expand Up @@ -1246,9 +1219,7 @@ def print_help(args):
)
cleanup_parser.set_defaults(func=cleanup)

syslog_parser = subparsers.add_parser(
"syslog", help="prints the device syslog"
)
syslog_parser = subparsers.add_parser("syslog", help="prints the device syslog")
syslog_parser.set_defaults(func=syslog)

debug_parser = subparsers.add_parser(
Expand Down
1 change: 1 addition & 0 deletions tests/ui/test-attrs/test-panic-abort-nocapture.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
//@ ignore-wasm no panic or subprocess support
//@ ignore-emscripten no panic or subprocess support
//@ ignore-sgx no subprocess support
//@ ignore-fuchsia code returned as ZX_TASK_RETCODE_EXCEPTION_KILL, FIXME (#127539)

#![cfg(test)]

Expand Down
4 changes: 2 additions & 2 deletions tests/ui/test-attrs/test-panic-abort-nocapture.run.stderr
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
thread 'main' panicked at $DIR/test-panic-abort-nocapture.rs:34:5:
thread 'main' panicked at $DIR/test-panic-abort-nocapture.rs:35:5:
assertion `left == right` failed
left: 2
right: 4
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread 'main' panicked at $DIR/test-panic-abort-nocapture.rs:28:5:
thread 'main' panicked at $DIR/test-panic-abort-nocapture.rs:29:5:
assertion `left == right` failed
left: 2
right: 4
Expand Down
1 change: 1 addition & 0 deletions tests/ui/test-attrs/test-panic-abort.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
//@ ignore-wasm no panic or subprocess support
//@ ignore-emscripten no panic or subprocess support
//@ ignore-sgx no subprocess support
//@ ignore-fuchsia code returned as ZX_TASK_RETCODE_EXCEPTION_KILL, FIXME (#127539)

#![cfg(test)]
#![feature(test)]
Expand Down
2 changes: 1 addition & 1 deletion tests/ui/test-attrs/test-panic-abort.run.stdout
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ hello, world
testing123
---- it_fails stderr ----
testing321
thread 'main' panicked at $DIR/test-panic-abort.rs:39:5:
thread 'main' panicked at $DIR/test-panic-abort.rs:40:5:
assertion `left == right` failed
left: 2
right: 5
Expand Down

0 comments on commit 7490729

Please sign in to comment.