def test_generated_code(self, value): input_file_name, file_paths = value file_paths = sorted(file_paths + _get_init_paths(file_paths)) # Read json and generate code in a file. with tempfile.TemporaryDirectory() as tempdir: json_file_path = os.path.join(self.spec_dir, f'{input_file_name}.json') folder_path = self.generator.generate(json_file_path, tempdir, is_dry_run=True) self.dir_path = folder_path # Reorder code. generated_files = sorted( utils.get_generated_files_in_dir(folder_path)) expected_files = [ f"{os.path.join(folder_path, file)}.py" for file in file_paths ] self.assertEqual(generated_files, expected_files) for i, generated_file in enumerate(generated_files): with open(generated_file, 'r') as f: generated_code = f.read() # assert if generated code matches with the expected code expected_code_path = os.path.join(self.test_output, f'{file_paths[i]}.py') with open(expected_code_path, 'r') as f: expected_code = f.read() self.assertEqual(generated_code, expected_code)
def test_include_and_exclude_init(self): json_file_path = os.path.join( self.spec_dir, "example_import_ontology.json" ) with tempfile.TemporaryDirectory() as temp_dir: temp_filename = _get_temp_filename(json_file_path, temp_dir) # Test with include_init = True folder_path = self.generator.generate( temp_filename, temp_dir, is_dry_run=False, include_init=True ) gen_files = sorted(utils.get_generated_files_in_dir(folder_path)) # Assert the generated python files exp_file_path = [ "ft/__init__", "ft/onto/__init__", "ft/onto/example_import_ontology", ] exp_files = sorted( [ f"{os.path.join(folder_path, file)}.py" for file in exp_file_path ] ) self.assertEqual(gen_files, exp_files) # Now, corrupt one of the init files corrupted_path = os.path.join(folder_path, "ft/__init__.py") with open(corrupted_path, "w") as f: f.write("# ***corrupted file***\n") # Re-generate using include_init = False self.generator = OntologyCodeGenerator() folder_path = self.generator.generate( temp_filename, folder_path, is_dry_run=False, include_init=False ) gen_files = sorted(utils.get_generated_files_in_dir(folder_path)) # Assert the generated python files after removing the corrupted # file which should not have been regenerated exp_files = [file for file in exp_files if file != corrupted_path] self.assertEqual(gen_files, exp_files)