From 92e8e84e7d85a17e8c32a9c6874fa5e655c16872 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=AE=B8=E6=9D=B0=E5=8F=8B=20Jieyou=20Xu=20=28Joe=29?= <39484203+jieyouxu@users.noreply.github.com> Date: Mon, 30 Dec 2024 05:55:57 +0800 Subject: [PATCH] tests: add basic test coverage for cli flag `--crate-type` --- .../crate-type-flag.empty_crate_type.stderr | 2 + ...ate-type-flag.proc_underscore_macro.stderr | 2 + .../invalid-compile-flags/crate-type-flag.rs | 61 +++++++++++++++++++ .../crate-type-flag.unknown.stderr | 2 + 4 files changed, 67 insertions(+) create mode 100644 tests/ui/invalid-compile-flags/crate-type-flag.empty_crate_type.stderr create mode 100644 tests/ui/invalid-compile-flags/crate-type-flag.proc_underscore_macro.stderr create mode 100644 tests/ui/invalid-compile-flags/crate-type-flag.rs create mode 100644 tests/ui/invalid-compile-flags/crate-type-flag.unknown.stderr diff --git a/tests/ui/invalid-compile-flags/crate-type-flag.empty_crate_type.stderr b/tests/ui/invalid-compile-flags/crate-type-flag.empty_crate_type.stderr new file mode 100644 index 0000000000000..0f8772024dfab --- /dev/null +++ b/tests/ui/invalid-compile-flags/crate-type-flag.empty_crate_type.stderr @@ -0,0 +1,2 @@ +error: unknown crate type: `` + diff --git a/tests/ui/invalid-compile-flags/crate-type-flag.proc_underscore_macro.stderr b/tests/ui/invalid-compile-flags/crate-type-flag.proc_underscore_macro.stderr new file mode 100644 index 0000000000000..a4a9741699643 --- /dev/null +++ b/tests/ui/invalid-compile-flags/crate-type-flag.proc_underscore_macro.stderr @@ -0,0 +1,2 @@ +error: unknown crate type: `proc_macro` + diff --git a/tests/ui/invalid-compile-flags/crate-type-flag.rs b/tests/ui/invalid-compile-flags/crate-type-flag.rs new file mode 100644 index 0000000000000..42bd72cbfbf52 --- /dev/null +++ b/tests/ui/invalid-compile-flags/crate-type-flag.rs @@ -0,0 +1,61 @@ +//! Check that `rustc`'s `--crate-type` flag accepts `--crate-type=` as well as the +//! multi-value version `--crate-type=,`. +//! +//! This test does not try to check if the output artifacts are valid. + +// FIXME(#132309): add a proper `supports-crate-type` directive. + +// Single valid crate types should pass +//@ revisions: lib rlib staticlib dylib cdylib bin proc_dash_macro + +//@[lib] compile-flags: --crate-type=lib +//@[lib] check-pass + +//@[rlib] compile-flags: --crate-type=rlib +//@[rlib] check-pass + +//@[staticlib] compile-flags: --crate-type=staticlib +//@[staticlib] check-pass + +//@[dylib] ignore-musl (dylibs are not supported) +//@[dylib] ignore-wasm (dylibs are not supported) +//@[dylib] compile-flags: --crate-type=dylib +//@[dylib] check-pass + +//@[cdylib] ignore-musl (cdylibs are not supported) +//@[cdylib] compile-flags: --crate-type=cdylib +//@[cdylib] check-pass + +//@[bin] compile-flags: --crate-type=bin +//@[bin] check-pass + +//@[proc_dash_macro] ignore-wasm (proc-macro is not supported) +//@[proc_dash_macro] compile-flags: --crate-type=proc-macro +//@[proc_dash_macro] check-pass + +//@ revisions: multivalue multivalue_combined + +//@[multivalue] compile-flags: --crate-type=lib,rlib,staticlib +//@[multivalue] check-pass + +//@[multivalue_combined] ignore-musl (dylibs are not supported) +//@[multivalue_combined] ignore-wasm (dylibs are not supported) +//@[multivalue_combined] compile-flags: --crate-type=lib,rlib,staticlib --crate-type=dylib +//@[multivalue_combined] check-pass + +// `proc-macro` is accepted, but `proc_macro` is not. +//@ revisions: proc_underscore_macro +//@[proc_underscore_macro] compile-flags: --crate-type=proc_macro +//@[proc_underscore_macro] error-pattern: "unknown crate type: `proc_macro`" + +// Empty `--crate-type` not accepted. +//@ revisions: empty_crate_type +//@[empty_crate_type] compile-flags: --crate-type= +//@[empty_crate_type] error-pattern: "unknown crate type: ``" + +// Random unknown crate type. Also check that we can handle non-ASCII. +//@ revisions: unknown +//@[unknown] compile-flags: --crate-type=🤡 +//@[unknown] error-pattern: "unknown crate type: `🤡`" + +fn main() {} diff --git a/tests/ui/invalid-compile-flags/crate-type-flag.unknown.stderr b/tests/ui/invalid-compile-flags/crate-type-flag.unknown.stderr new file mode 100644 index 0000000000000..7fb0f09a1afbd --- /dev/null +++ b/tests/ui/invalid-compile-flags/crate-type-flag.unknown.stderr @@ -0,0 +1,2 @@ +error: unknown crate type: `🤡` +