aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDavid Tolnay <dtolnay@gmail.com>2019-03-11 11:32:12 -0700
committerDavid Tolnay <dtolnay@gmail.com>2019-03-11 11:41:25 -0700
commit5659ef7ce9dcea0d33f48976b9086bbcdb783552 (patch)
tree70b034b558558ef7c7e93c6f5a82cb8bf0d348da /tests
parent3d87040cb046027267098b792c32ed828602f33e (diff)
downloadremain-5659ef7ce9dcea0d33f48976b9086bbcdb783552.tar.gz
Add error message tests
Diffstat (limited to 'tests')
-rw-r--r--tests/compiletest.rs25
-rw-r--r--tests/ui/enum.rs11
-rw-r--r--tests/ui/enum.stderr8
-rw-r--r--tests/ui/let-stable.rs19
-rw-r--r--tests/ui/let-stable.stderr8
-rw-r--r--tests/ui/let-unstable.rs22
-rw-r--r--tests/ui/let-unstable.stderr8
-rw-r--r--tests/ui/match-stable.rs19
-rw-r--r--tests/ui/match-stable.stderr8
-rw-r--r--tests/ui/match-unstable.rs22
-rw-r--r--tests/ui/match-unstable.stderr8
-rw-r--r--tests/ui/unsupported.rs10
-rw-r--r--tests/ui/unsupported.stderr8
-rwxr-xr-xtests/ui/update-references.sh38
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