Skip to content

Commit

Permalink
Set the span of test function Idents to the span of the origin attrib…
Browse files Browse the repository at this point in the history
…ute (#119)
  • Loading branch information
rpwachowski committed Mar 28, 2023
1 parent 39faeaa commit fa1c648
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 8 deletions.
10 changes: 7 additions & 3 deletions crates/test-case-core/src/test_case.rs
@@ -1,7 +1,7 @@
use crate::comment::TestCaseComment;
use crate::expr::{TestCaseExpression, TestCaseResult};
use crate::utils::fmt_syn;
use proc_macro2::TokenStream as TokenStream2;
use proc_macro2::{Span as Span2, TokenStream as TokenStream2};
use quote::quote;
use syn::parse::{Parse, ParseStream};
use syn::punctuated::Punctuated;
Expand Down Expand Up @@ -46,10 +46,14 @@ impl TestCase {
crate::utils::escape_test_name(case_desc)
}

pub fn render(&self, mut item: ItemFn) -> TokenStream2 {
pub fn render(&self, mut item: ItemFn, origin_span: Span2) -> TokenStream2 {
let item_name = item.sig.ident.clone();
let arg_values = self.args.iter();
let test_case_name = self.test_case_name();
let test_case_name = {
let mut test_case_name = self.test_case_name();
test_case_name.set_span(origin_span);
test_case_name
};

let mut attrs = self
.expression
Expand Down
11 changes: 6 additions & 5 deletions crates/test-case-macros/src/lib.rs
Expand Up @@ -2,6 +2,7 @@ extern crate proc_macro;

use proc_macro::TokenStream;

use proc_macro2::Span as Span2;
use syn::{parse_macro_input, ItemFn};

use quote::quote;
Expand All @@ -26,7 +27,7 @@ pub fn test_case(args: TokenStream, input: TokenStream) -> TokenStream {
let test_case = parse_macro_input!(args as TestCase);
let mut item = parse_macro_input!(input as ItemFn);

let mut test_cases = vec![test_case];
let mut test_cases = vec![(test_case, Span2::call_site())];
let mut attrs_to_remove = vec![];
let legal_test_case_names = [
parse_quote!(test_case),
Expand All @@ -48,7 +49,7 @@ pub fn test_case(args: TokenStream, input: TokenStream) -> TokenStream {
.into()
}
};
test_cases.push(test_case);
test_cases.push((test_case, attr.span()));
attrs_to_remove.push(idx);
}
}
Expand All @@ -61,11 +62,11 @@ pub fn test_case(args: TokenStream, input: TokenStream) -> TokenStream {
}

#[allow(unused_mut)]
fn render_test_cases(test_cases: &[TestCase], mut item: ItemFn) -> TokenStream {
fn render_test_cases(test_cases: &[(TestCase, Span2)], mut item: ItemFn) -> TokenStream {
let mut rendered_test_cases = vec![];

for test_case in test_cases {
rendered_test_cases.push(test_case.render(item.clone()));
for (test_case, span) in test_cases {
rendered_test_cases.push(test_case.render(item.clone(), *span));
}

let mod_name = item.sig.ident.clone();
Expand Down

0 comments on commit fa1c648

Please sign in to comment.