Skip to content

Commit 3a85adf

Browse files
committed
feat: with test
1 parent c840ce1 commit 3a85adf

File tree

5 files changed

+261
-4
lines changed

5 files changed

+261
-4
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.nix linguist-vendored=false

Cargo.lock

Lines changed: 243 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ convert_case = "0.7.1"
2121

2222
# Development dependencies which aren't used in release binary
2323
[dev-dependencies]
24-
# trybuild = "1.0.103"
24+
trybuild = "1.0.103"

src/lib.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use proc_macro::TokenStream;
55
use quote::quote;
66
use syn::{parse_macro_input, DeriveInput, Expr, Lit, Meta};
77

8-
#[proc_macro_derive(Maydon, attributes(name))]
8+
#[proc_macro_derive(Maydon, attributes(field_name))]
99
pub fn field_enum_derive(input: TokenStream) -> TokenStream {
1010
let input = parse_macro_input!(input as DeriveInput);
1111

@@ -14,7 +14,7 @@ pub fn field_enum_derive(input: TokenStream) -> TokenStream {
1414

1515
// Parse attributes to extract custom enum name
1616
for attr in input.attrs.iter() {
17-
if attr.path().is_ident("name") {
17+
if attr.path().is_ident("field_name") {
1818
if let Ok(Meta::NameValue(name_value)) = attr.meta.clone().try_into() {
1919
// Extract value from Meta::NameValue
2020
if let Expr::Lit(expr_lit) = name_value.value {
@@ -57,3 +57,16 @@ pub fn field_enum_derive(input: TokenStream) -> TokenStream {
5757

5858
TokenStream::from(expanded)
5959
}
60+
61+
#[cfg(test)]
62+
mod tests {
63+
use trybuild::TestCases;
64+
65+
#[test]
66+
fn test_macro() {
67+
let t = TestCases::new();
68+
t.pass("tests/basic.rs");
69+
t.pass("tests/custom.rs");
70+
t.compile_fail("tests/fail.rs");
71+
}
72+
}

tests/custom.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use maydon::Maydon;
22

33
#[derive(Maydon)]
4-
#[name = "ConfigField"]
4+
#[field_name = "ConfigField"]
55
pub struct Config {
66
pub url: String,
77
pub port: u16,

0 commit comments

Comments
 (0)