Skip to content

Commit 08f6807

Browse files
Merge pull request #561 from kezhuw:test-proc-macros-cooperation
PiperOrigin-RevId: 727847478
2 parents b8f3144 + ee4996d commit 08f6807

File tree

1 file changed

+11
-14
lines changed

1 file changed

+11
-14
lines changed

googletest_macro/src/lib.rs

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@
1414

1515
use quote::quote;
1616
use syn::{
17-
parse_macro_input, punctuated::Punctuated, spanned::Spanned, Attribute, DeriveInput, Expr,
18-
ExprLit, FnArg, ItemFn, Lit, MetaNameValue, PatType, ReturnType, Signature, Type,
17+
parse_macro_input, parse_quote, punctuated::Punctuated, spanned::Spanned, Attribute,
18+
DeriveInput, Expr, ExprLit, FnArg, ItemFn, Lit, MetaNameValue, PatType, ReturnType, Signature,
19+
Type,
1920
};
2021

2122
/// Marks a test to be run by the Google Rust test runner.
@@ -75,7 +76,7 @@ pub fn gtest(
7576
_args: proc_macro::TokenStream,
7677
input: proc_macro::TokenStream,
7778
) -> proc_macro::TokenStream {
78-
let ItemFn { attrs, sig, block, .. } = parse_macro_input!(input as ItemFn);
79+
let ItemFn { mut attrs, sig, block, .. } = parse_macro_input!(input as ItemFn);
7980
let test_case_hash: u64 = {
8081
use std::collections::hash_map::DefaultHasher;
8182
use std::hash::{Hash, Hasher};
@@ -185,6 +186,12 @@ pub fn gtest(
185186
)
186187
}
187188
};
189+
if !attrs.iter().any(is_test_attribute) && !is_rstest_enabled {
190+
let test_attr: Attribute = parse_quote! {
191+
#[::core::prelude::v1::test]
192+
};
193+
attrs.push(test_attr);
194+
};
188195
let function = quote! {
189196
#(#attrs)*
190197
#outer_sig -> #outer_return_type {
@@ -200,17 +207,7 @@ pub fn gtest(
200207
#trailer
201208
}
202209
};
203-
204-
let output = if attrs.iter().any(is_test_attribute) || is_rstest_enabled {
205-
function
206-
} else {
207-
quote! {
208-
#[::core::prelude::v1::test]
209-
#function
210-
}
211-
};
212-
213-
output.into()
210+
function.into()
214211
}
215212

216213
/// Extract the optional "expected" string literal from a `should_panic`

0 commit comments

Comments
 (0)