Skip to content

Commit c0d54ac

Browse files
committed
#42 Now parametrize use rstest struct
1 parent f811c1a commit c0d54ac

File tree

6 files changed

+159
-406
lines changed

6 files changed

+159
-406
lines changed

src/lib.rs

+28-27
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,8 @@ use quote::quote;
199199

200200
use crate::parse::{
201201
fixture::FixtureInfo,
202-
parametrize::{ParametrizeData, ParametrizeInfo, TestCase},
203-
rstest::{RsTestAttributes, RsTestInfo},
202+
testcase::TestCase,
203+
rstest::{RsTestAttributes, RsTestInfo, RsTestData},
204204
};
205205
use crate::refident::MaybeIdent;
206206
use crate::resolver::{arg_2_fixture, Resolver};
@@ -625,8 +625,8 @@ fn duplicate_arguments_errors<'a, I: MaybeIdent + Spanned + 'a>(args: impl Itera
625625
)
626626
}
627627

628-
fn invalid_case_errors(params: &ParametrizeData) -> Errors {
629-
let n_args = params.args().count();
628+
fn invalid_case_errors(params: &RsTestData) -> Errors {
629+
let n_args = params.case_args().count();
630630
Box::new(
631631
params.cases()
632632
.filter(move |case| case.args.len() != n_args)
@@ -636,10 +636,10 @@ fn invalid_case_errors(params: &ParametrizeData) -> Errors {
636636
)
637637
}
638638

639-
fn errors_in_parametrize(test: &ItemFn, info: &ParametrizeInfo) -> TokenStream {
640-
missed_arguments_errors(test, info.data.args())
639+
fn errors_in_parametrize(test: &ItemFn, info: &RsTestInfo) -> TokenStream {
640+
missed_arguments_errors(test, info.data.case_args())
641641
.chain(missed_arguments_errors(test, info.data.fixtures()))
642-
.chain(duplicate_arguments_errors(info.data.data.iter()))
642+
.chain(duplicate_arguments_errors(info.data.items.iter()))
643643
.chain(invalid_case_errors(&info.data))
644644
.map(|e| e.to_compile_error())
645645
.collect()
@@ -717,8 +717,8 @@ fn format_case_name(case: &TestCase, index: usize, display_len: usize) -> String
717717
format!("case_{:0len$}{d}", index, len = display_len, d = description)
718718
}
719719

720-
fn render_parametrize_cases(test: ItemFn, params: ParametrizeInfo) -> TokenStream {
721-
let ParametrizeInfo { data, attributes } = params;
720+
fn render_parametrize_cases(test: ItemFn, params: RsTestInfo) -> TokenStream {
721+
let RsTestInfo { data, attributes } = params;
722722
let display_len = data.cases().count().display_len();
723723

724724
let cases = data.cases()
@@ -729,7 +729,7 @@ fn render_parametrize_cases(test: ItemFn, params: ParametrizeInfo) -> TokenStrea
729729
move |(n, case)|
730730
{
731731
let resolver_fixtures = resolver::fixture_resolver(data.fixtures());
732-
let resolver_case = data.args()
732+
let resolver_case = data.case_args()
733733
.map(|a| a.to_string())
734734
.zip(case.args.iter())
735735
.collect::<HashMap<_, _>>();
@@ -858,7 +858,7 @@ fn render_matrix_cases(test: ItemFn, params: parse::matrix::MatrixInfo) -> Token
858858
pub fn rstest_parametrize(args: proc_macro::TokenStream, input: proc_macro::TokenStream)
859859
-> proc_macro::TokenStream
860860
{
861-
let params = parse_macro_input!(args as ParametrizeInfo);
861+
let params = parse_macro_input!(args as RsTestInfo);
862862
let test = parse_macro_input!(input as ItemFn);
863863

864864
let errors = errors_in_parametrize(&test, &params);
@@ -1127,24 +1127,25 @@ mod render {
11271127
mod parametrize_cases {
11281128
use std::iter::FromIterator;
11291129

1130-
use crate::parse::parametrize::{ParametrizeData, ParametrizeInfo, ParametrizeItem, TestCase};
1130+
use crate::parse::rstest::{RsTestInfo, RsTestData, RsTestItem};
1131+
use crate::parse::testcase::TestCase;
11311132

11321133
use super::{*, assert_eq};
11331134

1134-
impl<'a> From<&'a ItemFn> for ParametrizeData {
1135+
impl<'a> From<&'a ItemFn> for RsTestData {
11351136
fn from(item_fn: &'a ItemFn) -> Self {
1136-
ParametrizeData {
1137-
data: fn_args_idents(item_fn)
1137+
RsTestData {
1138+
items: fn_args_idents(item_fn)
11381139
.cloned()
1139-
.map(ParametrizeItem::CaseArgName)
1140+
.map(RsTestItem::CaseArgName)
11401141
.collect(),
11411142
}
11421143
}
11431144
}
11441145

1145-
impl<'a> From<&'a ItemFn> for ParametrizeInfo {
1146+
impl<'a> From<&'a ItemFn> for RsTestInfo {
11461147
fn from(item_fn: &'a ItemFn) -> Self {
1147-
ParametrizeInfo {
1148+
RsTestInfo {
11481149
data: item_fn.into(),
11491150
attributes: Default::default(),
11501151
}
@@ -1212,13 +1213,13 @@ mod render {
12121213
assert_eq!(expected, output.module.attrs);
12131214
}
12141215

1215-
impl ParametrizeInfo {
1216+
impl RsTestInfo {
12161217
fn push_case(&mut self, case: TestCase) {
1217-
self.data.data.push(ParametrizeItem::TestCase(case));
1218+
self.data.items.push(RsTestItem::TestCase(case));
12181219
}
12191220

12201221
fn extend(&mut self, cases: impl Iterator<Item=TestCase>) {
1221-
self.data.data.extend(cases.map(ParametrizeItem::TestCase));
1222+
self.data.items.extend(cases.map(RsTestItem::TestCase));
12221223
}
12231224
}
12241225

@@ -1239,20 +1240,20 @@ mod render {
12391240
}
12401241
}
12411242

1242-
fn one_simple_case() -> (ItemFn, ParametrizeInfo) {
1243+
fn one_simple_case() -> (ItemFn, RsTestInfo) {
12431244
let item_fn = parse_str::<ItemFn>(
12441245
r#"fn test(mut fix: String) { println!("user code") }"#
12451246
).unwrap();
1246-
let mut info: ParametrizeInfo = (&item_fn).into();
1247+
let mut info: RsTestInfo = (&item_fn).into();
12471248
info.push_case(TestCase::from(r#"String::from("3")"#));
12481249
(item_fn, info)
12491250
}
12501251

1251-
fn some_simple_cases(cases: i32) -> (ItemFn, ParametrizeInfo) {
1252+
fn some_simple_cases(cases: i32) -> (ItemFn, RsTestInfo) {
12521253
let item_fn = parse_str::<ItemFn>(
12531254
r#"fn test(mut fix: String) { println!("user code") }"#
12541255
).unwrap();
1255-
let mut info: ParametrizeInfo = (&item_fn).into();
1256+
let mut info: RsTestInfo = (&item_fn).into();
12561257
info.extend((0..cases).map(|_| TestCase::from(r#"String::from("3")"#)));
12571258
(item_fn, info)
12581259
}
@@ -1317,7 +1318,7 @@ mod render {
13171318
let (item_fn, mut info) = one_simple_case();
13181319
let description = "show_this_description";
13191320

1320-
if let &mut ParametrizeItem::TestCase(ref mut case) = &mut info.data.data[1] {
1321+
if let &mut RsTestItem::TestCase(ref mut case) = &mut info.data.items[1] {
13211322
case.description = Some(parse_str::<Ident>(description).unwrap());
13221323
} else {
13231324
panic!("Test case should be the second one");
@@ -1336,7 +1337,7 @@ mod render {
13361337

13371338
use crate::parse::matrix::{MatrixData, MatrixInfo, ValueList};
13381339

1339-
/// Should test matrix tests render without take in account MatrixInfo to ParametrizeInfo
1340+
/// Should test matrix tests render without take in account MatrixInfo to RsTestInfo
13401341
/// transformation
13411342
13421343
use super::{*, assert_eq};

src/parse/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ pub(crate) mod macros;
1515

1616
pub(crate) mod fixture;
1717
pub(crate) mod rstest;
18-
pub(crate) mod parametrize;
1918
pub(crate) mod matrix;
19+
pub(crate) mod testcase;
2020

2121
#[derive(Default, Debug, PartialEq)]
2222
pub(crate) struct Attributes {

0 commit comments

Comments
 (0)