Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add check for missing tests for error codes #65135

Merged
merged 2 commits into from
Oct 9, 2019

Conversation

GuillaumeGomez
Copy link
Member

@rust-highfive
Copy link
Collaborator

Some changes occurred in diagnostic error codes

cc @GuillaumeGomez

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Oct 5, 2019
@rust-highfive
Copy link
Collaborator

The job mingw-check of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-10-05T16:53:59.1422605Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-10-05T16:53:59.1609391Z ##[command]git config gc.auto 0
2019-10-05T16:53:59.1682877Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-10-05T16:53:59.1742965Z ##[command]git config --get-all http.proxy
2019-10-05T16:53:59.1898621Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/65135/merge:refs/remotes/pull/65135/merge
---
2019-10-05T16:58:49.2587583Z    Compiling serde_derive v1.0.81
2019-10-05T16:59:06.7220218Z    Compiling serde_json v1.0.40
2019-10-05T16:59:07.1082498Z    Compiling toml v0.5.3
2019-10-05T16:59:10.0615708Z    Compiling bootstrap v0.0.0 (/checkout/src/bootstrap)
2019-10-05T16:59:11.6228081Z error[E0609]: no field `stage` on type `test::ErrorCodes`
2019-10-05T16:59:11.6238384Z    --> src/bootstrap/test.rs:539:26
2019-10-05T16:59:11.6343798Z 539 |         let stage = self.stage;
2019-10-05T16:59:11.6344135Z     |                          ^^^^^ unknown field
2019-10-05T16:59:11.6347593Z     |
2019-10-05T16:59:11.6347853Z     = note: available fields are: `compiler`
2019-10-05T16:59:11.6347853Z     = note: available fields are: `compiler`
2019-10-05T16:59:11.6347981Z 
2019-10-05T16:59:11.6348166Z error[E0609]: no field `host` on type `test::ErrorCodes`
2019-10-05T16:59:11.6348893Z    --> src/bootstrap/test.rs:540:25
2019-10-05T16:59:11.6349622Z 540 |         let host = self.host;
2019-10-05T16:59:11.6350132Z     |                         ^^^^ unknown field
2019-10-05T16:59:11.6350390Z     |
2019-10-05T16:59:11.6350672Z     = note: available fields are: `compiler`
---
2019-10-05T16:59:13.2590846Z == clock drift check ==
2019-10-05T16:59:13.2605888Z   local time: Sat Oct  5 16:59:13 UTC 2019
2019-10-05T16:59:13.4114678Z   network time: Sat, 05 Oct 2019 16:59:13 GMT
2019-10-05T16:59:13.4114949Z == end clock drift check ==
2019-10-05T16:59:15.9883608Z ##[error]Bash exited with code '1'.
2019-10-05T16:59:15.9918081Z ##[section]Starting: Checkout
2019-10-05T16:59:15.9919701Z ==============================================================================
2019-10-05T16:59:15.9919771Z Task         : Get sources
2019-10-05T16:59:15.9919817Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@Mark-Simulacrum
Copy link
Member

I think there's some similar code in tidy already (with a plausibly similar purpose? Not sure). Could you move this into tidy instead of adding another crate?

@GuillaumeGomez
Copy link
Member Author

Sure! I wanted to ask you a few questions about to handle this but you answered it. :)

@GuillaumeGomez
Copy link
Member Author

Moved it into tidy.

@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-10-06T00:34:37.1587772Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-10-06T00:34:37.1821355Z ##[command]git config gc.auto 0
2019-10-06T00:34:37.1878506Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-10-06T00:34:37.1932227Z ##[command]git config --get-all http.proxy
2019-10-06T00:34:37.2083655Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/65135/merge:refs/remotes/pull/65135/merge
---
2019-10-06T01:35:45.0765559Z .................................................................................................... 1500/9104
2019-10-06T01:35:52.0364231Z .................................................................................................... 1600/9104
2019-10-06T01:36:01.2682736Z .................................................................................................... 1700/9104
2019-10-06T01:36:10.6555683Z .......i...............i............................................................................ 1800/9104
2019-10-06T01:36:18.1188117Z ..................................................................................................ii 1900/9104
2019-10-06T01:36:34.4573181Z iii................................................................................................. 2000/9104
2019-10-06T01:36:43.1560052Z .................................................................................................... 2200/9104
2019-10-06T01:36:45.8162724Z .................................................................................................... 2300/9104
2019-10-06T01:36:52.1725717Z .................................................................................................... 2400/9104
2019-10-06T01:36:57.7320667Z .................................................................................................... 2500/9104
---
2019-10-06T01:39:52.7018392Z .......................................................................................i............ 4700/9104
2019-10-06T01:40:00.5579782Z ...i................................................................................................ 4800/9104
2019-10-06T01:40:11.2325232Z .................................................................................................... 4900/9104
2019-10-06T01:40:16.8631217Z .................................................................................................... 5000/9104
2019-10-06T01:40:28.9339673Z ................................................................................ii.ii............... 5100/9104
2019-10-06T01:40:38.3786746Z .................................................................................................... 5300/9104
2019-10-06T01:40:48.2386572Z .................................................................................................... 5400/9104
2019-10-06T01:40:55.0779268Z ..............................................i..................................................... 5500/9104
2019-10-06T01:41:01.9929916Z .................................................................................................... 5600/9104
2019-10-06T01:41:01.9929916Z .................................................................................................... 5600/9104
2019-10-06T01:41:12.7828863Z .................................................................................................... 5700/9104
2019-10-06T01:41:20.6192433Z ...........................................ii...i..ii...........i................................... 5800/9104
2019-10-06T01:41:46.5125709Z .................................................................................................... 6000/9104
2019-10-06T01:41:55.2243661Z .................................................................................................... 6100/9104
2019-10-06T01:41:55.2243661Z .................................................................................................... 6100/9104
2019-10-06T01:42:06.3786951Z .................................................i..ii.............................................. 6200/9104
2019-10-06T01:42:30.5499886Z .................................................................................................... 6400/9104
2019-10-06T01:42:32.7736803Z .........i.......................................................................................... 6500/9104
2019-10-06T01:42:34.9147748Z .................................................................................i.................. 6600/9104
2019-10-06T01:42:37.5729072Z .................................................................................................... 6700/9104
---
2019-10-06T01:47:14.3780797Z  finished in 5.527
2019-10-06T01:47:14.3985202Z Check compiletest suite=codegen mode=codegen (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-10-06T01:47:14.5711812Z 
2019-10-06T01:47:14.5712062Z running 150 tests
2019-10-06T01:47:17.8640603Z i....iii......iii..iiii....i.............................i..i..................i....i.........ii.i.i 100/150
2019-10-06T01:47:19.8488637Z ..iiii..............i.........iii.i.......ii......
2019-10-06T01:47:19.8489130Z 
2019-10-06T01:47:19.8493974Z  finished in 5.451
2019-10-06T01:47:19.8687926Z Check compiletest suite=codegen-units mode=codegen-units (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-10-06T01:47:20.0337312Z 
---
2019-10-06T01:47:22.1175792Z  finished in 2.248
2019-10-06T01:47:22.1360264Z Check compiletest suite=assembly mode=assembly (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-10-06T01:47:22.2947171Z 
2019-10-06T01:47:22.2948217Z running 9 tests
2019-10-06T01:47:22.2949437Z iiiiiiiii
2019-10-06T01:47:22.2949766Z 
2019-10-06T01:47:22.2949858Z  finished in 0.158
2019-10-06T01:47:22.3129434Z Check compiletest suite=incremental mode=incremental (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-10-06T01:47:22.4779364Z 
---
2019-10-06T01:47:40.7128539Z  finished in 18.399
2019-10-06T01:47:40.7322605Z Check compiletest suite=debuginfo mode=debuginfo-gdb+lldb (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-10-06T01:47:40.8964720Z 
2019-10-06T01:47:40.8965043Z running 123 tests
2019-10-06T01:48:04.6905349Z .iiiii...i.....i..i...i..i.i.i..i.ii..i.i.....i..i....ii..........iiii..........i...ii...i.......ii. 100/123
2019-10-06T01:48:09.3608334Z i.i.i......iii.i.....ii
2019-10-06T01:48:09.3609883Z 
2019-10-06T01:48:09.3616226Z  finished in 28.629
2019-10-06T01:48:09.3626915Z Uplifting stage1 rustc (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-10-06T01:48:09.3628089Z Copying stage2 rustc from stage1 (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu / x86_64-unknown-linux-gnu)
---
2019-10-06T02:01:01.9309105Z 
2019-10-06T02:01:01.9317593Z    Doc-tests core
2019-10-06T02:01:07.0125341Z 
2019-10-06T02:01:07.0126008Z running 2405 tests
2019-10-06T02:01:18.6525636Z ......iiiii......................................................................................... 100/2405
2019-10-06T02:01:29.4818702Z ...............................................................................ii................... 200/2405
2019-10-06T02:01:55.3580372Z .i.................................................................................................. 400/2405
2019-10-06T02:01:55.3580372Z .i.................................................................................................. 400/2405
2019-10-06T02:02:06.0318551Z ................................................i..i.................iiii........................... 500/2405
2019-10-06T02:02:26.7877303Z .................................................................................................... 700/2405
2019-10-06T02:02:37.3844642Z .................................................................................................... 800/2405
2019-10-06T02:02:47.8905082Z .................................................................................................... 900/2405
2019-10-06T02:02:58.3728592Z .................................................................................................... 1000/2405
---
2019-10-06T02:07:12.8033295Z 
2019-10-06T02:07:12.8034187Z running 992 tests
2019-10-06T02:07:34.4974465Z i................................................................................................... 100/992
2019-10-06T02:07:46.1708692Z .................................................................................................... 200/992
2019-10-06T02:07:54.6559004Z .................iii......i......i...i......i....................................................... 300/992
2019-10-06T02:08:00.5658950Z .................................................................................................... 400/992
2019-10-06T02:08:08.5430245Z ...................................i..i.................................ii.......................... 500/992
2019-10-06T02:08:24.2112906Z .................................................................................................... 700/992
2019-10-06T02:08:24.2112906Z .................................................................................................... 700/992
2019-10-06T02:08:32.6442277Z ..................iiii.............................................................................. 800/992
2019-10-06T02:08:47.7478036Z .................................................................................................... 900/992
2019-10-06T02:08:55.4821441Z ........................................iiii................................................
2019-10-06T02:08:55.4825762Z 
2019-10-06T02:08:55.4940254Z  finished in 196.798
2019-10-06T02:08:55.4957220Z Testing term stage1 (x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
2019-10-06T02:08:55.7187524Z    Compiling term v0.0.0 (/checkout/src/libterm)
---
2019-10-06T02:25:04.4382603Z 
2019-10-06T02:25:04.4382651Z failures:
2019-10-06T02:25:04.4382679Z 
2019-10-06T02:25:04.4384537Z ---- /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md - Rust_Compiler_Error_Index::E0329::_::Note__this_error_code_is_no_longer_emitted_by_the_compiler_ (line 5308) stdout ----
2019-10-06T02:25:04.4384638Z error[E0277]: the trait bound `main::MyStruct: main::Foo` is not satisfied
2019-10-06T02:25:04.4384971Z   --> /checkout/obj/build/x86_64-unknown-linux-gnu/test/error-index.md:5316:5
2019-10-06T02:25:04.4385078Z 4  |     const BAR: f64;
2019-10-06T02:25:04.4385692Z    |     --------------- required by `main::Foo::BAR`
2019-10-06T02:25:04.4385736Z ...
2019-10-06T02:25:04.4385736Z ...
2019-10-06T02:25:04.4385786Z 10 |     <MyStruct as Foo>::BAR
2019-10-06T02:25:04.4385845Z    |     ^^^^^^^^^^^^^^^^^^^^^^ the trait `main::Foo` is not implemented for `main::MyStruct`
2019-10-06T02:25:04.4385975Z error: aborting due to previous error
2019-10-06T02:25:04.4386004Z 
2019-10-06T02:25:04.4386242Z For more information about this error, try `rustc --explain E0277`.
2019-10-06T02:25:04.4386986Z Couldn't compile the test.
---
2019-10-06T02:25:04.4394149Z == clock drift check ==
2019-10-06T02:25:04.4394616Z   local time: Sun Oct  6 02:25:04 UTC 2019
2019-10-06T02:25:04.4394843Z   network time: Sun, 06 Oct 2019 02:25:04 GMT
2019-10-06T02:25:04.4395076Z == end clock drift check ==
2019-10-06T02:25:05.1363642Z ##[error]Bash exited with code '1'.
2019-10-06T02:25:05.1412958Z ##[section]Starting: Checkout
2019-10-06T02:25:05.1414512Z ==============================================================================
2019-10-06T02:25:05.1414572Z Task         : Get sources
2019-10-06T02:25:05.1414608Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@bors
Copy link
Contributor

bors commented Oct 6, 2019

☔ The latest upstream changes (presumably #65152) made this pull request unmergeable. Please resolve the merge conflicts.

@rust-highfive
Copy link
Collaborator

The job x86_64-gnu-llvm-6.0 of your PR failed (pretty log, raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
2019-10-06T11:50:39.9403656Z ##[command]git remote add origin https://github.com/rust-lang/rust
2019-10-06T11:50:39.9601590Z ##[command]git config gc.auto 0
2019-10-06T11:50:39.9689184Z ##[command]git config --get-all http.https://github.com/rust-lang/rust.extraheader
2019-10-06T11:50:39.9763801Z ##[command]git config --get-all http.proxy
2019-10-06T11:50:39.9904295Z ##[command]git -c http.extraheader="AUTHORIZATION: basic ***" fetch --force --tags --prune --progress --no-recurse-submodules --depth=2 origin +refs/heads/*:refs/remotes/origin/* +refs/pull/65135/merge:refs/remotes/pull/65135/merge
---
2019-10-06T11:58:07.3732864Z Found 1 error codes with no tests
2019-10-06T11:58:07.3732933Z Done!
2019-10-06T11:58:07.3732967Z 
2019-10-06T11:58:07.3732998Z 
2019-10-06T11:58:07.3734149Z command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/tidy" "/checkout/src" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "--no-vendor"
2019-10-06T11:58:07.3734305Z 
2019-10-06T11:58:07.3734336Z 
2019-10-06T11:58:07.3743871Z failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test src/tools/tidy
2019-10-06T11:58:07.3743992Z Build completed unsuccessfully in 0:01:36
2019-10-06T11:58:07.3743992Z Build completed unsuccessfully in 0:01:36
2019-10-06T11:58:07.3803223Z == clock drift check ==
2019-10-06T11:58:07.3823087Z   local time: Sun Oct  6 11:58:07 UTC 2019
2019-10-06T11:58:07.5329559Z   network time: Sun, 06 Oct 2019 11:58:07 GMT
2019-10-06T11:58:07.5329740Z == end clock drift check ==
2019-10-06T11:58:08.9320980Z ##[error]Bash exited with code '1'.
2019-10-06T11:58:08.9369097Z ##[section]Starting: Checkout
2019-10-06T11:58:08.9371054Z ==============================================================================
2019-10-06T11:58:08.9371121Z Task         : Get sources
2019-10-06T11:58:08.9371177Z Description  : Get sources from a repository. Supports Git, TfsVC, and SVN repositories.

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@GuillaumeGomez
Copy link
Member Author

Conflicts...

impl Foo for MyStruct {
const BAR: f64 = 0f64;
}

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can this be moved to the next commit?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

use std::path::Path;

const WHITELIST: &[&'static str] = &[
"E0183",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we add a comment to this whitelist? Should we aim to remove it eventually? Is it "we know these are actually fine but we can't detect it"?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some of those tests can't be tested but a lot of could and should. I'll add a comment in that sense.

"E0729",
];

fn visit_dirs(dir: &Path, level: usize, cb: &mut dyn FnMut(&DirEntry)) -> io::Result<()> {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There should be existing helpers in tidy that do this. For a good example look at src/tools/tidy/src/errors.rs.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indeed, code is much smaller now.

if let Some(err_code) = s.splitn(2, ']').next() {
if let Some(err_code) = err_code.splitn(2, '[').skip(1).next() {
let nb = error_codes.entry(err_code.to_owned()).or_insert(0);
*nb += 1;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why keep a count instead of bool yes/no? We appear to only compare with 0...

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For now. I have in mind to use this to track error codes with no long error explanation. But for now a bool would be enough so I'll update it.

use std::fs::{self, DirEntry, File};
use std::path::Path;

const WHITELIST: &[&'static str] = &[
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You don't need the 'static here.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Compiler is evolving too fast for me...

errors.push(format!("Error code {} needs to have at least one UI test!", err_code));
}
}
errors.sort();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This isn't really all that helpful I imagine to get these in a sorted order -- most of the time, you're probably only going to see one or two -- can we just print immediately? If we care so much, then we can have error_codes be a BTreeSet which we delete items from when finding the error code in tests.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No it's very useful since they are not sorted at all. For example, if you read an error_codes.rs file and it has both long error explanations and error code declaration, the order is already broken. Also, please keep in mind that we also read from two different contexts: ui tests and long error explanations. If we remove it because we found a test and then find it again with no test (just an error code declaration for instance), then it'll throw an error.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It also made my life a lot simpler when I had to go through spotted errors. :)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't quite understand why sorting is useful (since we're sorting by error code, which has no relation to where the code is declared, at least for the most part); however, if you feel it is, then that's fine. I would still like to see us move to the BTreeSet and removal from it as we find tests, since I think that'll be (much) cleaner.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can't move to a BTreeSet. For example:

  1. You find the ui test file with the error code, no need to add it into the BTreeSet so we continue.
  2. You find the same error code declaration (so no long error explanation and therefore, no test) in an error_codes.rs file. No test, you add it into the BTreeSet.
  3. The check fails because this error code (which has a test) is detected as not having tests.

Or maybe I misunderstood what you tried to explain to me?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, I was expecting to do this in two passes - discover error codes in one pass and then use that information. But since we're not already doing that lets leave it as is for now.

@@ -953,6 +953,8 @@ https://doc.rust-lang.org/std/cell/
"##,

E0388: r##"
#### Note: this error code is no longer emitted by the compiler.

E0388 was removed and is no longer issued.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Says the same thing as above.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh indeed.

@bors
Copy link
Contributor

bors commented Oct 7, 2019

☔ The latest upstream changes (presumably #65169) made this pull request unmergeable. Please resolve the merge conflicts.

@GuillaumeGomez
Copy link
Member Author

Updated.

@Mark-Simulacrum
Copy link
Member

@bors r+

Thanks!

@bors
Copy link
Contributor

bors commented Oct 7, 2019

📌 Commit 7a84158 has been approved by Mark-Simulacrum

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Oct 7, 2019
Centril added a commit to Centril/rust that referenced this pull request Oct 8, 2019
…, r=Mark-Simulacrum

Add check for missing tests for error codes

Fixes rust-lang#64811.

r? @Mark-Simulacrum
bors added a commit that referenced this pull request Oct 8, 2019
Rollup of 7 pull requests

Successful merges:

 - #64284 (Warn if include macro fails to include entire file)
 - #65081 (Remove -Zprofile-queries)
 - #65133 (typeck: prohibit foreign statics w/ generics)
 - #65135 (Add check for missing tests for error codes)
 - #65141 (Replace code of conduct with link)
 - #65194 (Use structured suggestion for removal of `as_str()` call)
 - #65213 (Ignore `ExprKind::DropTemps` for some ref suggestions)

Failed merges:

r? @ghost
@bors bors merged commit 7a84158 into rust-lang:master Oct 9, 2019
@GuillaumeGomez GuillaumeGomez deleted the add-error-code-check branch October 9, 2019 08:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add a lint to force adding at least one test for each error code?
5 participants