sim-codec-classfile 0.1.0

Bounded, lossless Java Virtual Machine classfile codec for SIM
Documentation
�

���j�����SrSSKJr SSKrSSKrSSKrSSKrSSKr\R"\	5R5RSrSr
"SS\R5r\S:Xa\R""5 gg)	z>Focused fixture proof for the classfile Index coverage policy.�)�annotationsN�)�generate_index_coverage.pyzindex-coverage.tomlzopcode-manifest.tsv�CLASSFILE_COVERAGE.mdzsrc/constant.rszsrc/constant/model.rszsrc/constant/codec.rszsrc/attribute.rszsrc/attribute/basic.rszsrc/attribute/annotations.rszsrc/attribute/code.rszsrc/attribute/class.rszsrc/opcode_generated.rsz
OPCODES.mdc�d�\rSrSrSSjrSSjrS
SjrSSjrSSjrSSjr	SSjr
SS	jrS
rg)�CoveragePolicyFixtures� c�v�[R"SS9Ul[R"URR
5UlURS-R5 [HJnURU-nURRSSS9 [R"[U-U5 ML g)Nzsim-classfile-index-)�prefix�srcT)�parents�exist_ok)
�tempfile�TemporaryDirectory�	temporary�pathlib�Path�name�root�mkdir�INPUTS�parent�shutil�copy2�ROOT)�self�relative�targets   �T/home/bo/projects/sim-codecs/crates/sim-codec-classfile/tests/test_index_coverage.py�setUp�CoveragePolicyFixtures.setUp!s���!�4�4�<R�S����L�L����!4�!4�5��	�	
���U�	�!�!�#��H��Y�Y��)�F��M�M����t��<��L�L����&�1��c�8�URR5 g)N)r�cleanup�rs r�tearDown�CoveragePolicyFixtures.tearDown*s������� r"c
��[R"S[URS-5SSS[UR5/SSSS9$)	N�python3rz--checkz--scanz--workspace-rootTF)�text�capture_output�check)�
subprocess�run�strrr%s r�
run_policy�!CoveragePolicyFixtures.run_policy-sJ���~�~�
��D�I�I�(D�D�E�y�RZ�\n�ps�tx�t}�t}�p~�����	
�	
r"c���UR5nURURSUR5 URS-R5nUR
SU5 UR
SU5 g)Nrrz256 opcodeszcoverage difference: 0)r0�assertEqual�
returncode�stderrr�	read_text�assertIn)r�result�
projections   r�)test_clean_projection_has_zero_difference�@CoveragePolicyFixtures.test_clean_projection_has_zero_difference5s_�����"������*�*�A�v�}�}�=��i�i�"9�9�D�D�F�
��
�
�m�Z�0��
�
�.�
�;r"c��URS-RS5 URSUR5R5 g)Nzsrc/duplicate.rsz(const OPCODE_TABLE: &[u8] = &[0, 1, 2];
zduplicate classfile inventory�r�
write_textr7r0r5r%s r�test_duplicate_inventory_fails�5CoveragePolicyFixtures.test_duplicate_inventory_fails<s7��	
���'�	'�3�3�4_�`��
�
�5�t���7H�7O�7O�Pr"c���URS-nURSS9 URS-RS5 US-RS5 UR	SUR5R5 g)	Nzcrates/sim-lib-jvm-runtime/srcT)r
z
Cargo.tomlz'[package]
name = "sim-lib-jvm-runtime"
z	parser.rsz2fn classfile(r: &mut ByteReader) { r.read_u2(); }
zparses classfile bytes outside)rrrr>r7r0r5)r�sources  r�test_runtime_byte_parser_fails�5CoveragePolicyFixtures.test_runtime_byte_parser_fails@sg�����=�=�����T��"�	����	%�1�1�2]�^�	�+�	�)�)�*_�`��
�
�6����8I�8P�8P�Qr"c��URS-RS5 URSUR5R5 g)Nzsrc/lossy.rsz;fn modified_utf8(b: &[u8]) { String::from_utf8_lossy(b); }
zlossy modified UTF-8 crossingr=r%s r�test_lossy_modified_utf8_fails�5CoveragePolicyFixtures.test_lossy_modified_utf8_failsGs6��	
���^�	#�/�/�0n�o��
�
�5�t���7H�7O�7O�Pr"c��URS-RS5 URSUR5R5 g)Nrzhand edited
z%generated classfile coverage is staler=r%s r�%test_hand_edited_generated_file_fails�<CoveragePolicyFixtures.test_hand_edited_generated_file_failsKs6��	
���,�	,�8�8��I��
�
�=�t���?P�?W�?W�Xr")rrN)�return�None)rKz subprocess.CompletedProcess[str])
�__name__�
__module__�__qualname__�__firstlineno__r r&r0r:r?rCrFrI�__static_attributes__�r"rrr s.��2�!�
�<�Q�R�Q�Yr"r�__main__)�__doc__�
__future__rrrr-r�unittestr�__file__�resolver
rr�TestCaserrM�mainrRr"r�<module>r[sr��D�"��
�����|�|�H��%�%�'�/�/��2��
��$-Y�X�.�.�-Y�`�z���M�M�O�r"