blob: b07a9fbc0b04a0914bf31cc3d6bcd445d3091e6a [file]
#!/usr/bin/env python3
#
# Copyright 2024 - The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the', help="License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an', help="AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from pathlib import Path
import platform
from tasks.task import Task
from utils import (AOSP_ROOT, run, rust_version)
PLATFORM_SYSTEM = platform.system()
class RunTestTask(Task):
def __init__(self, args, env):
super().__init__("RunTest")
self.buildbot = args.buildbot
self.out = Path(args.out_dir)
self.env = env
def do_run(self):
# TODO(b/379745416): Support clippy for Mac and Windows
if PLATFORM_SYSTEM == "Linux":
def run_clippy(flags):
run(
[
AOSP_ROOT / "tools" / "netsim" / "scripts" / "cargo_clippy.sh",
str(self.out),
rust_version(),
" ".join(flags),
],
self.env,
"clippy",
)
# Default Rust lints in Android. Reference: build/soong/rust/config/lints.go
default_clippy_flags = [
# Default rustc Lints from main build
"-A deprecated",
"-A unknown_lints",
"-D missing-docs",
"-D warnings",
"-D unsafe_op_in_unsafe_fn",
# Default Clippy lints from main build
"-A clippy::disallowed_names",
"-A clippy::empty_line_after_doc_comments",
"-A clippy::type-complexity",
# TODO: Enable once prebuilt clippy is updated to 1.75.0+
# "-A clippy::unnecessary_fallible_conversions",
"-A clippy::unnecessary-wraps",
"-A clippy::unusual-byte-groupings",
"-A clippy::upper-case-acronyms",
"-D clippy::undocumented_unsafe_blocks",
]
# Additional lints for our project.
additional_clippy_flags = [
"-W clippy::cognitive-complexity",
]
# Run cargo clippy with default flags
run_clippy(default_clippy_flags)
# Run cargo clippy with additional flags
run_clippy(additional_clippy_flags)
# Set script for cargo Test
if PLATFORM_SYSTEM == "Windows":
script = AOSP_ROOT / "tools" / "netsim" / "scripts" / "cargo_test.cmd"
else:
script = AOSP_ROOT / "tools" / "netsim" / "scripts" / "cargo_test.sh"
# Run cargo Test
for package in [
"hostapd-rs",
"libslirp-rs",
"http-proxy",
"netsim-cli",
"netsim-common",
"netsim-daemon",
"netsim-packets",
"capture",
]:
# TODO(b/379708365): Resolve netsim-daemon test for Mac & Windows
if (
package in ["netsim-daemon", "netsim-cli"]
and PLATFORM_SYSTEM != "Linux"
):
continue
cmd = [script, package, str(self.out), rust_version()]
run(cmd, self.env, f"{package}_unit_tests")
return True