// Copyright 2019 The Fuchsia Authors // // Licensed under a BSD-style license , Apache License, Version 2.0 // , or the MIT // license , at your option. // This file may not be copied, modified, or distributed except according to // those terms. use std::env; use testutil::set_rustflags_w_warnings; fn test(subdir: &str) { let version = testutil::ToolchainVersion::extract_from_pwd().unwrap(); // See the doc comment on this method for an explanation of what this does // and why we store source files in different directories. let source_files_dirname = version.get_ui_source_files_dirname_and_maybe_print_warning(); // Set `-Wwarnings` in the `RUSTFLAGS` environment variable to ensure that // `.stderr` files reflect what the typical user would encounter. set_rustflags_w_warnings(); let t = trybuild::TestCases::new(); t.compile_fail(format!("tests/{}/{}/*.rs", source_files_dirname, subdir)); } #[test] #[cfg_attr(miri, ignore)] fn ui() { test(""); // This tests the behavior when `--cfg zerocopy_derive_union_into_bytes` is // not present, so remove it. If this logic is wrong, that's fine - it will // exhibit as a test failure that we can debug at that point. let rustflags = env::var("RUSTFLAGS").unwrap(); let new_rustflags = rustflags.replace("--cfg zerocopy_derive_union_into_bytes", ""); // SAFETY: None of our code is concurrently accessinv env vars. It's // possible that the test framework has spawned other threads that are // concurrently accessing env vars, but we can't do anything about that. #[allow(unused_unsafe)] // `set_var` is safe on our MSRV. unsafe { env::set_var("RUSTFLAGS", new_rustflags) }; test("union_into_bytes_cfg"); // Reset RUSTFLAGS in case we later add other tests which rely on its value. // This isn't strictly necessary, but it's easier to add this now when we're // thinking about the semantics of these env vars than to debug later when // we've forgotten about it. // // SAFETY: See previous safety comment. #[allow(unused_unsafe)] // `set_var` is safe on our MSRV. unsafe { env::set_var("RUSTFLAGS", rustflags) }; }