mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-28 21:05:02 +00:00
Various changes
Pin to a specific toolchain version Format checking functionality Add a test to check the code formatting. Remove macro_use attribute
This commit is contained in:
parent
d14610dab4
commit
857c1650ef
3 changed files with 40 additions and 28 deletions
|
@ -4,9 +4,11 @@ extern crate teraron;
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
path::{Path, PathBuf},
|
path::{Path, PathBuf},
|
||||||
|
process::Command,
|
||||||
};
|
};
|
||||||
|
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
|
use failure::bail;
|
||||||
|
|
||||||
pub use teraron::{Mode, Verify, Overwrite};
|
pub use teraron::{Mode, Verify, Overwrite};
|
||||||
|
|
||||||
|
@ -15,6 +17,7 @@ pub type Result<T> = ::std::result::Result<T, failure::Error>;
|
||||||
pub const GRAMMAR: &str = "crates/ra_syntax/src/grammar.ron";
|
pub const GRAMMAR: &str = "crates/ra_syntax/src/grammar.ron";
|
||||||
pub const SYNTAX_KINDS: &str = "crates/ra_syntax/src/syntax_kinds/generated.rs.tera";
|
pub const SYNTAX_KINDS: &str = "crates/ra_syntax/src/syntax_kinds/generated.rs.tera";
|
||||||
pub const AST: &str = "crates/ra_syntax/src/ast/generated.rs.tera";
|
pub const AST: &str = "crates/ra_syntax/src/ast/generated.rs.tera";
|
||||||
|
const TOOLCHAIN: &str = "beta-2018-10-30";
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct Test {
|
pub struct Test {
|
||||||
|
@ -80,3 +83,29 @@ pub fn project_root() -> PathBuf {
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.to_path_buf()
|
.to_path_buf()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn run(cmdline: &str, dir: &str) -> Result<()> {
|
||||||
|
eprintln!("\nwill run: {}", cmdline);
|
||||||
|
let project_dir = project_root().join(dir);
|
||||||
|
let mut args = cmdline.split_whitespace();
|
||||||
|
let exec = args.next().unwrap();
|
||||||
|
let status = Command::new(exec)
|
||||||
|
.args(args)
|
||||||
|
.current_dir(project_dir)
|
||||||
|
.status()?;
|
||||||
|
if !status.success() {
|
||||||
|
bail!("`{}` exited with {}", cmdline, status);
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run_rustfmt(mode: Mode) -> Result<()> {
|
||||||
|
run(&format!("rustup install {}", TOOLCHAIN), ".")?;
|
||||||
|
run(&format!("rustup component add rustfmt-preview --toolchain {}", TOOLCHAIN), ".")?;
|
||||||
|
if mode == Verify {
|
||||||
|
run(&format!("rustup run {} -- cargo fmt -- --check", TOOLCHAIN), ".")?;
|
||||||
|
} else {
|
||||||
|
run(&format!("rustup run {} -- cargo fmt", TOOLCHAIN), ".")?;
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
extern crate clap;
|
extern crate clap;
|
||||||
#[macro_use]
|
|
||||||
extern crate failure;
|
extern crate failure;
|
||||||
extern crate tools;
|
extern crate tools;
|
||||||
extern crate walkdir;
|
extern crate walkdir;
|
||||||
|
@ -10,11 +9,11 @@ use std::{
|
||||||
collections::HashMap,
|
collections::HashMap,
|
||||||
fs,
|
fs,
|
||||||
path::{Path, PathBuf},
|
path::{Path, PathBuf},
|
||||||
process::Command,
|
|
||||||
};
|
};
|
||||||
use tools::{
|
use tools::{
|
||||||
collect_tests, Result, Test, generate, Mode, Overwrite, Verify, project_root,
|
collect_tests, Result, Test, generate, Mode, Overwrite, Verify, run, run_rustfmt,
|
||||||
};
|
};
|
||||||
|
use failure::bail;
|
||||||
|
|
||||||
const GRAMMAR_DIR: &str = "./crates/ra_syntax/src/grammar";
|
const GRAMMAR_DIR: &str = "./crates/ra_syntax/src/grammar";
|
||||||
const INLINE_TESTS_DIR: &str = "./crates/ra_syntax/tests/data/parser/inline";
|
const INLINE_TESTS_DIR: &str = "./crates/ra_syntax/tests/data/parser/inline";
|
||||||
|
@ -42,7 +41,7 @@ fn main() -> Result<()> {
|
||||||
("install-code", _) => install_code_extension()?,
|
("install-code", _) => install_code_extension()?,
|
||||||
("gen-tests", _) => gen_tests(mode)?,
|
("gen-tests", _) => gen_tests(mode)?,
|
||||||
("gen-syntax", _) => generate(Overwrite)?,
|
("gen-syntax", _) => generate(Overwrite)?,
|
||||||
("format", _) => run_rustfmt()?,
|
("format", _) => run_rustfmt(Overwrite)?,
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -145,26 +144,3 @@ fn install_code_extension() -> Result<()> {
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run(cmdline: &'static str, dir: &str) -> Result<()> {
|
|
||||||
eprintln!("\nwill run: {}", cmdline);
|
|
||||||
let project_dir = project_root().join(dir);
|
|
||||||
let mut args = cmdline.split_whitespace();
|
|
||||||
let exec = args.next().unwrap();
|
|
||||||
let status = Command::new(exec)
|
|
||||||
.args(args)
|
|
||||||
.current_dir(project_dir)
|
|
||||||
.status()?;
|
|
||||||
if !status.success() {
|
|
||||||
bail!("`{}` exited with {}", cmdline, status);
|
|
||||||
}
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
fn run_rustfmt() -> Result<()> {
|
|
||||||
// Use beta toolchain for 2018 edition.
|
|
||||||
run("rustup install beta", ".")?;
|
|
||||||
run("rustup component add rustfmt-preview --toolchain beta", ".")?;
|
|
||||||
run("rustup run beta -- cargo fmt", ".")?;
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
extern crate tools;
|
extern crate tools;
|
||||||
|
|
||||||
use tools::{
|
use tools::{
|
||||||
generate, Verify
|
generate, Verify, run_rustfmt,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -10,3 +10,10 @@ fn verify_template_generation() {
|
||||||
panic!("{}. Please update it by running `cargo gen-syntax`", error);
|
panic!("{}. Please update it by running `cargo gen-syntax`", error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn check_code_formatting() {
|
||||||
|
if let Err(error) = run_rustfmt(Verify) {
|
||||||
|
panic!("{}. Please format the code by running `cargo format`", error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue