Skip to content

Commit bea3e83

Browse files
committed
Rewrite .gitattributes CRLF ui tests into run-make tests
1 parent 42245d3 commit bea3e83

15 files changed

+449
-365
lines changed
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
2+
3+
Erroneous code examples:
4+
5+
```compile_fail,E0308
6+
fn plus_one(x: i32) -> i32 {
7+
x + 1
8+
}
9+
10+
plus_one(\"Not a number\");
11+
// ^^^^^^^^^^^^^^ expected `i32`, found `&str`
12+
13+
if \"Not a bool\" {
14+
// ^^^^^^^^^^^^ expected `bool`, found `&str`
15+
}
16+
17+
let x: f32 = \"Not a float\";
18+
// --- ^^^^^^^^^^^^^ expected `f32`, found `&str`
19+
// |
20+
// expected due to this
21+
```
22+
23+
This error occurs when an expression was used in a place where the compiler
24+
expected an expression of a different type. It can occur in several cases, the
25+
most common being when calling a function and passing an argument which has a
26+
different type than the matching type in the function declaration.
27+
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = 1; // Error in the middle of line.","highlight_start":XX,"highlight_end":XX}],"label":"expected `String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":false,"text":[{"text":"let s : String = 1; // Error in the middle of line.","highlight_start":XX,"highlight_end":XX}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = 1; // Error in the middle of line.","highlight_start":XX,"highlight_end":XX}],"label":null,"suggested_replacement":".to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf-multifile-aux.rs:LL:CC: error[E0308]: mismatched types: expected `String`, found integer
28+
"}
29+
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
30+
31+
Erroneous code examples:
32+
33+
```compile_fail,E0308
34+
fn plus_one(x: i32) -> i32 {
35+
x + 1
36+
}
37+
38+
plus_one(\"Not a number\");
39+
// ^^^^^^^^^^^^^^ expected `i32`, found `&str`
40+
41+
if \"Not a bool\" {
42+
// ^^^^^^^^^^^^ expected `bool`, found `&str`
43+
}
44+
45+
let x: f32 = \"Not a float\";
46+
// --- ^^^^^^^^^^^^^ expected `f32`, found `&str`
47+
// |
48+
// expected due to this
49+
```
50+
51+
This error occurs when an expression was used in a place where the compiler
52+
expected an expression of a different type. It can occur in several cases, the
53+
most common being when calling a function and passing an argument which has a
54+
different type than the matching type in the function declaration.
55+
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = 1","highlight_start":XX,"highlight_end":XX}],"label":"expected `String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":false,"text":[{"text":"let s : String = 1","highlight_start":XX,"highlight_end":XX}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = 1","highlight_start":XX,"highlight_end":XX}],"label":null,"suggested_replacement":".to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf-multifile-aux.rs:LL:CC: error[E0308]: mismatched types: expected `String`, found integer
56+
"}
57+
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
58+
59+
Erroneous code examples:
60+
61+
```compile_fail,E0308
62+
fn plus_one(x: i32) -> i32 {
63+
x + 1
64+
}
65+
66+
plus_one(\"Not a number\");
67+
// ^^^^^^^^^^^^^^ expected `i32`, found `&str`
68+
69+
if \"Not a bool\" {
70+
// ^^^^^^^^^^^^ expected `bool`, found `&str`
71+
}
72+
73+
let x: f32 = \"Not a float\";
74+
// --- ^^^^^^^^^^^^^ expected `f32`, found `&str`
75+
// |
76+
// expected due to this
77+
```
78+
79+
This error occurs when an expression was used in a place where the compiler
80+
expected an expression of a different type. It can occur in several cases, the
81+
most common being when calling a function and passing an argument which has a
82+
different type than the matching type in the function declaration.
83+
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"1; // Error after the newline.","highlight_start":XX,"highlight_end":XX}],"label":"expected `String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":false,"text":[{"text":"let s : String =","highlight_start":XX,"highlight_end":XX}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"1; // Error after the newline.","highlight_start":XX,"highlight_end":XX}],"label":null,"suggested_replacement":".to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf-multifile-aux.rs:LL:CC: error[E0308]: mismatched types: expected `String`, found integer
84+
"}
85+
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
86+
87+
Erroneous code examples:
88+
89+
```compile_fail,E0308
90+
fn plus_one(x: i32) -> i32 {
91+
x + 1
92+
}
93+
94+
plus_one(\"Not a number\");
95+
// ^^^^^^^^^^^^^^ expected `i32`, found `&str`
96+
97+
if \"Not a bool\" {
98+
// ^^^^^^^^^^^^ expected `bool`, found `&str`
99+
}
100+
101+
let x: f32 = \"Not a float\";
102+
// --- ^^^^^^^^^^^^^ expected `f32`, found `&str`
103+
// |
104+
// expected due to this
105+
```
106+
107+
This error occurs when an expression was used in a place where the compiler
108+
expected an expression of a different type. It can occur in several cases, the
109+
most common being when calling a function and passing an argument which has a
110+
different type than the matching type in the function declaration.
111+
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = (","highlight_start":XX,"highlight_end":XX},{"text":"); // Error spanning the newline.","highlight_start":XX,"highlight_end":XX}],"label":"expected `String`, found `()`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":false,"text":[{"text":"let s : String = (","highlight_start":XX,"highlight_end":XX}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"$DIR/json-bom-plus-crlf-multifile-aux.rs:LL:CC: error[E0308]: mismatched types: expected `String`, found `()`
112+
"}
113+
{"$message_type":"diagnostic","message":"aborting due to 4 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 4 previous errors
114+
"}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
//@ reference: input.byte-order-mark
2+
//@ reference: input.crlf
3+
//@ ignore-cross-compile
4+
// ignore-tidy-linelength
5+
6+
use run_make_support::{cwd, diff, rfs, rustc};
7+
8+
fn main() {
9+
let aux_content = "\u{FEFF}\
10+
pub fn test() {\r\n\
11+
\r\n\
12+
let s : String = 1; // Error in the middle of line.\r\n\
13+
\r\n\
14+
let s : String = 1\r\n\
15+
; // Error before the newline.\r\n\
16+
\r\n\
17+
let s : String =\r\n\
18+
1; // Error after the newline.\r\n\
19+
\r\n\
20+
let s : String = (\r\n\
21+
); // Error spanning the newline.\r\n\
22+
}\r\n";
23+
24+
rfs::write(cwd().join("json-bom-plus-crlf-multifile-aux.rs"), aux_content);
25+
26+
let aux_bytes = rfs::read(cwd().join("json-bom-plus-crlf-multifile-aux.rs"));
27+
assert!(aux_bytes.starts_with(b"\xEF\xBB\xBF"), "File must start with UTF-8 BOM");
28+
assert!(aux_bytes.windows(2).any(|w| w == b"\r\n"), "File must contain CRLF line endings");
29+
30+
let main_content = "\u{FEFF}\
31+
#[path = \"json-bom-plus-crlf-multifile-aux.rs\"]\r\n\
32+
mod json_bom_plus_crlf_multifile_aux;\r\n\
33+
\r\n\
34+
fn main() {\r\n\
35+
json_bom_plus_crlf_multifile_aux::test();\r\n\
36+
}\r\n";
37+
38+
rfs::write(cwd().join("json-bom-plus-crlf-multifile.rs"), main_content);
39+
40+
let output = rustc()
41+
.input(cwd().join("json-bom-plus-crlf-multifile.rs"))
42+
.json("diagnostic-short")
43+
.error_format("json")
44+
.ui_testing()
45+
.run_fail()
46+
.stderr_utf8();
47+
48+
diff()
49+
.expected_file("json-bom-plus-crlf-multifile.stderr")
50+
.actual_text("stderr", &output)
51+
.normalize(r"\\n", "\n")
52+
.normalize(r"\\r\\n", "\n")
53+
.normalize(r#""line_start":\d+"#, r#""line_start":LL"#)
54+
.normalize(r#""line_end":\d+"#, r#""line_end":LL"#)
55+
.normalize(r#""column_start":\d+"#, r#""column_start":CC"#)
56+
.normalize(r#""column_end":\d+"#, r#""column_end":CC"#)
57+
.normalize(r#""byte_start":\d+"#, r#""byte_start":XXX"#)
58+
.normalize(r#""byte_end":\d+"#, r#""byte_end":XXX"#)
59+
.normalize(r#""highlight_start":\d+"#, r#""highlight_start":XX"#)
60+
.normalize(r#""highlight_end":\d+"#, r#""highlight_end":XX"#)
61+
.normalize(
62+
r#""file_name":"[^"]*json-bom-plus-crlf-multifile-aux\.rs""#,
63+
r#""file_name":"$$DIR/json-bom-plus-crlf-multifile-aux.rs""#,
64+
)
65+
.normalize(
66+
r#""rendered":"(?:[^"]*/)?json-bom-plus-crlf-multifile-aux\.rs:\d+:\d+:"#,
67+
r#""rendered":"$$DIR/json-bom-plus-crlf-multifile-aux.rs:LL:CC:"#,
68+
)
69+
.normalize(
70+
r#""rendered":"(?:[^"]*/)?json-bom-plus-crlf-multifile-aux\.rs:\d+:\d+ error"#,
71+
r#""rendered":"$$DIR/json-bom-plus-crlf-multifile-aux.rs:LL:CC error"#,
72+
)
73+
.normalize(
74+
r#""rendered":"[a-zA-Z]:\\(?:[^\\"]+\\)*json-bom-plus-crlf\.rs:\d+:\d+:"#,
75+
r#""rendered":"$$DIR/json-bom-plus-crlf.rs:LL:CC:"#,
76+
)
77+
.normalize(
78+
r#""rendered":"^(?<ParentPath>(?:[a-zA-Z]\:|\\\\[\w\s\_\.-]+\\\\[\w\s\.$\_\.-]+)\\\\(?:[\w\s\.\_\.-]+\\\\)*)(?<BaseName>[\w\s\.\_\.-]*?)(?::\d+:\d+: error)?$"#,
79+
r#""rendered":"$$DIR/json-bom-plus-crlf.rs:LL:CC error"#,
80+
)
81+
.run();
82+
}

0 commit comments

Comments
 (0)