Skip to content

Commit 6a2dc7a

Browse files
authored
Merge pull request diesel-rs#2557 from pksunkara/trybuild
Moved error ui to trybuild tests
2 parents cba105b + 86f2326 commit 6a2dc7a

198 files changed

Lines changed: 3029 additions & 690 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,8 @@ jobs:
356356
- name: Run clippy
357357
uses: actions-rs/cargo@v1
358358
with:
359-
command: clippy
359+
command: clippy
360+
args: --all --exclude=diesel_compile_tests
360361

361362
- name: Check formating
362363
uses: actions-rs/cargo@v1
@@ -423,4 +424,4 @@ jobs:
423424
command: check
424425
# This example pulls generic-array v0.14.1 that cannot compile with rustc 1.40.0.
425426
# We could exclude it as it won't affect our MSRV.
426-
args: --all --exclude=advanced-blog-cli
427+
args: --all --exclude=advanced-blog-cli --exclude=diesel_compile_tests

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
target
22
Cargo.lock
33
!diesel_cli/Cargo.lock
4-
.env
4+
.env

Cargo.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ members = [
33
"diesel",
44
"diesel_cli",
55
"diesel_derives",
6-
# FIXME: getting "multiple matching crates for `diesel`" because of the shared build directory
7-
# "diesel_compile_tests",
6+
"diesel_compile_tests",
87
"diesel_tests",
98
"diesel_migrations",
109
"diesel_migrations/migrations_internals",

diesel_compile_tests/Cargo.toml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ name = "diesel_compile_tests"
33
version = "0.1.0"
44
authors = ["Sean Griffin <sean@seantheprogrammer.com>"]
55

6-
[workspace]
7-
86
[dependencies]
97
diesel = { version = "2.0.0", default-features = false, features = ["extras", "sqlite", "postgres", "mysql", "unstable"], path = "../diesel" }
10-
compiletest_rs = "=0.4"
8+
trybuild = "1.0.35"

diesel_compile_tests/tests/compile-fail/must_use_query_methods.rs

Lines changed: 0 additions & 36 deletions
This file was deleted.

diesel_compile_tests/tests/compile-fail/select_for_update_cannot_be_mixed_with_some_clauses.rs

Lines changed: 0 additions & 46 deletions
This file was deleted.

diesel_compile_tests/tests/compile_tests.rs

Lines changed: 0 additions & 32 deletions
This file was deleted.

diesel_compile_tests/tests/compile-fail/aggregate_expression_requires_column_from_same_table.rs renamed to diesel_compile_tests/tests/fail/aggregate_expression_requires_column_from_same_table.rs

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#[macro_use]
21
extern crate diesel;
32

43
use diesel::*;
@@ -18,15 +17,7 @@ table! {
1817
fn main() {
1918
use diesel::dsl::*;
2019
let source = users::table.select(sum(posts::id));
21-
//~^ ERROR E0277
22-
//~| ERROR AppearsInFromClause
2320
let source = users::table.select(avg(posts::id));
24-
//~^ ERROR E0277
25-
//~| ERROR AppearsInFromClause
2621
let source = users::table.select(max(posts::id));
27-
//~^ ERROR E0277
28-
//~| ERROR AppearsInFromClause
2922
let source = users::table.select(min(posts::id));
30-
//~^ ERROR E0277
31-
//~| ERROR AppearsInFromClause
3223
}
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
error[E0277]: the trait bound `posts::columns::id: diesel::SelectableExpression<users::table>` is not satisfied
2+
--> $DIR/aggregate_expression_requires_column_from_same_table.rs:19:38
3+
|
4+
19 | let source = users::table.select(sum(posts::id));
5+
| ^^^^^^^^^^^^^^ the trait `diesel::SelectableExpression<users::table>` is not implemented for `posts::columns::id`
6+
|
7+
= help: the following implementations were found:
8+
<posts::columns::id as diesel::SelectableExpression<diesel::query_builder::SelectStatement<From>>>
9+
<posts::columns::id as diesel::SelectableExpression<diesel::query_source::joins::Join<Left, Right, diesel::query_source::joins::Inner>>>
10+
<posts::columns::id as diesel::SelectableExpression<diesel::query_source::joins::Join<Left, Right, diesel::query_source::joins::LeftOuter>>>
11+
<posts::columns::id as diesel::SelectableExpression<diesel::query_source::joins::JoinOn<Join, On>>>
12+
<posts::columns::id as diesel::SelectableExpression<posts::table>>
13+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::nullable::Nullable<posts::columns::id>`
14+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::functions::aggregate_folding::sum::sum<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>`
15+
= note: required because of the requirements on the impl of `diesel::query_dsl::select_dsl::SelectDsl<diesel::expression::functions::aggregate_folding::sum::sum<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>>` for `diesel::query_builder::SelectStatement<users::table>`
16+
17+
error[E0277]: the trait bound `users::table: diesel::query_source::AppearsInFromClause<posts::table>` is not satisfied
18+
--> $DIR/aggregate_expression_requires_column_from_same_table.rs:19:31
19+
|
20+
19 | let source = users::table.select(sum(posts::id));
21+
| ^^^^^^ the trait `diesel::query_source::AppearsInFromClause<posts::table>` is not implemented for `users::table`
22+
|
23+
= help: the following implementations were found:
24+
<users::table as diesel::query_source::AppearsInFromClause<users::table>>
25+
= note: required because of the requirements on the impl of `diesel::AppearsOnTable<users::table>` for `posts::columns::id`
26+
= note: required because of the requirements on the impl of `diesel::AppearsOnTable<users::table>` for `diesel::expression::nullable::Nullable<posts::columns::id>`
27+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::nullable::Nullable<posts::columns::id>`
28+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::functions::aggregate_folding::sum::sum<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>`
29+
= note: required because of the requirements on the impl of `diesel::query_dsl::select_dsl::SelectDsl<diesel::expression::functions::aggregate_folding::sum::sum<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>>` for `diesel::query_builder::SelectStatement<users::table>`
30+
31+
error[E0277]: the trait bound `posts::columns::id: diesel::SelectableExpression<users::table>` is not satisfied
32+
--> $DIR/aggregate_expression_requires_column_from_same_table.rs:20:38
33+
|
34+
20 | let source = users::table.select(avg(posts::id));
35+
| ^^^^^^^^^^^^^^ the trait `diesel::SelectableExpression<users::table>` is not implemented for `posts::columns::id`
36+
|
37+
= help: the following implementations were found:
38+
<posts::columns::id as diesel::SelectableExpression<diesel::query_builder::SelectStatement<From>>>
39+
<posts::columns::id as diesel::SelectableExpression<diesel::query_source::joins::Join<Left, Right, diesel::query_source::joins::Inner>>>
40+
<posts::columns::id as diesel::SelectableExpression<diesel::query_source::joins::Join<Left, Right, diesel::query_source::joins::LeftOuter>>>
41+
<posts::columns::id as diesel::SelectableExpression<diesel::query_source::joins::JoinOn<Join, On>>>
42+
<posts::columns::id as diesel::SelectableExpression<posts::table>>
43+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::nullable::Nullable<posts::columns::id>`
44+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::functions::aggregate_folding::avg::avg<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>`
45+
= note: required because of the requirements on the impl of `diesel::query_dsl::select_dsl::SelectDsl<diesel::expression::functions::aggregate_folding::avg::avg<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>>` for `diesel::query_builder::SelectStatement<users::table>`
46+
47+
error[E0277]: the trait bound `users::table: diesel::query_source::AppearsInFromClause<posts::table>` is not satisfied
48+
--> $DIR/aggregate_expression_requires_column_from_same_table.rs:20:31
49+
|
50+
20 | let source = users::table.select(avg(posts::id));
51+
| ^^^^^^ the trait `diesel::query_source::AppearsInFromClause<posts::table>` is not implemented for `users::table`
52+
|
53+
= help: the following implementations were found:
54+
<users::table as diesel::query_source::AppearsInFromClause<users::table>>
55+
= note: required because of the requirements on the impl of `diesel::AppearsOnTable<users::table>` for `posts::columns::id`
56+
= note: required because of the requirements on the impl of `diesel::AppearsOnTable<users::table>` for `diesel::expression::nullable::Nullable<posts::columns::id>`
57+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::nullable::Nullable<posts::columns::id>`
58+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::functions::aggregate_folding::avg::avg<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>`
59+
= note: required because of the requirements on the impl of `diesel::query_dsl::select_dsl::SelectDsl<diesel::expression::functions::aggregate_folding::avg::avg<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>>` for `diesel::query_builder::SelectStatement<users::table>`
60+
61+
error[E0277]: the trait bound `posts::columns::id: diesel::SelectableExpression<users::table>` is not satisfied
62+
--> $DIR/aggregate_expression_requires_column_from_same_table.rs:21:38
63+
|
64+
21 | let source = users::table.select(max(posts::id));
65+
| ^^^^^^^^^^^^^^ the trait `diesel::SelectableExpression<users::table>` is not implemented for `posts::columns::id`
66+
|
67+
= help: the following implementations were found:
68+
<posts::columns::id as diesel::SelectableExpression<diesel::query_builder::SelectStatement<From>>>
69+
<posts::columns::id as diesel::SelectableExpression<diesel::query_source::joins::Join<Left, Right, diesel::query_source::joins::Inner>>>
70+
<posts::columns::id as diesel::SelectableExpression<diesel::query_source::joins::Join<Left, Right, diesel::query_source::joins::LeftOuter>>>
71+
<posts::columns::id as diesel::SelectableExpression<diesel::query_source::joins::JoinOn<Join, On>>>
72+
<posts::columns::id as diesel::SelectableExpression<posts::table>>
73+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::nullable::Nullable<posts::columns::id>`
74+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::functions::aggregate_ordering::max::max<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>`
75+
= note: required because of the requirements on the impl of `diesel::query_dsl::select_dsl::SelectDsl<diesel::expression::functions::aggregate_ordering::max::max<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>>` for `diesel::query_builder::SelectStatement<users::table>`
76+
77+
error[E0277]: the trait bound `users::table: diesel::query_source::AppearsInFromClause<posts::table>` is not satisfied
78+
--> $DIR/aggregate_expression_requires_column_from_same_table.rs:21:31
79+
|
80+
21 | let source = users::table.select(max(posts::id));
81+
| ^^^^^^ the trait `diesel::query_source::AppearsInFromClause<posts::table>` is not implemented for `users::table`
82+
|
83+
= help: the following implementations were found:
84+
<users::table as diesel::query_source::AppearsInFromClause<users::table>>
85+
= note: required because of the requirements on the impl of `diesel::AppearsOnTable<users::table>` for `posts::columns::id`
86+
= note: required because of the requirements on the impl of `diesel::AppearsOnTable<users::table>` for `diesel::expression::nullable::Nullable<posts::columns::id>`
87+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::nullable::Nullable<posts::columns::id>`
88+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::functions::aggregate_ordering::max::max<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>`
89+
= note: required because of the requirements on the impl of `diesel::query_dsl::select_dsl::SelectDsl<diesel::expression::functions::aggregate_ordering::max::max<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>>` for `diesel::query_builder::SelectStatement<users::table>`
90+
91+
error[E0277]: the trait bound `posts::columns::id: diesel::SelectableExpression<users::table>` is not satisfied
92+
--> $DIR/aggregate_expression_requires_column_from_same_table.rs:22:38
93+
|
94+
22 | let source = users::table.select(min(posts::id));
95+
| ^^^^^^^^^^^^^^ the trait `diesel::SelectableExpression<users::table>` is not implemented for `posts::columns::id`
96+
|
97+
= help: the following implementations were found:
98+
<posts::columns::id as diesel::SelectableExpression<diesel::query_builder::SelectStatement<From>>>
99+
<posts::columns::id as diesel::SelectableExpression<diesel::query_source::joins::Join<Left, Right, diesel::query_source::joins::Inner>>>
100+
<posts::columns::id as diesel::SelectableExpression<diesel::query_source::joins::Join<Left, Right, diesel::query_source::joins::LeftOuter>>>
101+
<posts::columns::id as diesel::SelectableExpression<diesel::query_source::joins::JoinOn<Join, On>>>
102+
<posts::columns::id as diesel::SelectableExpression<posts::table>>
103+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::nullable::Nullable<posts::columns::id>`
104+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::functions::aggregate_ordering::min::min<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>`
105+
= note: required because of the requirements on the impl of `diesel::query_dsl::select_dsl::SelectDsl<diesel::expression::functions::aggregate_ordering::min::min<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>>` for `diesel::query_builder::SelectStatement<users::table>`
106+
107+
error[E0277]: the trait bound `users::table: diesel::query_source::AppearsInFromClause<posts::table>` is not satisfied
108+
--> $DIR/aggregate_expression_requires_column_from_same_table.rs:22:31
109+
|
110+
22 | let source = users::table.select(min(posts::id));
111+
| ^^^^^^ the trait `diesel::query_source::AppearsInFromClause<posts::table>` is not implemented for `users::table`
112+
|
113+
= help: the following implementations were found:
114+
<users::table as diesel::query_source::AppearsInFromClause<users::table>>
115+
= note: required because of the requirements on the impl of `diesel::AppearsOnTable<users::table>` for `posts::columns::id`
116+
= note: required because of the requirements on the impl of `diesel::AppearsOnTable<users::table>` for `diesel::expression::nullable::Nullable<posts::columns::id>`
117+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::nullable::Nullable<posts::columns::id>`
118+
= note: required because of the requirements on the impl of `diesel::SelectableExpression<users::table>` for `diesel::expression::functions::aggregate_ordering::min::min<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>`
119+
= note: required because of the requirements on the impl of `diesel::query_dsl::select_dsl::SelectDsl<diesel::expression::functions::aggregate_ordering::min::min<diesel::sql_types::Integer, diesel::expression::nullable::Nullable<posts::columns::id>>>` for `diesel::query_builder::SelectStatement<users::table>`

diesel_compile_tests/tests/compile-fail/any_is_only_selectable_if_inner_expr_is_selectable.rs renamed to diesel_compile_tests/tests/fail/any_is_only_selectable_if_inner_expr_is_selectable.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
#[macro_use] extern crate diesel;
1+
extern crate diesel;
22

3-
use diesel::*;
43
use diesel::dsl::*;
4+
use diesel::*;
55

66
table! {
77
stuff {
@@ -29,5 +29,4 @@ fn main() {
2929

3030
let _ = stuff.filter(name.eq(any(more_stuff::names)))
3131
.load(&conn);
32-
//~^ ERROR AppearsInFromClause
3332
}

0 commit comments

Comments
 (0)