diff options
author | David Tolnay <dtolnay@gmail.com> | 2019-03-11 11:32:12 -0700 |
---|---|---|
committer | David Tolnay <dtolnay@gmail.com> | 2019-03-11 11:41:25 -0700 |
commit | 5659ef7ce9dcea0d33f48976b9086bbcdb783552 (patch) | |
tree | 70b034b558558ef7c7e93c6f5a82cb8bf0d348da /tests | |
parent | 3d87040cb046027267098b792c32ed828602f33e (diff) | |
download | remain-5659ef7ce9dcea0d33f48976b9086bbcdb783552.tar.gz |
Add error message tests
Diffstat (limited to 'tests')
-rw-r--r-- | tests/compiletest.rs | 25 | ||||
-rw-r--r-- | tests/ui/enum.rs | 11 | ||||
-rw-r--r-- | tests/ui/enum.stderr | 8 | ||||
-rw-r--r-- | tests/ui/let-stable.rs | 19 | ||||
-rw-r--r-- | tests/ui/let-stable.stderr | 8 | ||||
-rw-r--r-- | tests/ui/let-unstable.rs | 22 | ||||
-rw-r--r-- | tests/ui/let-unstable.stderr | 8 | ||||
-rw-r--r-- | tests/ui/match-stable.rs | 19 | ||||
-rw-r--r-- | tests/ui/match-stable.stderr | 8 | ||||
-rw-r--r-- | tests/ui/match-unstable.rs | 22 | ||||
-rw-r--r-- | tests/ui/match-unstable.stderr | 8 | ||||
-rw-r--r-- | tests/ui/unsupported.rs | 10 | ||||
-rw-r--r-- | tests/ui/unsupported.stderr | 8 | ||||
-rwxr-xr-x | tests/ui/update-references.sh | 38 |
14 files changed, 214 insertions, 0 deletions
diff --git a/tests/compiletest.rs b/tests/compiletest.rs new file mode 100644 index 0000000..9c2e4c5 --- /dev/null +++ b/tests/compiletest.rs @@ -0,0 +1,25 @@ +#[test] +fn ui() { + if !version_check::is_nightly().unwrap() { + return; + } + + let mut config = compiletest::Config { + mode: compiletest::common::Mode::Ui, + src_base: std::path::PathBuf::from("tests/ui"), + target_rustcflags: Some(String::from( + "\ + --edition=2018 \ + -Z unstable-options \ + --extern remain \ + ", + )), + build_base: std::path::PathBuf::from("target/ui"), + ..Default::default() + }; + + config.link_deps(); + config.clean_rmeta(); + + compiletest::run_tests(&config); +} diff --git a/tests/ui/enum.rs b/tests/ui/enum.rs new file mode 100644 index 0000000..dc98475 --- /dev/null +++ b/tests/ui/enum.rs @@ -0,0 +1,11 @@ +use remain::sorted; + +#[sorted] +enum E { + Aaa, + Ccc(u8), + Ddd { u: u8 }, + Bbb(u8, u8), +} + +fn main() {} diff --git a/tests/ui/enum.stderr b/tests/ui/enum.stderr new file mode 100644 index 0000000..0adea5f --- /dev/null +++ b/tests/ui/enum.stderr @@ -0,0 +1,8 @@ +error: Bbb should sort before Ccc + --> $DIR/enum.rs:8:5 + | +8 | Bbb(u8, u8), + | ^^^ + +error: aborting due to previous error + diff --git a/tests/ui/let-stable.rs b/tests/ui/let-stable.rs new file mode 100644 index 0000000..b05d3e3 --- /dev/null +++ b/tests/ui/let-stable.rs @@ -0,0 +1,19 @@ +enum E { + Aaa, + Bbb(u8, u8), + Ccc(u8), + Ddd { u: u8 }, +} + +#[remain::check] +fn main() { + let value = E::Aaa; + + #[sorted] + let _ = match value { + E::Aaa => {} + E::Ccc(_) => {} + E::Ddd { u: _ } => {} + E::Bbb(_, _) => {} + }; +} diff --git a/tests/ui/let-stable.stderr b/tests/ui/let-stable.stderr new file mode 100644 index 0000000..af60670 --- /dev/null +++ b/tests/ui/let-stable.stderr @@ -0,0 +1,8 @@ +error: E::Bbb should sort before E::Ccc + --> $DIR/let-stable.rs:17:9 + | +17 | E::Bbb(_, _) => {} + | ^^^^^^ + +error: aborting due to previous error + diff --git a/tests/ui/let-unstable.rs b/tests/ui/let-unstable.rs new file mode 100644 index 0000000..8d65c52 --- /dev/null +++ b/tests/ui/let-unstable.rs @@ -0,0 +1,22 @@ +#![feature(proc_macro_hygiene, stmt_expr_attributes)] + +use remain::sorted; + +enum E { + Aaa, + Bbb(u8, u8), + Ccc(u8), + Ddd { u: u8 }, +} + +fn main() { + let value = E::Aaa; + + #[sorted] + let _ = match value { + E::Aaa => {} + E::Ccc(_) => {} + E::Ddd { u: _ } => {} + E::Bbb(_, _) => {} + }; +} diff --git a/tests/ui/let-unstable.stderr b/tests/ui/let-unstable.stderr new file mode 100644 index 0000000..f43795f --- /dev/null +++ b/tests/ui/let-unstable.stderr @@ -0,0 +1,8 @@ +error: E::Bbb should sort before E::Ccc + --> $DIR/let-unstable.rs:15:5 + | +15 | #[sorted] + | ^^^^^^^^^ + +error: aborting due to previous error + diff --git a/tests/ui/match-stable.rs b/tests/ui/match-stable.rs new file mode 100644 index 0000000..6bdade4 --- /dev/null +++ b/tests/ui/match-stable.rs @@ -0,0 +1,19 @@ +enum E { + Aaa, + Bbb(u8, u8), + Ccc(u8), + Ddd { u: u8 }, +} + +#[remain::check] +fn main() { + let value = E::Aaa; + + #[sorted] + match value { + E::Aaa => {} + E::Ccc(_) => {} + E::Ddd { u: _ } => {} + E::Bbb(_, _) => {} + } +} diff --git a/tests/ui/match-stable.stderr b/tests/ui/match-stable.stderr new file mode 100644 index 0000000..322c867 --- /dev/null +++ b/tests/ui/match-stable.stderr @@ -0,0 +1,8 @@ +error: E::Bbb should sort before E::Ccc + --> $DIR/match-stable.rs:17:9 + | +17 | E::Bbb(_, _) => {} + | ^^^^^^ + +error: aborting due to previous error + diff --git a/tests/ui/match-unstable.rs b/tests/ui/match-unstable.rs new file mode 100644 index 0000000..db047f1 --- /dev/null +++ b/tests/ui/match-unstable.rs @@ -0,0 +1,22 @@ +#![feature(proc_macro_hygiene, stmt_expr_attributes)] + +use remain::sorted; + +enum E { + Aaa, + Bbb(u8, u8), + Ccc(u8), + Ddd { u: u8 }, +} + +fn main() { + let value = E::Aaa; + + #[sorted] + match value { + E::Aaa => {} + E::Ccc(_) => {} + E::Ddd { u: _ } => {} + E::Bbb(_, _) => {} + } +} diff --git a/tests/ui/match-unstable.stderr b/tests/ui/match-unstable.stderr new file mode 100644 index 0000000..e1b49b3 --- /dev/null +++ b/tests/ui/match-unstable.stderr @@ -0,0 +1,8 @@ +error: E::Bbb should sort before E::Ccc + --> $DIR/match-unstable.rs:15:5 + | +15 | #[sorted] + | ^^^^^^^^^ + +error: aborting due to previous error + diff --git a/tests/ui/unsupported.rs b/tests/ui/unsupported.rs new file mode 100644 index 0000000..b11c974 --- /dev/null +++ b/tests/ui/unsupported.rs @@ -0,0 +1,10 @@ +#[remain::check] +fn main() { + let value = 0; + + #[sorted] + match value { + 0..=20 => {} + _ => {} + } +} diff --git a/tests/ui/unsupported.stderr b/tests/ui/unsupported.stderr new file mode 100644 index 0000000..20180d2 --- /dev/null +++ b/tests/ui/unsupported.stderr @@ -0,0 +1,8 @@ +error: unsupported by #[remain::sorted] + --> $DIR/unsupported.rs:7:9 + | +7 | 0..=20 => {} + | ^^^^^^ + +error: aborting due to previous error + diff --git a/tests/ui/update-references.sh b/tests/ui/update-references.sh new file mode 100755 index 0000000..ee500b6 --- /dev/null +++ b/tests/ui/update-references.sh @@ -0,0 +1,38 @@ +#!/bin/bash +# +# Copyright 2015 The Rust Project Developers. See the COPYRIGHT +# file at the top-level directory of this distribution and at +# http://rust-lang.org/COPYRIGHT. +# +# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +# option. This file may not be copied, modified, or distributed +# except according to those terms. + +# A script to update the references for particular tests. The idea is +# that you do a run, which will generate files in the build directory +# containing the (normalized) actual output of the compiler. This +# script will then copy that output and replace the "expected output" +# files. You can then commit the changes. +# +# If you find yourself manually editing a foo.stderr file, you're +# doing it wrong. + +cd "$(dirname "${BASH_SOURCE[0]}")" +BUILD_DIR="../../target/ui" + +for testcase in *.rs; do + STDERR_NAME="${testcase/%.rs/.stderr}" + STDOUT_NAME="${testcase/%.rs/.stdout}" + if [ -f "$BUILD_DIR/$STDOUT_NAME" ] && \ + ! (diff "$BUILD_DIR/$STDOUT_NAME" "$STDOUT_NAME" >& /dev/null); then + echo "updating $STDOUT_NAME" + cp "$BUILD_DIR/$STDOUT_NAME" "$STDOUT_NAME" + fi + if [ -f "$BUILD_DIR/$STDERR_NAME" ] && \ + ! (diff "$BUILD_DIR/$STDERR_NAME" "$STDERR_NAME" >& /dev/null); then + echo "updating $STDERR_NAME" + cp "$BUILD_DIR/$STDERR_NAME" "$STDERR_NAME" + fi +done |