605 Commits

Author SHA1 Message Date
Thomas Lively
2bf59bea48 Upgrade Emscripten targets to use upstream LLVM backend
- Compatible with Emscripten 1.38.46-upstream or later upstream.
 - Refactors the Emscripten target spec to share code with other wasm
   targets.
 - Replaces the old incorrect wasm32 C call ABI with the correct one,
   preserving the old one as wasm32_bindgen_compat for wasm-bindgen
   compatibility.
 - Updates the varargs ABI used by Emscripten and deletes the old one.
 - Removes the obsolete wasm32-experimental-emscripten target.
 - Uses EMCC_CFLAGS on CI to avoid the timeout problems with #63649.
2019-10-16 17:06:48 -07:00
bors
80b861bed1 Auto merge of #64873 - popzxc:prettify-test-time, r=wesleywiser
Enhance report-time option

## Short overview

This PR is a follow-up to a previously closed #64714 PR.

## Changes introduced by this PR

* `libtest` now retrieves the type of the test within `TestDesc` (available types are: `UnitTest`, `IntegrationTest`, `DocTest`, `Unknown`).
* `--report-time` subcommand of the `libtest` now supports colored output (disabled by default).
* Colorized output depends on the threshold values. Default values (proposed by @wesleywiser):
  - For unit-tests: 50ms warn/100ms critical,
  - For integration-tests: 500ms warn/1000ms critical,
  - For doctests: same as for integration tests,
  - For unknown tests: `TEST_WARN_TIMEOUT_S` warn/ `TEST_WARN_TIMEOUT_S * 2` critical (it will only applied single-threaded mode, because otherwise test will be interrupted after reaching `TEST_WARN_TIMEOUT_S`).
  - These values can be overrided by setting environment variables (since those thresholds are somewhat constant for every project, it's more flexible to use environment variables than command line arguments).
* New optional flag `--ensure-test-time` for `libtest`. With this flag applied, exectuion time limit excesss will cause test failure.

## What have not been done

There was a comment that it would be nice to have an entry in the Cargo book about it.

However, changes introduced by this PR (and #64663 in which `report-time` flag was added) aren't related directly to `cargo`, it's more about `libtest` itself.
I'm considering that [The Unstable Book](https://doc.rust-lang.org/unstable-book/) is more appropriate place, but not sure if I'm right (and if so, how exactly it should be described).

As one possible option, this PR may be merged without denoting it in the documentation, and in the next PR adding support of this feature to the `cargo` itself, I'll add a note in the Cargo book.

## Scope of this PR

Logical scope of this PR is `libtest` only. However, to get test types, I had to modify also `libsyntax_ext` and `librustdoc` for them to provide information about test type.

## Rationale

Rationale for colored output was submitted in #64714

Providing the information about kind of test was also proposed in #64714, and as an additional benefit this information may be useful for the tools using `libtest` (e.g. `cargo`).

Adding flag to treat time limits excess seems logical to me, so projects that do care about test execution time won't have to invent a wheel.

## Backward compatibility

All the changes are completely backward compatible.

## Demo

![rustc_enhanced_time](https://user-images.githubusercontent.com/12111581/65818381-c04f6800-e219-11e9-9875-322463abe24f.gif)

r? @wesleywiser
2019-10-12 23:47:27 +00:00
Igor Aleksanov
56077605fd Follow the styling guide 2019-10-09 10:29:20 +03:00
Igor Aleksanov
375a051f7f Make interface of the feature more convenient 2019-10-09 10:03:08 +03:00
Igor Aleksanov
8231f46a8f Resolve divergency with master 2019-10-09 09:52:08 +03:00
Tyler Mandry
d16b7f705b Revert "Auto merge of #63649 - tlively:emscripten-upstream-upgrade, r=alexcrichton"
This reverts commit 7870050796e5904a0fc85ecbe6fa6dde1cfe0c91, reversing
changes made to 2e7244807a7878f6eca3eb7d97ae9b413aa49014.
2019-10-05 21:38:45 -07:00
Thomas Lively
5b56c660c9 Fix ABI, run and fix more tests, re-enable CI for PRs 2019-10-04 00:47:21 -07:00
Guillaume Gomez
70dcb99889 Remove rustdoc warning 2019-10-02 14:24:59 +02:00
Igor Aleksanov
f2b84788fb libtest: encapsulate time-related logic and avoid unnecessary allocations 2019-09-29 21:22:30 +03:00
Igor Aleksanov
75a297573f Enhance report-time option 2019-09-29 21:22:30 +03:00
Tyler Mandry
8ae1ec60cc Spawn one subprocess per unit test when panic=abort 2019-09-28 13:52:18 -07:00
Kenny Goodin
821ff46878 Include message on tests that should panic 2019-09-26 19:39:59 -04:00
Jakob Schikowski
d91b965664 libtest: Make --report-time an unstable option 2019-09-22 22:20:30 +02:00
Jakob Schikowski
c16a547012 libtest: Add --report-time flag to print test execution time 2019-09-21 19:03:14 +02:00
Mazdak Farrokhzad
6d20265a9e
Rollup merge of #62600 - emmericp:libtest-add-show-output, r=gnzlbg
libtest: add --show-output flag to print stdout of successful tests

This pull request adds a new flag `--show-output` for tests to show the output of successful tests. For most formatters this was already supported just not exposed via the CLI (apparently only used by `librustdoc`). I've also added support for this option in the JSON formatter.

This kind of fixes https://github.com/rust-lang/rust/issues/54669 which wants `--format json` to work with `--nocapture`, which is... well, impossible. What this issue really calls for is `--show-output` as implemented here.
2019-08-27 08:17:48 +02:00
Alex Crichton
b47c9690d2 bootstrap: Merge the libtest build step with libstd
Since its inception rustbuild has always worked in three stages: one for
libstd, one for libtest, and one for rustc. These three stages were
architected around crates.io dependencies, where rustc wants to depend
on crates.io crates but said crates don't explicitly depend on libstd,
requiring a sysroot assembly step in the middle. This same logic was
applied for libtest where libtest wants to depend on crates.io crates
(`getopts`) but `getopts` didn't say that it depended on std, so it
needed `std` built ahead of time.

Lots of time has passed since the inception of rustbuild, however,
and we've since gotten to the point where even `std` itself is depending
on crates.io crates (albeit with some wonky configuration). This
commit applies the same logic to the two dependencies that the `test`
crate pulls in from crates.io, `getopts` and `unicode-width`. Over the
many years since rustbuild's inception `unicode-width` was the only
dependency picked up by the `test` crate, so the extra configuration
necessary to get crates building in this crate graph is unlikely to be
too much of a burden on developers.

After this patch it means that there are now only two build phasese of
rustbuild, one for libstd and one for rustc. The libtest/libproc_macro
build phase is all lumped into one now with `std`.

This was originally motivated by rust-lang/cargo#7216 where Cargo was
having to deal with synthesizing dependency edges but this commit makes
them explicit in this repository.
2019-08-23 16:46:11 -07:00
newpavlov
2ff1f45ead revert num_cpus change 2019-08-21 20:16:52 +03:00
Artyom Pavlov
82cb207607
fix num_cpus 2019-08-21 00:18:05 +00:00
Artyom Pavlov
40cb69da59
fix libtest 2019-08-21 00:15:11 +00:00
Vadim Petrochenkov
62ec2cb7ac Remove some more cfg(test)s 2019-08-02 02:40:01 +03:00
Vadim Petrochenkov
751af27320 libtest: Unconfigure tests during normal build 2019-08-02 01:59:01 +03:00
Vadim Petrochenkov
73dae4eaf9 Remove derives Encodable/Decodable and unstabilize attribute #[bench] 2019-07-31 21:27:59 +03:00
Vadim Petrochenkov
434152157f Remove lint annotations in specific crates that are already enforced by rustbuild
Remove some random unnecessary lint `allow`s
2019-07-28 18:46:24 +03:00
Baoshan Pang
4c0c0f6158 Add supporting for vxWorks
r? @alexcrichton
2019-07-16 00:13:07 -07:00
Paul Emmerich
409a41dc24 libtest: support display_output in JSON formatter 2019-07-12 01:56:43 +02:00
Paul Emmerich
1add949ef0 libtest: add --show-output option
this new flag enables printing the captured stdout of successful tests
utilizing the already existing display_output test runner option
2019-07-11 22:23:00 +02:00
chansuke
c2a57c88ea Separate libtest module 2019-06-16 14:17:01 +03:00
varkor
c3febc0884 Make "panic did not include expected string" message consistent
Note messages are typically lowercase.
2019-05-30 21:58:33 +01:00
Simon Sapin
a8fc09be39 Use FnOnce instead of FnBox in libtest 2019-05-24 07:51:48 +02:00
Mazdak Farrokhzad
815d3ba883
Rollup merge of #60895 - chandde:master, r=alexcrichton
Enable thumbv7a-pc-windows-msvc target build end to end in rust/master

With this PR, plus another commit cf98161da7, I'm able to build the target thumbv7a-pc-windows-msvc successfully, and I'm able to use the stage2 artifacts to build arm32 projects. The commit in compiler_builtins is in release 0.1.14, the current cargo.lock in rust master still uses 0.1.12, so I bumped the compiler_builtins version in cargo.lock to 0.1.15

The command I used to build rust
```
c:\python27\python.exe x.py build --host x86_64-pc-windows-msvc --build x86_64-pc-windows-msvc --target thumbv7a-pc-windows-msvc --verbose
```

**Changes**
1. update cargolock to use compiler_builtins 0.1.15
2. handle libunwind in libtest for thumv7a the same as what we have for aarch64
3. in llvm codegen add a field in CodegenContext to carry the arch, so later in create_msvc_imps function, the arch can be used to check against "x86", instead of 32 pointer width. Apparently Thumv7a is handled differently than x86.

**Background**
I'm from Microsoft working on enabling Azure IoTEdge on ARM32 Windows IoTCore, Azure IoTEdge has a component called IoTEdged written in rust as a NT service running on Windows, so we need to enable rust on thumbv7a in order to have full IoTEdge. My colleague had made some heavy lifting and we've been using our private toolchain to build IoTEdged in our devops pipeline, because at that time we cannot build thumbv7a target end to end successfully. This change is a followup to enable the end to end build for thumbv7a-pc-windows-msvc target.

**Next step**
I'll submit more changes to have this target built nightly in rust/master, to achieve the same availability for aarch64-pc-windows-msvc, indexed here https://rust-lang.github.io/rustup-components-history/aarch64-pc-windows-msvc.html and can be manually installed. **Please do share what takes to make this happen, is there a formal process I need to follow\?**
2019-05-20 01:01:39 +02:00
chandde
759921e2a0 fix line length 2019-05-18 00:49:54 -07:00
chandde
70f78b3f8c optimize the arm64 OR arm32 check 2019-05-17 20:45:25 -07:00
chandde
b5febe72bb
Update lib.rs 2019-05-14 17:00:48 -07:00
Marcel Hellwig
cc314b066a Remove bitrig support from rust 2019-05-13 11:09:06 +02:00
varkor
ecd046817b Update getopts to 0.2.19 2019-05-05 10:45:10 +01:00
varkor
e72f7e1e56 Update getopts to 0.2.18
This is a proof-of-concept that the dependency unification fix works.
2019-05-02 21:47:14 +01:00
Jacob Greenfield
28ea249ab5
Revert "Auto merge of #57842 - gnzlbg:extract_libtest, r=gnzlbg"
This reverts commit 3eb4890dfe6db0279fdd3cda19f9643873ae3db9, reversing
changes made to 7a4df3b53da369110984a2b57419c05a53e33b38.
2019-04-07 03:16:31 -04:00
gnzlbg
f5d6b3af69 Moves test::black_box to core::hint
This changes removes a cyclic dependency between the "test" and "libtest"
crates, where "libtest" depends on "test" for "black_box", but "test" depends on
"libtest" for everything else.

I've chosen the "hint" module because there seems to be enough consensus in the
discussion of RFC2360 that this module is where such an intrinsic would belong,
but this PR does not implement that RFC! (note: if that RFC ever gets merged,
the API, docs, etc. of this API will need to change).

For backwards compatibility reasons I've chosen to also keep the "test" feature
gate for these instead of adding a new feature gate. If we change the feature
gate, we'll potentially all benchmarks, and while that's something that we could
do, it seems unnecessary to do that now - if RFC2360 gets merged, we'll need to
do that anyways.
2019-03-25 11:44:06 +01:00
gnzlbg
46a8beb4b2 Move some bench tests back from libtest 2019-03-20 01:22:19 +01:00
gnzlbg
144bdc6830 Directly reference the roadmap upstream 2019-03-19 13:58:48 +01:00
gnzlbg
cf5c360064 Export stats::Summary from libtest 2019-03-19 13:58:48 +01:00
gnzlbg
a5e7f0c75b Add missing explicit imports 2019-03-19 13:58:48 +01:00
gnzlbg
25c8f61a9f Move black_box back to rust-lang/libtest and use explicit imports 2019-03-19 13:58:48 +01:00
gnzlbg
008ce99028 Add a README to libtest with a roadmap 2019-03-19 13:58:48 +01:00
gnzlbg
4c38f1928e Allow the staged_api 2019-03-19 13:58:47 +01:00
gnzlbg
f2915a6f62 Use feature(test) 2019-03-19 13:58:47 +01:00
gnzlbg
3a9e30f6c9 Use libtest from crates.io 2019-03-19 13:58:47 +01:00
gnzlbg
2957c4c42e Re-export libtest 2019-03-19 13:58:47 +01:00
gnzlbg
95f79380ca Move libtest out of rust-lang/rust 2019-03-19 13:58:47 +01:00
memoryruins
43e7434120 Simplify exclude_should_panic flag. 2019-02-24 11:58:08 -05:00