Commit graph

361 commits

Author SHA1 Message Date
ashtneoi
6a24abbbc5 Fix compiletest JSON error message 2018-08-15 15:14:21 -07:00
kennytm
4fb40588ae
Rollup merge of #53229 - varkor:rlimits_min, r=nikomatsakis
Make sure rlimit is only ever increased

`libc::setrlimit` will fail if we try to set the rlimit to a value lower than it is currently, so make sure we're never trying to do this. Fixes #52801.
2018-08-14 23:59:08 +08:00
David Wood
7c13eb42d4
Fix no-link-with-link-args by introducing another normalization. 2018-08-14 11:12:10 +02:00
David Wood
2ad663c1cd
Normalize test build directory and root build directory. 2018-08-14 11:12:10 +02:00
David Wood
fe28bcf1db
Check error-patterns on UI tests. Fixes #52531.
Previously, even if no expected errors were supplied, if a test execution failed
then supplied error patterns would not be checked. This commit modifies the
conditional that determines whether error patterns or expected errors are checked
to remedy this.

Further, this commit modifies the error pattern checking logic so that each pattern
is checked against all lines of the string. This is required for UI tests as the
stderr is in JSON format - all on one line - so in the previous implementation when the
first pattern was found on the first line (which was actually the entire error) then
no other patterns would be found on subsequent lines (as there weren't any).
2018-08-14 10:37:54 +02:00
varkor
82a704abe7 Add a safety check for compiletest rlimit 2018-08-09 19:40:49 +01:00
varkor
319b052357 Fix stage 2 tests 2018-08-05 15:54:49 +01:00
bors
8c069ceba8 Auto merge of #52937 - pietroalbini:rollup, r=pietroalbini
Rollup of 30 pull requests

Successful merges:

 - #52340 (Document From trait implementations for OsStr, OsString, CString, and CStr)
 - #52628 (Cleanup some rustdoc code)
 - #52732 (Remove unstable and deprecated APIs)
 - #52745 (Update clippy to latest master)
 - #52771 (Clarify thread::park semantics)
 - #52778 (Improve readability of serialize.rs)
 - #52810 ([NLL] Don't make "fake" match variables mutable)
 - #52821 (pretty print for std::collections::vecdeque)
 - #52822 (Fix From<LocalWaker>)
 - #52824 (Fix -Wpessimizing-move warnings in rustllvm/PassWrapper)
 - #52825 (Make sure #47772 does not regress)
 - #52831 (remove references to AUTHORS.txt file)
 - #52842 (update comment)
 - #52846 (Add timeout to use of `curl` in bootstrap.py.)
 - #52851 (Make the tool_lints actually usable)
 - #52853 (Improve bootstrap help on stages)
 - #52859 (Use Vec::extend in SmallVec::extend when applicable)
 - #52861 (Add targets for HermitCore (https://hermitcore.org) to the Rust compiler and port libstd to it.)
 - #52867 (releases.md: fix 2 typos)
 - #52870 (Implement Unpin for FutureObj and LocalFutureObj)
 - #52876 (run-pass/const-endianness: negate before to_le())
 - #52878 (Fix wrong issue number in the test name)
 - #52883 (Include lifetime in mutability suggestion in NLL messages)
 - #52888 (Use suggestions for shell format arguments)
 - #52904 (NLL: sort diagnostics by span)
 - #52905 (Fix a typo in unsize.rs)
 - #52907 (NLL: On "cannot move out of type" error, print original before rewrite)
 - #52914 (Only run the sparc-abi test on sparc)
 - #52918 (Backport 1.27.2 release notes)
 - #52929 (Update compatibility note for 1.28.0 to be correct)

Failed merges:

r? @ghost
2018-08-01 08:41:36 +00:00
Alex Crichton
ca762ba954 rustc: Disallow machine applicability in foreign macros
Recent changes to lints disallowed lints from being emitted against code located
in foreign macros, except for future-incompatible lints. For a future
incompatible lint, however, the automatic suggestions may not be applicable!

This commit updates this code path to force all applicability suggestions made
to foreign macros to never be `MachineApplicable`. This should avoid rustfix
actually attempting fixing these suggestions, causing non-compiling code to be
produced.

Closes rust-lang/cargo#5799
2018-07-30 07:48:59 -07:00
Colin Finck
e50f4eeaad Add targets for HermitCore (https://hermitcore.org) to the Rust compiler and port libstd to it.
As a start, the port uses the simplest possible configuration (no jemalloc, abort on panic)
and makes use of existing Unix-specific code wherever possible.
It adds targets for x86_64 (current main HermitCore platform) and aarch64 (HermitCore platform
under development).

Together with the patches to "liblibc" and "llvm", this enables HermitCore applications to be
written in Rust.
2018-07-30 15:50:51 +02:00
Alex Crichton
fa5b3d31fa Update the Cargo submodule and rustfix
Should hopefully bring in a few more `cargo fix`-related fixes.
2018-07-28 09:50:34 -07:00
bors
4f1e235744 Auto merge of #52336 - ishitatsuyuki:dyn-rollup, r=Mark-Simulacrum
Rollup of bare_trait_objects PRs

All deny attributes were moved into bootstrap so they can be disabled with a line of config.

Warnings for external tools are allowed and it's up to the tool's maintainer to keep it warnings free.

r? @Mark-Simulacrum
cc @ljedrz @kennytm
2018-07-27 20:27:40 +00:00
Felix S. Klock II
94a2972d3f compiletest: Add support for ignoring certain tests under --compare-mode=... 2018-07-26 14:51:36 +02:00
Tatsuyuki Ishi
66c4dc9769 Add missing dyn 2018-07-25 10:24:31 +09:00
bors
487e961c6a Auto merge of #52181 - QuietMisdreavus:panicked-tester, r=GuillaumeGomez
rustdoc: set panic output before starting compiler thread pool

When the compiler was updated to run on a thread pool, rustdoc's processing of compiler/doctest stderr/stdout was moved into each compiler thread. However, this caused output of the test to be lost if the test failed at *runtime* instead of compile time. This change sets up the `set_panic` call and output bomb before starting the compiler thread pool, so that the `Drop` call that writes back to the test's stdout happens after the test runs, not just after it compiles.

Fixes https://github.com/rust-lang/rust/issues/51162
2018-07-24 19:34:11 +00:00
Federico Poli
8ec9d7242c Match errors using the callsite of macro expansions 2018-07-23 14:31:06 +02:00
QuietMisdreavus
e3bc713e2e compiletest: don't overwrite failure-status if it was previously set 2018-07-20 13:25:44 -05:00
Andy Russell
8f4ccac5e2
rustc: distinguish compilation failure from ICE
This commit changes the exit status of rustc to 1 in the presence of
compilation errors. In the event of an unexpected panic (ICE) the
standard panic error exit status of 101 remains.

A run-make test is added to ensure that the exit code does not regress,
and compiletest is updated to check for an exit status of 1 or 101,
depending on the mode and suite.

This is a breaking change for custom drivers.

Fixes #51971.
2018-07-18 00:24:13 -04:00
Michael Woerister
89aa0bc108 Revert "Adapt codegen-unit tests to new CGU naming scheme."
This reverts commit 94b32adb71.
2018-07-16 08:58:15 +02:00
bors
a14a361c2c Auto merge of #52266 - michaelwoerister:incr-thinlto-preliminaries, r=alexcrichton
Preliminary work for incremental ThinLTO.

Since implementing incremental ThinLTO is a bit more involved than I initially thought, I'm splitting out some of the things that already work. This PR (1) adds a way accessing some ThinLTO information in `rustc` and (2) does some cleanup around CGU/object file naming (which makes things quite a bit nicer).

This is probably best reviewed one commit at a time.
2018-07-13 22:06:38 +00:00
Michael Woerister
94b32adb71 Adapt codegen-unit tests to new CGU naming scheme. 2018-07-12 10:44:13 +02:00
Tinco Andringa
f0b1a781ac make pretty source comparison check be fatal (fixes #52255) 2018-07-11 15:21:14 +02:00
Bastien Orivel
933c299443 Dedupe filetime 2018-07-06 22:52:40 +02:00
mark
75d33cfa64 add edition compiletest header + fix tests 2018-06-26 19:32:00 -05:00
Kyle Simpson
ec08622192 compiletest: autoremove duplicate .nll.* files (#51204)
UI tests in bless mode should now check to see if `.nll.*` files have a
matching `.*` file. If a match is found, it will be deleted.
This should be extensible to other modes (i.e., Polonius).
On running with `--bless`, the two files removed in #51186 are, in turn,
removed automatically.
2018-06-08 01:10:34 +01:00
Johannes Nixdorf
665d6673d5 compiletest: escape CXX the same way as CC for MSVC 2018-05-31 12:01:50 +02:00
Santiago Pastorino
b39a1d6f1a
Run rustfmt 2018-05-30 14:36:23 -03:00
Santiago Pastorino
9df0a41321
Add polonius compare mode 2018-05-30 14:03:31 -03:00
bors
b4463d788b Auto merge of #50943 - oli-obk:cleanups, r=estebank
impl Trait diagnostic/test cleanups
2018-05-24 03:40:16 +00:00
Pascal Hertleif
7a738564d7
Update compiltest to use rustfix 0.3.1 2018-05-22 22:04:45 +02:00
Oliver Schneider
849c565e2f Prevent local paths into libstd from leaking into ui tests 2018-05-22 12:00:27 +02:00
bors
8319ef5b78 Auto merge of #50709 - alexcrichton:revert-musl, r=sfackler
Revert #50105 until regression is fixed

Discovered at https://github.com/rust-lang/rust/pull/50105#issuecomment-388630750 it looks like this caused a regression with i686 musl, so let's revert in the meantime while a fix is worked out
2018-05-19 03:10:53 +00:00
Mark Simulacrum
f83e4d7407
Rollup merge of #50806 - oli-obk:gesundheit, r=ehuss
Add `bless` x.py subcommand for easy ui test replacement

fixes #49815

r? @nikomatsakis
2018-05-17 13:51:26 -06:00
Alex Crichton
127977153a Revert "compiletest: escape CXX the same way as CC for MSVC"
This reverts commit 490d05055a.
2018-05-17 10:37:22 -07:00
Oliver Schneider
0ac2fd1ce2 Update docs and diagnostics 2018-05-17 16:28:36 +02:00
Oliver Schneider
74bfd94ec5 bless also produces .nll files now 2018-05-17 16:03:59 +02:00
Oliver Schneider
37dee69dac Add bless x.py subcommand for easy ui test replacement 2018-05-17 16:03:59 +02:00
Irina Popa
b63d7e2b1c Rename trans to codegen everywhere. 2018-05-17 15:08:30 +03:00
Eric Huss
b8473de7b9 Fix running multiple targets.
The aux dir, which previously had the `stage_id` embedded in it, was picking up remnants from previous runs.
2018-05-16 22:25:20 -07:00
Eric Huss
e3d8fc5044 compiletest: Run revisions as independent tests.
- The output of each test is now in its own directory.
- "auxiliary" output is now under the respective test directory.
- `stage_id` removed from filenames, and instead placed in the stamp file as a hash.  This helps keep path lengths down for Windows.

In brief, the new layout looks like this:
```
<build_base>/<relative_dir>/<testname>.<revision>.<mode>/
    stamp
    <testname>.err
    <testname>.out
    a (binary)
    auxiliary/lib<auxname>.dylib
    auxiliary/<auxname>/<auxname>.err
    auxiliary/<auxname>/<auxname>.out
```
(revision and mode are optional)
2018-05-16 22:25:20 -07:00
Eric Huss
2438434054 compiletest: rustfmt 2018-05-16 22:00:30 -07:00
Eric Huss
a90a963265 Fix run-make wasm tests
Fixes #50711
2018-05-15 16:39:21 -07:00
bors
0cd465087d Auto merge of #50105 - mixi:crt-included, r=alexcrichton
Use the correct crt*.o files when linking musl targets.

This is supposed to support optionally using the system copy of musl
libc instead of the included one if supported. This currently only
affects the start files, which is enough to allow building rustc on musl
targets.

Most of the changes are analogous to crt-static.

Excluding the start files is something musl based distributions usually patch into their copy of rustc:
  - eb064c8/community/rust/musl-fix-linux_musl_base.patch
  - 77400fc/srcpkgs/rust/patches/link-musl-dynamically.patch

For third-party distributions that not yet carry those patches it would be nice if it was supported without the need to patch upstream sources.

## Reasons
### What breaks?
Some start files were missed when originally writing the logic to swap in musl start files (gcc comes with its own start files, which are suppressed by -nostdlib, but not manually included later on). This caused #36710, which also affects rustc with the internal llvm copy or any other system libraries that need crtbegin/crtend.

### How is it fixed?
The system linker already has all the logic to decide which start files to include, so we can just defer to it (except of course if it doesn't target musl).

### Why is it optional?
In #40113 it was first tried to remove the start files, which broke compiling musl-targeting static binaries with a glibc-targeting compiler. This is why it eventually landed without removing the start files. Being an option side-steps the issue.

### Why are the start files still installed?
This has the nice side-effect, that the produced rust-std-* binaries can still be used by on a glibc-targeting system with a rustc built against glibc.

## Does it work?
With the following build script (using [musl-cross-make](https://github.com/richfelker/musl-cross-make)): https://shadowice.org/~mixi/rust-musl/build.sh, I was able to cross-compile a musl-host musl-targeting rustc on a glibc-based system. The resulting binaries are at https://shadowice.org/~mixi/rust-musl/binaries/. This also requires #50103 and #50104 (which are also applied to the branch the build script uses).
2018-05-11 19:46:16 +00:00
Johannes Nixdorf
490d05055a compiletest: escape CXX the same way as CC for MSVC 2018-05-11 09:02:14 +02:00
bors
c88992d001 Auto merge of #50000 - michaelwoerister:cross-lang-lto, r=alexcrichton
Add some groundwork for cross-language LTO.

Implements part of #49879:
- Adds a `-Z cross-lang-lto` flag to rustc
- Makes sure that bitcode is embedded in object files if the flag is set.

This should already allow for using cross language LTO for staticlibs (where one has to invoke the linker manually anyway). However, `rustc` will not try to enable LTO for its own linker invocations yet.

r? @alexcrichton
2018-05-07 08:41:07 +00:00
John Kåre Alsaker
e24cbe2da0 Misc tweaks 2018-05-05 20:36:46 +02:00
Alex Crichton
6f2d023028 Fold rustfix tests back into the UI test suite 2018-05-04 15:01:28 -07:00
Pascal Hertleif
a563027cb8 Use published rustfix 0.2 version 2018-05-04 15:01:28 -07:00
Alex Crichton
fa9e55faeb test: Make a dedicated testsuite for rustfix
This commit adds a dedicated mode to compiletest for running rustfix tests,
adding a new `src/test/rustfix` directory which will execute all tests as a
"rustfix" test, namely requiring that a `*.fixed` is next to the main file which
is the result of the rustfix project's application of fixes.

The `rustfix` crate is pulled in to actually perform the fixing, and the rustfix
compiletest mode will assert a few properties about the fixing:

* The expected fixed output must be the same as rustc's output suggestions
  applied to the original code.
* The fixed code must compile successfully
* The fixed code must have no further diagnostics emitted about it
2018-05-04 15:01:28 -07:00
Pascal Hertleif
b264504403 tidy 2018-05-04 15:01:28 -07:00