Auto merge of #13286 - Veykril:proc-macro-srv-tests, r=Veykril
Don't run proc-macro-srv tests on the rust-analyzer repo proc-macro ABI breakage still affects the tests when a new stable version releases. Ideally we'd still be able to run the tests on the rust-analyzer repo without having to update the proc-macro ABI, but for now just to unblock CI we will ignore them here, as they are still run in upstream.
This commit is contained in:
commit
14400785ac
@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
use super::PanicMessage;
|
use super::PanicMessage;
|
||||||
|
|
||||||
|
pub use ra_server::TokenStream;
|
||||||
|
|
||||||
pub(crate) struct Abi {
|
pub(crate) struct Abi {
|
||||||
exported_macros: Vec<proc_macro::bridge::client::ProcMacro>,
|
exported_macros: Vec<proc_macro::bridge::client::ProcMacro>,
|
||||||
}
|
}
|
||||||
|
@ -32,8 +32,8 @@
|
|||||||
include!(concat!(env!("OUT_DIR"), "/rustc_version.rs"));
|
include!(concat!(env!("OUT_DIR"), "/rustc_version.rs"));
|
||||||
|
|
||||||
// Used by `test/utils.rs`
|
// Used by `test/utils.rs`
|
||||||
#[cfg(test)]
|
#[cfg(all(test, feature = "sysroot-abi"))]
|
||||||
pub(crate) use abi_1_63::TokenStream as TestTokenStream;
|
pub(crate) use abi_sysroot::TokenStream as TestTokenStream;
|
||||||
|
|
||||||
use super::dylib::LoadProcMacroDylibError;
|
use super::dylib::LoadProcMacroDylibError;
|
||||||
pub(crate) use abi_1_58::Abi as Abi_1_58;
|
pub(crate) use abi_1_58::Abi as Abi_1_58;
|
||||||
@ -144,3 +144,10 @@ pub fn list_macros(&self) -> Vec<(String, ProcMacroKind)> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_version_check() {
|
||||||
|
let path = paths::AbsPathBuf::assert(crate::proc_macro_test_dylib_path());
|
||||||
|
let info = proc_macro_api::read_dylib_info(&path).unwrap();
|
||||||
|
assert!(info.version.1 >= 50);
|
||||||
|
}
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
mod dylib;
|
mod dylib;
|
||||||
mod abis;
|
mod abis;
|
||||||
|
|
||||||
|
pub mod cli;
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
collections::{hash_map::Entry, HashMap},
|
collections::{hash_map::Entry, HashMap},
|
||||||
env,
|
env,
|
||||||
@ -149,7 +151,10 @@ fn rollback(self) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub mod cli;
|
#[cfg(all(feature = "sysroot-abi", test))]
|
||||||
|
mod tests;
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests;
|
pub fn proc_macro_test_dylib_path() -> std::path::PathBuf {
|
||||||
|
proc_macro_test::PROC_MACRO_TEST_LOCATION.into()
|
||||||
|
}
|
||||||
|
@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
mod utils;
|
mod utils;
|
||||||
use expect_test::expect;
|
|
||||||
use paths::AbsPathBuf;
|
|
||||||
use utils::*;
|
use utils::*;
|
||||||
|
|
||||||
|
use expect_test::expect;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_derive_empty() {
|
fn test_derive_empty() {
|
||||||
assert_expand("DeriveEmpty", r#"struct S;"#, expect![[r#"SUBTREE $"#]]);
|
assert_expand("DeriveEmpty", r#"struct S;"#, expect![[r#"SUBTREE $"#]]);
|
||||||
@ -157,10 +157,3 @@ fn list_test_macros() {
|
|||||||
DeriveError [CustomDerive]"#]]
|
DeriveError [CustomDerive]"#]]
|
||||||
.assert_eq(&res);
|
.assert_eq(&res);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_version_check() {
|
|
||||||
let path = AbsPathBuf::assert(fixtures::proc_macro_test_dylib_path());
|
|
||||||
let info = proc_macro_api::read_dylib_info(&path).unwrap();
|
|
||||||
assert!(info.version.1 >= 50);
|
|
||||||
}
|
|
||||||
|
@ -1,15 +1,9 @@
|
|||||||
//! utils used in proc-macro tests
|
//! utils used in proc-macro tests
|
||||||
|
|
||||||
use crate::dylib;
|
|
||||||
use crate::ProcMacroSrv;
|
|
||||||
use expect_test::Expect;
|
use expect_test::Expect;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
pub mod fixtures {
|
use crate::{dylib, proc_macro_test_dylib_path, ProcMacroSrv};
|
||||||
pub fn proc_macro_test_dylib_path() -> std::path::PathBuf {
|
|
||||||
proc_macro_test::PROC_MACRO_TEST_LOCATION.into()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fn parse_string(code: &str) -> Option<crate::abis::TestTokenStream> {
|
fn parse_string(code: &str) -> Option<crate::abis::TestTokenStream> {
|
||||||
// This is a bit strange. We need to parse a string into a token stream into
|
// This is a bit strange. We need to parse a string into a token stream into
|
||||||
@ -30,7 +24,7 @@ pub fn assert_expand_attr(macro_name: &str, ra_fixture: &str, attr_args: &str, e
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn assert_expand_impl(macro_name: &str, input: &str, attr: Option<&str>, expect: Expect) {
|
fn assert_expand_impl(macro_name: &str, input: &str, attr: Option<&str>, expect: Expect) {
|
||||||
let path = fixtures::proc_macro_test_dylib_path();
|
let path = proc_macro_test_dylib_path();
|
||||||
let expander = dylib::Expander::new(&path).unwrap();
|
let expander = dylib::Expander::new(&path).unwrap();
|
||||||
let fixture = parse_string(input).unwrap();
|
let fixture = parse_string(input).unwrap();
|
||||||
let attr = attr.map(|attr| parse_string(attr).unwrap().into_subtree());
|
let attr = attr.map(|attr| parse_string(attr).unwrap().into_subtree());
|
||||||
@ -40,7 +34,7 @@ fn assert_expand_impl(macro_name: &str, input: &str, attr: Option<&str>, expect:
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn list() -> Vec<String> {
|
pub(crate) fn list() -> Vec<String> {
|
||||||
let dylib_path = fixtures::proc_macro_test_dylib_path();
|
let dylib_path = proc_macro_test_dylib_path();
|
||||||
let mut srv = ProcMacroSrv::default();
|
let mut srv = ProcMacroSrv::default();
|
||||||
let res = srv.list_macros(&dylib_path).unwrap();
|
let res = srv.list_macros(&dylib_path).unwrap();
|
||||||
res.into_iter().map(|(name, kind)| format!("{} [{:?}]", name, kind)).collect()
|
res.into_iter().map(|(name, kind)| format!("{} [{:?}]", name, kind)).collect()
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
|
|
||||||
use std::{collections::HashMap, path::PathBuf, time::Instant};
|
use std::{collections::HashMap, path::PathBuf, time::Instant};
|
||||||
|
|
||||||
use expect_test::expect;
|
|
||||||
use lsp_types::{
|
use lsp_types::{
|
||||||
notification::DidOpenTextDocument,
|
notification::DidOpenTextDocument,
|
||||||
request::{
|
request::{
|
||||||
@ -821,7 +820,10 @@ fn main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
// FIXME: Re-enable once we can run proc-macro tests on rust-lang/rust-analyzer again
|
||||||
|
#[cfg(FALSE)]
|
||||||
fn resolve_proc_macro() {
|
fn resolve_proc_macro() {
|
||||||
|
use expect_test::expect;
|
||||||
if skip_slow_tests() {
|
if skip_slow_tests() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user