]> git.lizzy.rs Git - rust.git/commitdiff
Add test for proc-macro meta info retrieval
authorEdwin Cheng <edwin0cheng@gmail.com>
Mon, 15 Mar 2021 15:38:22 +0000 (23:38 +0800)
committerEdwin Cheng <edwin0cheng@gmail.com>
Mon, 15 Mar 2021 15:38:22 +0000 (23:38 +0800)
crates/proc_macro_api/src/lib.rs
crates/proc_macro_api/src/version.rs
crates/proc_macro_srv/src/tests/mod.rs
crates/proc_macro_srv/src/tests/utils.rs

index 941d0fe9e21c65f5a957b34e75872cf0839b7b1d..2dd2a85411990ea083e94185cd73f765fe290e50 100644 (file)
@@ -23,6 +23,7 @@
 use crate::process::{ProcMacroProcessSrv, ProcMacroProcessThread};
 
 pub use rpc::{ExpansionResult, ExpansionTask, ListMacrosResult, ListMacrosTask, ProcMacroKind};
+pub use version::{read_dylib_info, RustCInfo};
 
 #[derive(Debug, Clone)]
 struct ProcMacroProcessExpander {
@@ -76,7 +77,7 @@ pub fn extern_process(
     }
 
     pub fn by_dylib_path(&self, dylib_path: &Path) -> Vec<ProcMacro> {
-        match version::read_info(dylib_path) {
+        match version::read_dylib_info(dylib_path) {
             Ok(info) => {
                 if info.version.0 < 1 || info.version.1 < 47 {
                     eprintln!("proc-macro {} built by {:#?} is not supported by Rust Analyzer, please update your rust version.", dylib_path.to_string_lossy(), info);
index b903658fb9c878c4d49ed337b3190653b0fccb5f..dcf8fae8f55bb28ededbb60d4f0590323a6cc853 100644 (file)
 use snap::read::FrameDecoder as SnapDecoder;
 
 #[derive(Debug)]
-pub(crate) struct RustCInfo {
-    pub(crate) version: (usize, usize, usize),
-    pub(crate) channel: String,
-    pub(crate) commit: String,
-    pub(crate) date: String,
+pub struct RustCInfo {
+    pub version: (usize, usize, usize),
+    pub channel: String,
+    pub commit: String,
+    pub date: String,
 }
 
-pub(crate) fn read_info(dylib_path: &Path) -> io::Result<RustCInfo> {
+/// Read rustc dylib information
+pub fn read_dylib_info(dylib_path: &Path) -> io::Result<RustCInfo> {
     macro_rules! err {
         ($e:literal) => {
             io::Error::new(io::ErrorKind::InvalidData, $e)
index fd54f8dfdaf08405fff0f0ee02c4b8f4fc2335ec..b4ab4c077625b1096ecd147cd4aebf2f7feb4ac1 100644 (file)
@@ -56,3 +56,10 @@ fn list_test_macros() {
         &res
     );
 }
+
+#[test]
+fn test_version_check() {
+    let path = fixtures::dylib_path("proc_macro_test", "0.0.0");
+    let info = proc_macro_api::read_dylib_info(&path).unwrap();
+    assert!(info.version.1 >= 50);
+}
index 0484c3af449831205254f6cb2d8f4be07493a44c..f15381f0f4659228207fc3faaf51ce54b361ea42 100644 (file)
@@ -6,7 +6,7 @@
 use std::str::FromStr;
 use test_utils::assert_eq_text;
 
-mod fixtures {
+pub mod fixtures {
     use cargo_metadata::Message;
     use std::path::PathBuf;
     use std::process::Command;