Skip to content

Commit 1288456

Browse files
committed
fix(kotlin): move jni_emitter tests last in the flattened module
jni_emitter.rs include!s its sub-files into one module. bridge_object.rs (included first) ended with the `#[cfg(test)] mod tests`, so every production item in the seven files included after it counted as appearing after a test module — tripping clippy::items_after_test_module under -D warnings. Extract the test module into jni_emitter/tests.rs and include! it last so the test module is the final item. No behavior change; the test still passes.
1 parent dda5871 commit 1288456

3 files changed

Lines changed: 32 additions & 26 deletions

File tree

src/backends/kotlin/gen_bindings/jni_emitter.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,6 @@ include!("jni_emitter/constructors.rs");
3232
include!("jni_emitter/binary_json.rs");
3333
include!("jni_emitter/trait_bridge.rs");
3434
include!("jni_emitter/paths.rs");
35+
// Included last so the `#[cfg(test)]` module is the final item in this flattened module
36+
// (`clippy::items_after_test_module`).
37+
include!("jni_emitter/tests.rs");

src/backends/kotlin/gen_bindings/jni_emitter/bridge_object.rs

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -237,29 +237,3 @@ fn trait_bridge_manages_jni_function(func_name: &str, config: &ResolvedCrateConf
237237
|| bridge.clear_fn.as_deref() == Some(func_name))
238238
})
239239
}
240-
241-
#[cfg(test)]
242-
mod tests {
243-
use super::*;
244-
use crate::core::config::{KotlinAndroidConfig, TraitBridgeConfig};
245-
246-
#[test]
247-
fn jni_bridge_object_treats_android_trait_lifecycle_functions_as_managed() {
248-
let config = ResolvedCrateConfig {
249-
kotlin_android: Some(KotlinAndroidConfig::default()),
250-
trait_bridges: vec![TraitBridgeConfig {
251-
trait_name: "Renderer".to_string(),
252-
register_fn: Some("register_renderer".to_string()),
253-
unregister_fn: Some("unregister_renderer".to_string()),
254-
clear_fn: Some("clear_renderers".to_string()),
255-
..TraitBridgeConfig::default()
256-
}],
257-
..ResolvedCrateConfig::default()
258-
};
259-
260-
assert!(trait_bridge_manages_jni_function("register_renderer", &config));
261-
assert!(trait_bridge_manages_jni_function("unregister_renderer", &config));
262-
assert!(trait_bridge_manages_jni_function("clear_renderers", &config));
263-
assert!(!trait_bridge_manages_jni_function("list_renderers", &config));
264-
}
265-
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Tests for the JNI emitter. Kept in a separate file `include!`d last by `jni_emitter.rs` so the
2+
// `#[cfg(test)]` module is the final item in the flattened module (the other `include!`d files
3+
// contribute production items, which must not follow a test module — `clippy::items_after_test_module`).
4+
5+
#[cfg(test)]
6+
mod tests {
7+
use super::*;
8+
use crate::core::config::{KotlinAndroidConfig, TraitBridgeConfig};
9+
10+
#[test]
11+
fn jni_bridge_object_treats_android_trait_lifecycle_functions_as_managed() {
12+
let config = ResolvedCrateConfig {
13+
kotlin_android: Some(KotlinAndroidConfig::default()),
14+
trait_bridges: vec![TraitBridgeConfig {
15+
trait_name: "Renderer".to_string(),
16+
register_fn: Some("register_renderer".to_string()),
17+
unregister_fn: Some("unregister_renderer".to_string()),
18+
clear_fn: Some("clear_renderers".to_string()),
19+
..TraitBridgeConfig::default()
20+
}],
21+
..ResolvedCrateConfig::default()
22+
};
23+
24+
assert!(trait_bridge_manages_jni_function("register_renderer", &config));
25+
assert!(trait_bridge_manages_jni_function("unregister_renderer", &config));
26+
assert!(trait_bridge_manages_jni_function("clear_renderers", &config));
27+
assert!(!trait_bridge_manages_jni_function("list_renderers", &config));
28+
}
29+
}

0 commit comments

Comments
 (0)