Commit graph

657 commits

Author SHA1 Message Date
Manish Goregaokar
5751c7f1db
Rollup merge of #74033 - ehuss:std-compile-all-platforms, r=Mark-Simulacrum
Add build support for Cargo's build-std feature.

This makes some changes to the standard library to make it easier to use with Cargo's build-std feature. The primary goal is to make it so that Cargo and its users do not need to know which crates to build and which features to use for every platform.

Conditional cfgs are adjusted so that there is usually a fall-through for unsupported platforms. Additionally, there is a "restricted-std" feature to mark `std` as unstable when used with build-std on no_std platforms. There is no intent to stabilize this feature for the foreseeable future.

This borrows some of the implementation for wasm which already does what this needs. More code sharing can be done with some other platforms (there is a lot of duplication with cloudabi, hermit, and sgx), but I figure that can be done in a future PR.

There are some small changes to stable behavior in this PR:
- `std::env::consts::ARCH` on asmjs now reports "wasm32", to match its actual architecture.
- Some of the wasm error messages for unsupported features report a slightly different error message so that the code can be reused.

There should otherwise not be any changes to how std is built for distribution via bootstrap.

This does not yet support all platforms when used with build-std.

- It doesn't work with 16-bit targets (hashbrown does not support that).
- It does not work with JSON spec targets.
    - In particular, all target triple snooping will need to be replaced with appropriate target option checking.
- Switching to gimli (#73441) will make cross-building *much* easier.
- There are still a ton of issues on the Cargo side to resolve. A big one is panic strategy support.

Future PRs are intended to address some of these issues.
2020-07-16 17:08:57 -07:00
Alex Crichton
e158913f2b Move libstd's default feature to libtest
This commit makes it so `std` no longer has a `default` feature, but
instead the `test` crate has a `default` feature doing the same thing.
The purpose of this commit is to allow Cargo's `-Zbuild-std` command,
which could customize the features of the standard library, to handle
the `default` feature for libstd. Currently Cargo's `-Zbuild-std`
support starts at libtests's manifest as the entry point to the std set
of crates.
2020-07-15 11:37:46 -07:00
Eric Huss
432b4c14aa Use cfg_if in libtest.
Simplifies some of the expressions, and provides a default.
2020-07-15 08:38:11 -07:00
Josh Stone
fd483c86db typo: awailable -> available 2020-06-08 13:37:58 -07:00
Matthias Krüger
8bfd84539e Fix clippy warnings
Fixes clippy::{cone_on_copy, filter_next, redundant_closure, single_char_pattern, len_zero,redundant_field_names, useless_format, identity_conversion, map_clone, into_iter_on_ref, needless_return, option_as_ref_deref, unused_unit, unnecessary_mut_passed}
2020-05-11 17:13:32 +02:00
Patrick Mooney
b77aefb76e Add illumos triple
Co-Authored-By: Jason King <jason.brian.king@gmail.com>
Co-Authored-By: Joshua M. Clulow <jmc@oxide.computer>
2020-04-14 20:36:07 +00:00
Linus Färnstrand
09b5d666a0 Stop importing float module in libtest 2020-04-06 22:45:44 +02:00
Amanieu d'Antras
d162d096dd Rename asm! to llvm_asm!
asm! is left as a wrapper around llvm_asm! to maintain compatibility.
2020-03-26 15:49:22 +00:00
Jubilee
eaa6488ca7
Request "-Z unstable-options" for unstable options
Explicitly requests the "-Z unstable-options" flag if someone attempts to use
a cargo option gated by it. This enhances discoverability, particularly in the
instance where the user is on the nightly compiler but isn't using the flag.
2020-03-23 22:54:06 -07:00
Yuki Okushi
8e17c8366c
Rollup merge of #69802 - matthiaskrgr:cl1ppy, r=Dylan-DPC
fix more clippy findings

* reduce references on match patterns (clippy::match_ref_pats)
* Use writeln!(fmt, "word") instead of write!(fmt, "word\n") (clippy::write_with_newline)
* libtest: remove redundant argument to writeln!() (clippy::writeln_empty_string)
* remove unneeded mutable references (cippy::unnecessary_mut_passed)
* libtest: declare variables as floats instead of casting them (clippy::unnecessary_cast)
* rustdoc: remove redundant static lifetimes (clippy::redundant_static_lifetimes)
* call .as_deref() instead of .as_ref().map(Deref::deref) (clippy::option_as_ref_deref)
* iterate over a maps values directly. (clippy::for_kv_map)
* rustdoc: simplify boolean condition (clippy::nonminimal_bool)
* Use ?-operator in more places (clippy::question_mark, had some false negatives fixed recently)
* rustdoc: Use .any(p) instead of find(p).is_some(). (clippy::search_is_some)
* rustdoc: don't call into_iter() on iterator. (clippy::identity_conversion)
2020-03-14 04:03:24 +09:00
Matthias Krüger
8351138370 reduce references on match patterns (clippy::match_ref_pats) 2020-03-07 21:48:17 +01:00
Matthias Krüger
3f87f8cfee Use writeln!(fmt, "word") instead of write!(fmt, "word\n") (clippy::write_with_newline) 2020-03-07 21:48:17 +01:00
Matthias Krüger
f326f0f70f libtest: remove redundant argument to writeln!() (clippy::writeln_empty_string) 2020-03-07 21:48:17 +01:00
Matthias Krüger
cca3d52160 libtest: declare variables as floats instead of casting them (clippy::unnecessary_cast) 2020-03-07 21:48:17 +01:00
Matthias Krüger
136ad015b6 fix various typos 2020-03-06 15:19:31 +01:00
Matthias Krüger
a1c3eb6043 Don't always eval arguments inside .expect(), use unwrap_or_else and closure. (clippy::expect_fun_call) 2020-03-05 16:39:20 +01:00
Matthias Krüger
c2bbe3349f Const items have by default a static lifetime, there's no need to annotate it. (clippy::redundant_static_lifetimes) 2020-03-05 16:38:24 +01:00
Yuki Okushi
680a0e1dd5
Rollup merge of #69580 - matthiaskrgr:map_clone, r=Centril
use .copied() instead of .map(|x| *x) on iterators
2020-03-01 19:28:12 +09:00
Vadim Petrochenkov
6054a30370 Make it build again 2020-02-29 20:47:10 +03:00
Matthias Krüger
c9a02c2e42 use .copied() instead of .map(|x| *x) on iterators 2020-02-29 15:23:13 +01:00
Matthias Krüger
9523c89f18 use is_empty() instead of len() == x to determine if structs are empty. 2020-02-28 15:16:27 +01:00
Tyler Mandry
861b328f7d Respect --nocapture in panic=abort test mode 2020-02-06 14:43:53 -08:00
Matthias Krüger
697ef95c9f remove redundant imports (clippy::single_component_path_imports) 2020-02-04 01:05:45 +01:00
Dylan DPC
98347cdbff
Rollup merge of #68301 - tmandry:dont-propagate-test-invoke, r=alexcrichton
Don't propagate __RUST_TEST_INVOKE to subprocess

When -Z panic_abort_tests is enabled, we use an environment variable to
tell the subprocess which test to invoke. If that subprocess then
invokes another Rust test binary, chaos ensues.

r? @alexcrichton
2020-01-17 11:16:42 +05:30
Tyler Mandry
6246f7e1f9 Don't propagate __RUST_TEST_INVOKE to subprocess
When -Z panic_abort_tests is enabled, we use an environment variable to
tell the subprocess which test to invoke. If that subprocess then
invokes another Rust test binary, chaos ensues.
2020-01-16 16:54:00 -08:00
Matthias Krüger
7fbd30b1ae don't clone types that are copy
found via clippy
2020-01-16 23:48:49 +01:00
Matthias Krüger
312c3a067a remove redundant clones, found by clippy 2020-01-15 15:00:25 +01:00
Mikail Bagishov
91e9531ed1
Clarify test timeout evironment variables 2020-01-10 21:00:29 +03:00
Mark Rousskov
a06baa56b9 Format the world 2019-12-22 17:42:47 -05:00
varkor
442514884d Use Instant::now lazily 2019-12-06 12:24:54 +00:00
varkor
9f1269f23c Rename to then_some and then 2019-12-06 12:24:54 +00:00
varkor
e3a8ea4e18 Use to_option in various places 2019-12-06 12:23:23 +00:00
Thomas Etter
16bf4f5e1b Simplify if else as suggested in PR feedback 2019-11-19 21:44:45 +01:00
Thomas Etter
48a86e0b2c replace some asserts with assert_eq for better error readability 2019-11-18 00:52:10 +01:00
Thomas Etter
be993beb0b print a more useful error message on should_panic mismatch 2019-11-18 00:51:18 +01:00
Tyler Mandry
b8dca6c827 Add --force-run-in-process unstable libtest option 2019-11-15 05:52:06 -08:00
Lukas Kalbertodt
761ba89ffd
Replace array.into_iter() with iter() in libtest/tests.rs 2019-11-06 14:43:52 +01:00
Tyler Mandry
4bb91c7845
Rollup merge of #65898 - hermitcore:rusty-hermit, r=kennytm
add basic HermitCore support within libtest

This an extension to #65167. The current pull request extend libtest to support HermitCore as target OS.
2019-10-29 12:01:41 -07:00
Stefan Lankes
cf65200e5c removing trailing whitespaces 2019-10-28 14:03:53 -04:00
Stefan Lankes
7cecfab386 add basic HermitCore support within libtest 2019-10-28 09:54:24 -04:00
Thomas Lively
62c3443e96 Re-enable Emscripten's exception handling support
Passes LLVM codegen and Emscripten link-time flags for exception
handling if and only if the panic strategy is `unwind`. Sets the
default panic strategy for Emscripten targets to `unwind`. Re-enables
tests that depend on unwinding support for Emscripten, including
`should_panic` tests.
2019-10-25 15:16:36 -07:00
Mazdak Farrokhzad
426c6cf84f
Rollup merge of #64178 - mati865:clippy, r=scottmcm
More Clippy fixes for alloc, core and std

Continuation of https://github.com/rust-lang/rust/pull/63805
2019-10-23 22:19:07 +02:00
Lzu Tao
557cbd0fd5 Public some types for compiletest_rs 2019-10-23 03:49:42 +00:00
Mateusz Mikuła
95c06a2970 Apply clippy::needless_return suggestions 2019-10-22 19:23:10 +02:00
Igor Aleksanov
ae04dc8473 Remove unneccessary use under cfg(unix) 2019-10-21 09:05:40 +03:00
Igor Aleksanov
a06b205177 Add public re-exports for benches 2019-10-18 08:32:44 +03:00
Igor Aleksanov
cb5733de86 Improve code style 2019-10-17 19:37:01 +03:00
Igor Aleksanov
85628e8063 Add more explaining comments to the code 2019-10-17 19:10:35 +03:00
Igor Aleksanov
ddc6a5fd0e Split options parsing into several functions 2019-10-17 19:10:17 +03:00
Igor Aleksanov
12397e9dd5 Make enum usage explicit and fix tests 2019-10-17 17:47:03 +03:00