Mercurial > crates > nonstick
annotate libpam-sys/libpam-sys-test/build.rs @ 130:80c07e5ab22f
Transfer over (almost) completely to using libpam-sys.
This reimplements everything in nonstick on top of the new -sys crate.
We don't yet use libpam-sys's helpers for binary message payloads. Soon.
| author | Paul Fisher <paul@pfish.zone> |
|---|---|
| date | Tue, 01 Jul 2025 06:11:43 -0400 |
| parents | c77846f3a979 |
| children | a632a8874131 |
| rev | line source |
|---|---|
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
1 use bindgen::MacroTypeVariation; |
|
125
2b255c92417b
Introduce base PAM functions; use the real X/SSO PAM header for tests.
Paul Fisher <paul@pfish.zone>
parents:
124
diff
changeset
|
2 use libpam_sys_impls::__pam_impl_enum__; |
|
130
80c07e5ab22f
Transfer over (almost) completely to using libpam-sys.
Paul Fisher <paul@pfish.zone>
parents:
127
diff
changeset
|
3 use proc_macro2::{Group, Ident, TokenStream, TokenTree}; |
|
113
178310336596
Fix up more constants, make things i32 rather than u32.
Paul Fisher <paul@pfish.zone>
parents:
111
diff
changeset
|
4 use quote::{format_ident, ToTokens}; |
| 127 | 5 use std::path::Path; |
| 6 use std::process::Command; | |
| 7 use std::str::FromStr; | |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
8 use std::{env, fs}; |
|
114
93d423b65555
Ignore version-specific OpenPAM constants; generate signed ints.
Paul Fisher <paul@pfish.zone>
parents:
113
diff
changeset
|
9 use syn::{Item, ItemConst, Type, TypePath}; |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
10 |
|
125
2b255c92417b
Introduce base PAM functions; use the real X/SSO PAM header for tests.
Paul Fisher <paul@pfish.zone>
parents:
124
diff
changeset
|
11 // We're using the macro directly so we can match exhaustively. |
|
2b255c92417b
Introduce base PAM functions; use the real X/SSO PAM header for tests.
Paul Fisher <paul@pfish.zone>
parents:
124
diff
changeset
|
12 __pam_impl_enum__!(); |
|
2b255c92417b
Introduce base PAM functions; use the real X/SSO PAM header for tests.
Paul Fisher <paul@pfish.zone>
parents:
124
diff
changeset
|
13 |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
14 fn main() { |
|
121
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
15 let config = match PamImpl::CURRENT { |
|
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
16 PamImpl::LinuxPam => TestConfig { |
|
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
17 headers: vec![ |
|
124
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
18 "<security/_pam_types.h>", |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
19 "<security/pam_appl.h>", |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
20 "<security/pam_ext.h>", |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
21 "<security/pam_modules.h>", |
|
121
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
22 ], |
|
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
23 ignore_consts: vec![ |
|
124
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
24 "__LINUX_PAM__", |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
25 "__LINUX_PAM_MINOR__", |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
26 "PAM_AUTHTOK_RECOVER_ERR", |
|
121
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
27 ], |
|
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
28 ..Default::default() |
|
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
29 }, |
|
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
30 PamImpl::OpenPam => TestConfig { |
|
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
31 headers: vec![ |
|
124
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
32 "<security/pam_types.h>", |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
33 "<security/openpam.h>", |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
34 "<security/pam_appl.h>", |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
35 "<security/pam_constants.h>", |
|
121
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
36 ], |
|
124
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
37 ignore_consts: vec!["OPENPAM_VERSION", "OPENPAM_RELEASE", "PAM_SOEXT"], |
|
121
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
38 ..Default::default() |
|
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
39 }, |
|
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
40 PamImpl::Sun => TestConfig { |
|
124
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
41 headers: vec!["<security/pam_appl.h>", "<security/pam_modules.h>"], |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
42 block_headers: vec!["sys/.*"], |
|
121
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
43 ..Default::default() |
|
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
44 }, |
|
124
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
45 PamImpl::XSso => TestConfig { |
|
125
2b255c92417b
Introduce base PAM functions; use the real X/SSO PAM header for tests.
Paul Fisher <paul@pfish.zone>
parents:
124
diff
changeset
|
46 headers: vec!["\"xsso_pam_appl.h\""], |
|
124
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
47 ignore_consts: vec!["PAM_CRED_PRELIM_CHECK"], |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
48 ..Default::default() |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
49 }, |
|
121
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
50 }; |
|
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
51 generate_const_test(&config); |
| 127 | 52 generate_ctest(&config); |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
53 } |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
54 |
|
121
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
55 fn generate_const_test(config: &TestConfig) { |
|
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
56 let mut builder = bindgen::Builder::default() |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
57 .header_contents("_.h", &config.header_contents()) |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
58 .merge_extern_blocks(true) |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
59 .parse_callbacks(Box::new(bindgen::CargoCallbacks::new())) |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
60 .blocklist_type(".*") |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
61 .blocklist_function(".*") |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
62 .allowlist_var(".*") |
|
114
93d423b65555
Ignore version-specific OpenPAM constants; generate signed ints.
Paul Fisher <paul@pfish.zone>
parents:
113
diff
changeset
|
63 .default_macro_constant_type(MacroTypeVariation::Signed); |
|
121
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
64 for hdr in config.block_headers.iter() { |
|
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
65 builder = builder.blocklist_file(".*?/".to_owned() + hdr) |
|
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
66 } |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
67 |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
68 let generated = builder.generate().unwrap().to_string(); |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
69 let file = syn::parse_file(&generated).unwrap(); |
| 127 | 70 let mut tests = vec![ |
| 71 "use libpam_sys::*;".into(), | |
| 72 "#[allow(deprecated, overflowing_literals)]".into(), | |
| 73 "fn main() {".into(), | |
| 74 format!( | |
| 75 "assert_eq!(PamImpl::CURRENT, PamImpl::{:?});", | |
| 76 PamImpl::CURRENT | |
| 77 ), | |
| 78 ]; | |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
79 tests.extend( |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
80 file.items |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
81 .iter() |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
82 .filter_map(|item| { |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
83 if let Item::Const(item) = item { |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
84 Some(item) |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
85 } else { |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
86 None |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
87 } |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
88 }) |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
89 .filter(|item| config.should_check_const(item)) |
|
113
178310336596
Fix up more constants, make things i32 rather than u32.
Paul Fisher <paul@pfish.zone>
parents:
111
diff
changeset
|
90 .cloned() |
|
178310336596
Fix up more constants, make things i32 rather than u32.
Paul Fisher <paul@pfish.zone>
parents:
111
diff
changeset
|
91 .map(|mut item| { |
|
178310336596
Fix up more constants, make things i32 rather than u32.
Paul Fisher <paul@pfish.zone>
parents:
111
diff
changeset
|
92 item.ty = Box::new(Type::Path(TypePath { |
|
178310336596
Fix up more constants, make things i32 rather than u32.
Paul Fisher <paul@pfish.zone>
parents:
111
diff
changeset
|
93 qself: None, |
|
178310336596
Fix up more constants, make things i32 rather than u32.
Paul Fisher <paul@pfish.zone>
parents:
111
diff
changeset
|
94 path: format_ident!("i32").into(), |
|
178310336596
Fix up more constants, make things i32 rather than u32.
Paul Fisher <paul@pfish.zone>
parents:
111
diff
changeset
|
95 })); |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
96 format!( |
| 127 | 97 "assert_eq!({tokens}, {name});", |
|
113
178310336596
Fix up more constants, make things i32 rather than u32.
Paul Fisher <paul@pfish.zone>
parents:
111
diff
changeset
|
98 tokens = item.expr.to_token_stream(), |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
99 name = item.ident |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
100 ) |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
101 }), |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
102 ); |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
103 tests.push("}".into()); |
| 127 | 104 let const_test = test_file("constant_test.rs"); |
| 105 fs::write(&const_test, tests.join("\n")).unwrap(); | |
| 106 rustfmt(&const_test); | |
| 107 } | |
| 108 | |
| 109 fn generate_ctest(config: &TestConfig) { | |
| 110 let mut test = ctest::TestGenerator::new(); | |
| 111 | |
| 112 for header in config.headers.iter() { | |
| 113 if header.starts_with('"') { | |
| 114 test.include(env::var("CARGO_MANIFEST_DIR").unwrap()); | |
| 115 } | |
| 116 test.header(&header[1..header.len() - 1]); | |
| 117 } | |
| 118 // These are opaque structs. | |
| 119 test.skip_struct(|name| matches!(name, "pam_handle" | "AppData")); | |
| 120 test.skip_type(|name| matches!(name, "ConversationCallback" | "CleanupCallback")); | |
| 121 test.type_name(|name, _is_struct, is_union| { | |
| 122 assert!(!is_union); // we scabbin' | |
| 123 match name { | |
| 124 "pam_handle" => "struct pam_handle", | |
| 125 "pam_conv" => "struct pam_conv", | |
| 126 "pam_message" => "struct pam_message", | |
| 127 "pam_response" => "struct pam_response", | |
| 128 "AppData" => "void", | |
| 129 other => other, | |
| 130 } | |
| 131 .into() | |
| 132 }); | |
| 133 | |
| 134 // | |
| 135 // Welcome to THE HACK ZONE. | |
| 136 // | |
| 137 | |
| 138 // Define away constness because the various PAM implementations | |
| 139 // have different const annotations and this will surely drive you crazy. | |
| 140 test.define("const", Some("")); | |
| 141 | |
| 142 // Also replace all the `const`s with `mut`s in the ffi.rs file. | |
| 143 let file_contents = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/../src/ffi.rs")); | |
| 144 let deconsted_file = test_file("ffi.rs"); | |
| 145 remove_consts(file_contents, &deconsted_file); | |
| 146 | |
| 147 test.generate(&deconsted_file, "ctest.rs"); | |
| 148 } | |
| 149 | |
| 150 fn remove_consts(file_contents: &str, out_file: impl AsRef<Path>) { | |
| 151 let deconstified = deconstify( | |
| 152 TokenStream::from_str(file_contents).unwrap(), | |
|
130
80c07e5ab22f
Transfer over (almost) completely to using libpam-sys.
Paul Fisher <paul@pfish.zone>
parents:
127
diff
changeset
|
153 &format_ident!("mut"), |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
154 ) |
| 127 | 155 .to_string(); |
| 156 let out_file = out_file.as_ref(); | |
| 157 fs::write(out_file, deconstified).unwrap(); | |
| 158 rustfmt(out_file) | |
| 159 } | |
| 160 | |
| 161 fn rustfmt(file: impl AsRef<Path>) { | |
| 162 let status = Command::new(env!("CARGO")) | |
| 163 .args(["fmt", "--", file.as_ref().to_str().unwrap()]) | |
| 164 .status() | |
| 165 .unwrap(); | |
| 166 assert!(status.success(), "rustfmt exited with code {status}"); | |
| 167 } | |
| 168 | |
|
130
80c07e5ab22f
Transfer over (almost) completely to using libpam-sys.
Paul Fisher <paul@pfish.zone>
parents:
127
diff
changeset
|
169 fn deconstify(stream: TokenStream, mut_token: &Ident) -> TokenStream { |
| 127 | 170 TokenStream::from_iter(stream.into_iter().map(|token| { |
| 171 match token { | |
| 172 TokenTree::Group(g) => { | |
| 173 TokenTree::Group(Group::new(g.delimiter(), deconstify(g.stream(), mut_token))) | |
| 174 .into_token_stream() | |
| 175 } | |
| 176 TokenTree::Ident(id) if id == "const" => mut_token.into_token_stream(), | |
| 177 other => other.into_token_stream(), | |
| 178 } | |
| 179 })) | |
| 180 } | |
| 181 | |
| 182 fn test_file(name: impl AsRef<str>) -> String { | |
| 183 format!("{}/{}", env::var("OUT_DIR").unwrap(), name.as_ref()) | |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
184 } |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
185 |
|
121
397743cb70e2
Make libpam-sys-tests work on Illumos!
Paul Fisher <paul@pfish.zone>
parents:
118
diff
changeset
|
186 #[derive(Default)] |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
187 struct TestConfig { |
|
124
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
188 headers: Vec<&'static str>, |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
189 block_headers: Vec<&'static str>, |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
190 ignore_consts: Vec<&'static str>, |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
191 } |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
192 |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
193 impl TestConfig { |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
194 fn header_contents(&self) -> String { |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
195 let vec: Vec<_> = self |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
196 .headers |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
197 .iter() |
|
124
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
198 .map(|h| format!("#include {h}\n")) |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
199 .collect(); |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
200 vec.join("") |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
201 } |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
202 |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
203 fn should_check_const(&self, item: &ItemConst) -> bool { |
|
124
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
204 !self |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
205 .ignore_consts |
|
f469b8d9ad78
Add tests for the original X/SSO constants list.
Paul Fisher <paul@pfish.zone>
parents:
122
diff
changeset
|
206 .contains(&item.ident.to_string().as_ref()) |
|
110
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
207 } |
|
2346fd501b7a
Add tests for constants and do other macro niceties.
Paul Fisher <paul@pfish.zone>
parents:
diff
changeset
|
208 } |
