Init Commit

This commit is contained in:
2026-04-24 07:59:08 +02:00
commit b7b4dbeaa0
6 changed files with 943 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
import json
import tempfile
import unittest
from pathlib import Path
import reflection_config_generator as rgen
class ReflectionConfigGeneratorTests(unittest.TestCase):
def test_parse_package_filters_deduplicates_and_normalizes(self) -> None:
filters = rgen.parse_package_filters(
["com.acme.*, org.foo", "com.acme", " org.foo.bar "]
)
self.assertEqual(filters, ["com.acme", "org.foo", "org.foo.bar"])
def test_extract_top_level_types_ignores_nested_types(self) -> None:
source = """
package com.acme;
public class Outer {
class Inner {}
}
record Value(String v) {}
enum Mode { A, B }
"""
cleaned = rgen.strip_comments_and_literals(source)
self.assertEqual(
rgen.extract_top_level_types(cleaned),
["Outer", "Value", "Mode"],
)
def test_main_generates_reflection_config_for_filtered_packages(self) -> None:
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
(root / "src/com/acme").mkdir(parents=True)
(root / "src/com/acme/sub").mkdir(parents=True)
(root / "src/org/other").mkdir(parents=True)
(root / "src/com/acme/A.java").write_text(
"package com.acme; public class A {}",
encoding="utf-8",
)
(root / "src/com/acme/sub/B.java").write_text(
"package com.acme.sub; public record B(String name) {}",
encoding="utf-8",
)
(root / "src/org/other/C.java").write_text(
"package org.other; public class C {}",
encoding="utf-8",
)
out_file = root / "reflection-config.json"
exit_code = rgen.main(
[
"--source-root",
str(root / "src"),
"--package",
"com.acme",
"--output",
str(out_file),
]
)
self.assertEqual(exit_code, 0)
content = json.loads(out_file.read_text(encoding="utf-8"))
self.assertEqual(
[entry["name"] for entry in content],
["com.acme.A", "com.acme.sub.B"],
)
self.assertTrue(content[0]["allDeclaredMethods"])
self.assertTrue(content[0]["allDeclaredConstructors"])
self.assertTrue(content[0]["allDeclaredFields"])
self.assertNotIn("allPublicMethods", content[0])
if __name__ == "__main__":
unittest.main()