blob: d0441cf53c0ae538d2261a4321933f03a29d8109 [file] [log] [blame]
#!/bin/bash
# Copyright 2023 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
#### CATEGORY=Test
### runs "fx rustdoc" on all rust targets
##
## Runs "fx rustdoc" on all rust targets, placing logs for failed
## crates in $FUCHSIA_OUT_DIR/rustdoc_errors/$target_name
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"/../lib/vars.sh || exit $?
fx-config-read
cargo_dir="$FUCHSIA_BUILD_DIR/cargo"
readarray -t rustdoc_targets < <(
fx-command-run jq -cr '.[]' "$cargo_dir/rustdoc_targets.json" \
"$cargo_dir/rustdoc_host_targets.json" | sort
)
total="${#rustdoc_targets[@]}"
failures=0
err_dir="$FUCHSIA_OUT_DIR/rustdoc_errors"
rm -rf "$err_dir"
mkdir -p "$err_dir"
for ((i = 0; i < "${#rustdoc_targets[@]}"; ++i)); do
cur=${rustdoc_targets[i]}
# echo $cur
label=$(jq -r .label <<<"$cur")
manifest=$cargo_dir/$(jq -r .cargo_manifest_dir <<<"$cur")/Cargo.toml
echo "[$i/$total] $label"
if ! fx-command-run rustdoc --no-deps "$manifest" 2>/tmp/rustdoc_stderr >/dev/null; then
((failures += 1))
sanitized_label=$(echo "$label" | sed 's,//,,' | sed 's,/,__,g')
mv /tmp/rustdoc_stderr "$err_dir/$sanitized_label"
echo "❌ falilure, see '$err_dir/$sanitized_label'"
echo "for logs, or run 'fx rustdoc $manifest'" to reproduce
fi
done
echo "Test finished with $failures failures, see $err_dir for their logs"