From 0bffdf262716a9067b27063aacc559128259211b Mon Sep 17 00:00:00 2001 From: Amos Wenger Date: Sat, 23 Jul 2022 02:06:11 +0200 Subject: [PATCH] Disable all source-gen tests at compile time --- crates/ide-assists/Cargo.toml | 3 +++ crates/ide-assists/src/tests/sourcegen.rs | 16 ++++++++++++++-- crates/ide-diagnostics/Cargo.toml | 3 +++ crates/ide-diagnostics/src/tests/sourcegen.rs | 7 +++++++ crates/ide/Cargo.toml | 3 +++ crates/rust-analyzer/Cargo.toml | 7 ++++++- .../rust-analyzer/tests/slow-tests/sourcegen.rs | 6 ++++++ crates/rust-analyzer/tests/slow-tests/tidy.rs | 7 ++++++- crates/sourcegen/Cargo.toml | 3 +++ crates/syntax/Cargo.toml | 3 +++ crates/syntax/src/tests.rs | 3 ++- crates/syntax/src/tests/ast_src.rs | 7 +++++++ 12 files changed, 63 insertions(+), 5 deletions(-) diff --git a/crates/ide-assists/Cargo.toml b/crates/ide-assists/Cargo.toml index 51e43d21cb..fca09d384c 100644 --- a/crates/ide-assists/Cargo.toml +++ b/crates/ide-assists/Cargo.toml @@ -26,3 +26,6 @@ hir = { path = "../hir", version = "0.0.0" } test-utils = { path = "../test-utils" } sourcegen = { path = "../sourcegen" } expect-test = "1.4.0" + +[features] +in-rust-tree = [] diff --git a/crates/ide-assists/src/tests/sourcegen.rs b/crates/ide-assists/src/tests/sourcegen.rs index d45e54186b..97d5b2cbba 100644 --- a/crates/ide-assists/src/tests/sourcegen.rs +++ b/crates/ide-assists/src/tests/sourcegen.rs @@ -1,9 +1,12 @@ //! Generates `assists.md` documentation. +#[cfg(not(feature = "in-rust-tree"))] use std::{fmt, fs, path::Path}; +#[cfg(not(feature = "in-rust-tree"))] use test_utils::project_root; +#[cfg(not(feature = "in-rust-tree"))] #[test] fn sourcegen_assists_docs() { let assists = Assist::collect(); @@ -59,6 +62,8 @@ r#####" fs::write(dst, contents).unwrap(); } } + +#[cfg(not(feature = "in-rust-tree"))] #[derive(Debug)] struct Section { doc: String, @@ -66,6 +71,7 @@ struct Section { after: String, } +#[cfg(not(feature = "in-rust-tree"))] #[derive(Debug)] struct Assist { id: String, @@ -73,6 +79,7 @@ struct Assist { sections: Vec
, } +#[cfg(not(feature = "in-rust-tree"))] impl Assist { fn collect() -> Vec { let handlers_dir = project_root().join("crates/ide-assists/src/handlers"); @@ -104,9 +111,11 @@ impl Assist { while lines.peek().is_some() { let doc = take_until(lines.by_ref(), "```").trim().to_string(); assert!( - (doc.chars().next().unwrap().is_ascii_uppercase() && doc.ends_with('.')) || assist.sections.len() > 0, + (doc.chars().next().unwrap().is_ascii_uppercase() && doc.ends_with('.')) + || assist.sections.len() > 0, "\n\n{}: assist docs should be proper sentences, with capitalization and a full stop at the end.\n\n{}\n\n", - &assist.id, doc, + &assist.id, + doc, ); let before = take_until(lines.by_ref(), "```"); @@ -135,6 +144,7 @@ impl Assist { } } +#[cfg(not(feature = "in-rust-tree"))] impl fmt::Display for Assist { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { let _ = writeln!( @@ -169,6 +179,7 @@ impl fmt::Display for Assist { } } +#[cfg(not(feature = "in-rust-tree"))] fn hide_hash_comments(text: &str) -> String { text.split('\n') // want final newline .filter(|&it| !(it.starts_with("# ") || it == "#")) @@ -176,6 +187,7 @@ fn hide_hash_comments(text: &str) -> String { .collect() } +#[cfg(not(feature = "in-rust-tree"))] fn reveal_hash_comments(text: &str) -> String { text.split('\n') // want final newline .map(|it| { diff --git a/crates/ide-diagnostics/Cargo.toml b/crates/ide-diagnostics/Cargo.toml index a79adca4cd..e221425edd 100644 --- a/crates/ide-diagnostics/Cargo.toml +++ b/crates/ide-diagnostics/Cargo.toml @@ -29,3 +29,6 @@ expect-test = "1.4.0" test-utils = { path = "../test-utils" } sourcegen = { path = "../sourcegen" } + +[features] +in-rust-tree = [] diff --git a/crates/ide-diagnostics/src/tests/sourcegen.rs b/crates/ide-diagnostics/src/tests/sourcegen.rs index ec6558a46e..24bf6c3589 100644 --- a/crates/ide-diagnostics/src/tests/sourcegen.rs +++ b/crates/ide-diagnostics/src/tests/sourcegen.rs @@ -1,9 +1,12 @@ //! Generates `assists.md` documentation. +#[cfg(not(feature = "in-rust-tree"))] use std::{fmt, fs, io, path::PathBuf}; +#[cfg(not(feature = "in-rust-tree"))] use sourcegen::project_root; +#[cfg(not(feature = "in-rust-tree"))] #[test] fn sourcegen_diagnostic_docs() { let diagnostics = Diagnostic::collect().unwrap(); @@ -14,6 +17,7 @@ fn sourcegen_diagnostic_docs() { fs::write(&dst, &contents).unwrap(); } +#[cfg(not(feature = "in-rust-tree"))] #[derive(Debug)] struct Diagnostic { id: String, @@ -21,6 +25,7 @@ struct Diagnostic { doc: String, } +#[cfg(not(feature = "in-rust-tree"))] impl Diagnostic { fn collect() -> io::Result> { let handlers_dir = project_root().join("crates/ide-diagnostics/src/handlers"); @@ -51,6 +56,7 @@ impl Diagnostic { } } +#[cfg(not(feature = "in-rust-tree"))] fn is_valid_diagnostic_name(diagnostic: &str) -> Result<(), String> { let diagnostic = diagnostic.trim(); if diagnostic.find(char::is_whitespace).is_some() { @@ -66,6 +72,7 @@ fn is_valid_diagnostic_name(diagnostic: &str) -> Result<(), String> { Ok(()) } +#[cfg(not(feature = "in-rust-tree"))] impl fmt::Display for Diagnostic { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { writeln!(f, "=== {}\n**Source:** {}\n{}", self.id, self.location, self.doc) diff --git a/crates/ide/Cargo.toml b/crates/ide/Cargo.toml index 95a54b75e2..0e9771cd2e 100644 --- a/crates/ide/Cargo.toml +++ b/crates/ide/Cargo.toml @@ -42,3 +42,6 @@ toolchain = { path = "../toolchain", version = "0.0.0" } [dev-dependencies] test-utils = { path = "../test-utils" } expect-test = "1.4.0" + +[features] +in-rust-tree = ["ide-assists/in-rust-tree", "ide-diagnostics/in-rust-tree"] diff --git a/crates/rust-analyzer/Cargo.toml b/crates/rust-analyzer/Cargo.toml index 41205f2584..07771d1b39 100644 --- a/crates/rust-analyzer/Cargo.toml +++ b/crates/rust-analyzer/Cargo.toml @@ -84,4 +84,9 @@ mbe = { path = "../mbe" } [features] jemalloc = ["jemallocator", "profile/jemalloc"] force-always-assert = ["always-assert/force"] -in-rust-tree = ["proc-macro-srv/sysroot-abi"] +in-rust-tree = [ + "proc-macro-srv/sysroot-abi", + "sourcegen/in-rust-tree", + "ide/in-rust-tree", + "syntax/in-rust-tree" +] diff --git a/crates/rust-analyzer/tests/slow-tests/sourcegen.rs b/crates/rust-analyzer/tests/slow-tests/sourcegen.rs index e6ac018a05..3c1f8a304e 100644 --- a/crates/rust-analyzer/tests/slow-tests/sourcegen.rs +++ b/crates/rust-analyzer/tests/slow-tests/sourcegen.rs @@ -1,7 +1,9 @@ //! Generates `assists.md` documentation. +#[cfg(not(feature = "in-rust-tree"))] use std::{fmt, fs, io, path::PathBuf}; +#[cfg(not(feature = "in-rust-tree"))] #[test] fn sourcegen_feature_docs() { let features = Feature::collect().unwrap(); @@ -17,6 +19,7 @@ fn sourcegen_feature_docs() { fs::write(&dst, &contents).unwrap(); } +#[cfg(not(feature = "in-rust-tree"))] #[derive(Debug)] struct Feature { id: String, @@ -24,6 +27,7 @@ struct Feature { doc: String, } +#[cfg(not(feature = "in-rust-tree"))] impl Feature { fn collect() -> io::Result> { let crates_dir = sourcegen::project_root().join("crates"); @@ -54,6 +58,7 @@ impl Feature { } } +#[cfg(not(feature = "in-rust-tree"))] fn is_valid_feature_name(feature: &str) -> Result<(), String> { 'word: for word in feature.split_whitespace() { for short in ["to", "and"] { @@ -73,6 +78,7 @@ fn is_valid_feature_name(feature: &str) -> Result<(), String> { Ok(()) } +#[cfg(not(feature = "in-rust-tree"))] impl fmt::Display for Feature { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { writeln!(f, "=== {}\n**Source:** {}\n{}", self.id, self.location, self.doc) diff --git a/crates/rust-analyzer/tests/slow-tests/tidy.rs b/crates/rust-analyzer/tests/slow-tests/tidy.rs index dc3c5539c2..18f95925d9 100644 --- a/crates/rust-analyzer/tests/slow-tests/tidy.rs +++ b/crates/rust-analyzer/tests/slow-tests/tidy.rs @@ -3,8 +3,12 @@ use std::{ path::{Path, PathBuf}, }; -use xshell::{cmd, Shell}; +use xshell::Shell; +#[cfg(not(feature = "in-rust-tree"))] +use xshell::cmd; + +#[cfg(not(feature = "in-rust-tree"))] #[test] fn check_code_formatting() { let sh = &Shell::new().unwrap(); @@ -168,6 +172,7 @@ See https://github.com/rust-lang/rust-clippy/issues/5537 for discussion. } } +#[cfg(not(feature = "in-rust-tree"))] #[test] fn check_licenses() { let sh = &Shell::new().unwrap(); diff --git a/crates/sourcegen/Cargo.toml b/crates/sourcegen/Cargo.toml index e75867e2d8..a84110d940 100644 --- a/crates/sourcegen/Cargo.toml +++ b/crates/sourcegen/Cargo.toml @@ -11,3 +11,6 @@ doctest = false [dependencies] xshell = "0.2.2" + +[features] +in-rust-tree = [] diff --git a/crates/syntax/Cargo.toml b/crates/syntax/Cargo.toml index a56c9dec40..0e2dec386f 100644 --- a/crates/syntax/Cargo.toml +++ b/crates/syntax/Cargo.toml @@ -34,3 +34,6 @@ ungrammar = "1.16.1" test-utils = { path = "../test-utils" } sourcegen = { path = "../sourcegen" } + +[features] +in-rust-tree = [] diff --git a/crates/syntax/src/tests.rs b/crates/syntax/src/tests.rs index 0611143e2a..ed6430f536 100644 --- a/crates/syntax/src/tests.rs +++ b/crates/syntax/src/tests.rs @@ -1,5 +1,6 @@ -mod sourcegen_ast; mod ast_src; +#[cfg(not(feature = "in-rust-tree"))] +mod sourcegen_ast; use std::{ fs, diff --git a/crates/syntax/src/tests/ast_src.rs b/crates/syntax/src/tests/ast_src.rs index cf5be1c30f..93959d4ed7 100644 --- a/crates/syntax/src/tests/ast_src.rs +++ b/crates/syntax/src/tests/ast_src.rs @@ -1,5 +1,6 @@ //! Defines input for code generation process. +#[cfg(not(feature = "in-rust-tree"))] pub(crate) struct KindsSrc<'a> { pub(crate) punct: &'a [(&'a str, &'a str)], pub(crate) keywords: &'a [&'a str], @@ -9,6 +10,7 @@ pub(crate) struct KindsSrc<'a> { pub(crate) nodes: &'a [&'a str], } +#[cfg(not(feature = "in-rust-tree"))] pub(crate) const KINDS_SRC: KindsSrc<'_> = KindsSrc { punct: &[ (";", "SEMICOLON"), @@ -216,6 +218,7 @@ pub(crate) const KINDS_SRC: KindsSrc<'_> = KindsSrc { ], }; +#[cfg(not(feature = "in-rust-tree"))] #[derive(Default, Debug)] pub(crate) struct AstSrc { pub(crate) tokens: Vec, @@ -223,6 +226,7 @@ pub(crate) struct AstSrc { pub(crate) enums: Vec, } +#[cfg(not(feature = "in-rust-tree"))] #[derive(Debug)] pub(crate) struct AstNodeSrc { pub(crate) doc: Vec, @@ -231,18 +235,21 @@ pub(crate) struct AstNodeSrc { pub(crate) fields: Vec, } +#[cfg(not(feature = "in-rust-tree"))] #[derive(Debug, Eq, PartialEq)] pub(crate) enum Field { Token(String), Node { name: String, ty: String, cardinality: Cardinality }, } +#[cfg(not(feature = "in-rust-tree"))] #[derive(Debug, Eq, PartialEq)] pub(crate) enum Cardinality { Optional, Many, } +#[cfg(not(feature = "in-rust-tree"))] #[derive(Debug)] pub(crate) struct AstEnumSrc { pub(crate) doc: Vec,