mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 11:07:42 +00:00
94 lines
2.9 KiB
Rust
94 lines
2.9 KiB
Rust
#![cfg(test)]
|
|
#![allow(unused_attributes)]
|
|
#![unstable(feature = "alloctests", issue = "none")]
|
|
#![no_std]
|
|
// Lints:
|
|
#![deny(unsafe_op_in_unsafe_fn)]
|
|
#![warn(deprecated_in_future)]
|
|
#![warn(missing_debug_implementations)]
|
|
#![allow(explicit_outlives_requirements)]
|
|
#![allow(internal_features)]
|
|
#![allow(rustdoc::redundant_explicit_links)]
|
|
#![warn(rustdoc::unescaped_backticks)]
|
|
#![deny(ffi_unwind_calls)]
|
|
//
|
|
// Library features:
|
|
// tidy-alphabetical-start
|
|
#![feature(alloc_layout_extra)]
|
|
#![feature(allocator_api)]
|
|
#![feature(array_into_iter_constructors)]
|
|
#![feature(assert_matches)]
|
|
#![feature(core_intrinsics)]
|
|
#![feature(exact_size_is_empty)]
|
|
#![feature(extend_one)]
|
|
#![feature(extend_one_unchecked)]
|
|
#![feature(hasher_prefixfree_extras)]
|
|
#![feature(inplace_iteration)]
|
|
#![feature(iter_advance_by)]
|
|
#![feature(iter_next_chunk)]
|
|
#![feature(maybe_uninit_slice)]
|
|
#![feature(maybe_uninit_uninit_array_transpose)]
|
|
#![feature(ptr_internals)]
|
|
#![feature(sized_type_properties)]
|
|
#![feature(slice_iter_mut_as_mut_slice)]
|
|
#![feature(slice_ptr_get)]
|
|
#![feature(slice_range)]
|
|
#![feature(std_internals)]
|
|
#![feature(temporary_niche_types)]
|
|
#![feature(trusted_fused)]
|
|
#![feature(trusted_len)]
|
|
#![feature(trusted_random_access)]
|
|
#![feature(try_reserve_kind)]
|
|
#![feature(try_trait_v2)]
|
|
// tidy-alphabetical-end
|
|
//
|
|
// Language features:
|
|
// tidy-alphabetical-start
|
|
#![feature(cfg_sanitize)]
|
|
#![feature(dropck_eyepatch)]
|
|
#![feature(lang_items)]
|
|
#![feature(min_specialization)]
|
|
#![feature(negative_impls)]
|
|
#![feature(never_type)]
|
|
#![feature(optimize_attribute)]
|
|
#![feature(rustc_allow_const_fn_unstable)]
|
|
#![feature(rustc_attrs)]
|
|
#![feature(staged_api)]
|
|
#![feature(test)]
|
|
#![rustc_preserve_ub_checks]
|
|
// tidy-alphabetical-end
|
|
|
|
// Allow testing this library
|
|
extern crate alloc as realalloc;
|
|
#[macro_use]
|
|
extern crate std;
|
|
#[cfg(test)]
|
|
extern crate test;
|
|
mod testing;
|
|
use realalloc::*;
|
|
|
|
// We are directly including collections and raw_vec here as both use non-public
|
|
// methods and fields in tests and as such need to have the types to test in the
|
|
// same crate as the tests themself.
|
|
#[path = "../alloc/src/collections/mod.rs"]
|
|
mod collections;
|
|
|
|
#[path = "../alloc/src/raw_vec/mod.rs"]
|
|
mod raw_vec;
|
|
|
|
#[allow(dead_code)] // Not used in all configurations
|
|
pub(crate) mod test_helpers {
|
|
/// Copied from `std::test_helpers::test_rng`, since these tests rely on the
|
|
/// seed not being the same for every RNG invocation too.
|
|
pub(crate) fn test_rng() -> rand_xorshift::XorShiftRng {
|
|
use std::hash::{BuildHasher, Hash, Hasher};
|
|
let mut hasher = std::hash::RandomState::new().build_hasher();
|
|
std::panic::Location::caller().hash(&mut hasher);
|
|
let hc64 = hasher.finish();
|
|
let seed_vec =
|
|
hc64.to_le_bytes().into_iter().chain(0u8..8).collect::<crate::vec::Vec<u8>>();
|
|
let seed: [u8; 16] = seed_vec.as_slice().try_into().unwrap();
|
|
rand::SeedableRng::from_seed(seed)
|
|
}
|
|
}
|