diff options
Diffstat (limited to 'libc/utils/hdrgen/tests/test_integration.py')
-rw-r--r-- | libc/utils/hdrgen/tests/test_integration.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/libc/utils/hdrgen/tests/test_integration.py b/libc/utils/hdrgen/tests/test_integration.py new file mode 100644 index 0000000..49cb08cd --- /dev/null +++ b/libc/utils/hdrgen/tests/test_integration.py @@ -0,0 +1,73 @@ +import argparse +import subprocess +import sys +import unittest +from pathlib import Path + + +class TestHeaderGenIntegration(unittest.TestCase): + def setUp(self): + self.output_dir = TestHeaderGenIntegration.output_dir + self.source_dir = Path(__file__).parent + self.main_script = self.source_dir.parent / "main.py" + + def run_script(self, yaml_file, output_file, entry_points): + command = [ + "python3", + str(self.main_script), + str(yaml_file), + "--output", + str(output_file), + ] + + for entry_point in entry_points: + command.extend(["--entry-point", entry_point]) + + result = subprocess.run( + command, + capture_output=True, + text=True, + ) + + print("STDOUT:", result.stdout) + print("STDERR:", result.stderr) + result.check_returncode() + + def compare_files(self, generated_file, expected_file): + with generated_file.open("r") as gen_file: + gen_content = gen_file.read() + with expected_file.open("r") as exp_file: + exp_content = exp_file.read() + + self.assertEqual(gen_content, exp_content) + + def test_generate_header(self): + yaml_file = self.source_dir / "input/test_small.yaml" + expected_output_file = self.source_dir / "expected_output/test_header.h" + output_file = self.output_dir / "test_small.h" + entry_points = {"func_b", "func_a", "func_c", "func_d", "func_e"} + + self.run_script(yaml_file, output_file, entry_points) + + self.compare_files(output_file, expected_output_file) + + +def main(): + parser = argparse.ArgumentParser(description="TestHeaderGenIntegration arguments") + parser.add_argument( + "--output_dir", + type=Path, + help="Output directory for generated headers", + required=True, + ) + args, remaining_argv = parser.parse_known_args() + + TestHeaderGenIntegration.output_dir = args.output_dir + + sys.argv[1:] = remaining_argv + + unittest.main() + + +if __name__ == "__main__": + main() |