From bb6acab8bb293336d8edacb333a728bc183c9928 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Fri, 21 Jun 2024 15:26:36 -0400 Subject: [PATCH 1/2] Bump all generated-file and reviewed-file DFXML version references This patch clears TODOs that noted certain branches needed to merge in to the schema. Given the schema testing being used in file generation--parse round-tripping, all branches are assumed to have been merged. Signed-off-by: Alex Nelson --- dfxml/bin/Extractor.py | 4 ++-- dfxml/bin/cat_fileobjects.py | 4 ++-- dfxml/bin/cat_partitions.py | 4 ++-- dfxml/bin/idifference.py | 4 ++-- dfxml/bin/make_differential_dfxml.py | 4 ++-- dfxml/bin/walk_to_dfxml.py | 4 ++-- dfxml/writer.py | 6 ++--- samples/difference_test_0.xml | 2 +- samples/difference_test_1.xml | 2 +- samples/difference_test_2.xml | 2 +- samples/difference_test_3.xml | 2 +- samples/tcpflow_zip_generic_header.xml | 2 +- tests/misc_object_tests/ByteRun_test.py | 2 +- .../misc_object_tests/DiskImageObject_test.py | 24 +++++++------------ tests/misc_object_tests/FileObject_test.py | 4 ++-- .../misc_object_tests/PartitionObject_test.py | 6 ++--- .../PartitionSystemObject_test.py | 5 ++-- .../VolumeObject_externals_test.py | 2 +- tests/misc_object_tests/VolumeObject_test.py | 2 +- tests/misc_object_tests/error_test.py | 8 +++---- .../misc_object_tests/storage_layers_test.py | 13 +++++----- 21 files changed, 49 insertions(+), 57 deletions(-) diff --git a/dfxml/bin/Extractor.py b/dfxml/bin/Extractor.py index b438bea..0825315 100644 --- a/dfxml/bin/Extractor.py +++ b/dfxml/bin/Extractor.py @@ -13,7 +13,7 @@ # # We would appreciate acknowledgement if the software is used. -__version__ = "0.5.2" +__version__ = "0.6.0" import os import sys @@ -70,7 +70,7 @@ def extract_files(image_path, outdir, dfxml_path=None, file_predicate=is_file, f _path_for_iterparse = dfxml_path or image_path #Set up base manifest to track extracted files - base_manifest = Objects.DFXMLObject(version="1.2.0") + base_manifest = Objects.DFXMLObject(version="2.0.0-beta.0") base_manifest.program = sys.argv[0] if sys.argv[0] == os.path.basename(__file__): base_manifest.program_version = __version__ diff --git a/dfxml/bin/cat_fileobjects.py b/dfxml/bin/cat_fileobjects.py index cf0e95e..82521e2 100644 --- a/dfxml/bin/cat_fileobjects.py +++ b/dfxml/bin/cat_fileobjects.py @@ -17,7 +17,7 @@ Make a new DFXML file of all fileobjects in an input DFXML file. """ -__version__ = "0.3.1" +__version__ = "0.4.0" import sys import xml.etree.ElementTree as ET @@ -38,7 +38,7 @@ def main(): + version="2.0.0-beta.0"> %s diff --git a/dfxml/bin/cat_partitions.py b/dfxml/bin/cat_partitions.py index ea1d20b..154538b 100644 --- a/dfxml/bin/cat_partitions.py +++ b/dfxml/bin/cat_partitions.py @@ -27,7 +27,7 @@ will create a single DFXML file with two volumes and their file objects contained. """ -__version__ = "0.2.2" +__version__ = "0.3.0" import dfxml.objects as Objects import logging @@ -38,7 +38,7 @@ _logger = logging.getLogger(os.path.basename(__file__)) def main(): - d = Objects.DFXMLObject(version="1.2.0") + d = Objects.DFXMLObject(version="2.0.0-beta.0") d.program = sys.argv[0] d.program_version = __version__ diff --git a/dfxml/bin/idifference.py b/dfxml/bin/idifference.py index adbdea7..6ad2c0a 100644 --- a/dfxml/bin/idifference.py +++ b/dfxml/bin/idifference.py @@ -31,7 +31,7 @@ 4. Replace the old maps with the new maps """ -__version__ = "0.2.0rfc6" +__version__ = "0.3.0rfc7" import copy import logging @@ -376,7 +376,7 @@ def to_xml(self): xmlfile.write("""\ None: using_threading = False _logger.warning("Python queue support not available. (If running Ubuntu, this is in package python3-queuelib.) Running in single thread only.") - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") dobj.program = sys.argv[0] dobj.program_version = __version__ dobj.command_line = " ".join(sys.argv) diff --git a/dfxml/writer.py b/dfxml/writer.py index 1d29e1b..45cc5bf 100644 --- a/dfxml/writer.py +++ b/dfxml/writer.py @@ -17,7 +17,7 @@ import psutil import logging -__version__="0.1" +__version__="0.2.0" ### ### Code for working with Apache Spark @@ -85,7 +85,7 @@ def __init__(self,heartbeat=None,filename=None,prettyprint=False): """ self.t0 = time.time() self.tlast = time.time() - self.doc = ET.Element('dfxml') + self.doc = ET.Element('dfxml', {'version':'2.0.0-beta.0'}) self.add_DFXML_creator(self.doc) self.filename = filename self.timers = {} @@ -123,7 +123,7 @@ def add_application_kva(self,key,value=None,attr=None): def add_DFXML_creator(self,e): import __main__ - ee = ET.SubElement(e, 'creator', {'version':'1.0'}) + ee = ET.SubElement(e, 'creator') try: ET.SubElement(ee, 'program').text = str(__main__.__file__) except AttributeError as e: diff --git a/samples/difference_test_0.xml b/samples/difference_test_0.xml index 011aff3..51c4360 100644 --- a/samples/difference_test_0.xml +++ b/samples/difference_test_0.xml @@ -3,7 +3,7 @@ xmlns='http://www.forensicswiki.org/wiki/Category:Digital_Forensics_XML' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' - version='1.1.1'> + version='2.0.0-beta.0'> Sample diff --git a/samples/difference_test_1.xml b/samples/difference_test_1.xml index 71939b1..6ed576d 100644 --- a/samples/difference_test_1.xml +++ b/samples/difference_test_1.xml @@ -3,7 +3,7 @@ xmlns='http://www.forensicswiki.org/wiki/Category:Digital_Forensics_XML' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' - version='1.1.1'> + version='2.0.0-beta.0'> Sample diff --git a/samples/difference_test_2.xml b/samples/difference_test_2.xml index 8d000d4..09daf9a 100644 --- a/samples/difference_test_2.xml +++ b/samples/difference_test_2.xml @@ -2,7 +2,7 @@ + version='2.0.0-beta.0'> Sample diff --git a/samples/difference_test_3.xml b/samples/difference_test_3.xml index 5d614ec..7af0462 100644 --- a/samples/difference_test_3.xml +++ b/samples/difference_test_3.xml @@ -2,7 +2,7 @@ + version='2.0.0-beta.0'> Sample diff --git a/samples/tcpflow_zip_generic_header.xml b/samples/tcpflow_zip_generic_header.xml index 5837e0f..8ef2390 100644 --- a/samples/tcpflow_zip_generic_header.xml +++ b/samples/tcpflow_zip_generic_header.xml @@ -3,7 +3,7 @@ xmlns='http://www.forensicswiki.org/wiki/Category:Digital_Forensics_XML' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:tcpflow='http://www.forensicswiki.org/wiki/Category:Digital_Forensics_XML#tcpflow' - version='1.1.1'> + version='2.0.0-beta.0'> Sample diff --git a/tests/misc_object_tests/ByteRun_test.py b/tests/misc_object_tests/ByteRun_test.py index 73dd74f..64b9fb8 100644 --- a/tests/misc_object_tests/ByteRun_test.py +++ b/tests/misc_object_tests/ByteRun_test.py @@ -246,7 +246,7 @@ def test_glomming_fill(): raise def test_hash_properties(): - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") fobj = Objects.FileObject() dobj.append(fobj) diff --git a/tests/misc_object_tests/DiskImageObject_test.py b/tests/misc_object_tests/DiskImageObject_test.py index af3675b..09e3481 100644 --- a/tests/misc_object_tests/DiskImageObject_test.py +++ b/tests/misc_object_tests/DiskImageObject_test.py @@ -29,7 +29,7 @@ ERROR_2 = "Error 2" def test_empty_object(): - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") diobj = Objects.DiskImageObject() dobj.append(diobj) @@ -43,7 +43,7 @@ def test_empty_object(): os.remove(tmp_filename) def test_sector_size(): - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") diobj = Objects.DiskImageObject() dobj.append(diobj) @@ -61,8 +61,7 @@ def test_sector_size(): os.remove(tmp_filename) def test_error(): - #TODO Bump version when feature branch merged into schema. - dobj = Objects.DFXMLObject(version="1.2.0+") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") diobj = Objects.DiskImageObject() dobj.append(diobj) @@ -79,35 +78,30 @@ def test_error(): os.remove(tmp_filename) def test_error_after_partition_system(): - #TODO Bump version when feature branch merged into schema. - dobj = Objects.DFXMLObject(version="1.2.0+") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") diobj = Objects.DiskImageObject() dobj.append(diobj) diobj.error = ERROR_1 psobj = Objects.PartitionSystemObject() - #TODO This should be uncommented after the branch add_partition_system_error is merged. - #psobj.error = ERROR_2 + psobj.error = ERROR_2 diobj.append(psobj) # Do file I/O round trip. (tmp_filename, dobj_reconst) = libtest.file_round_trip_dfxmlobject(dobj) try: diobj_reconst = dobj_reconst.disk_images[0] - #TODO This should be uncommented after the branch add_partition_system_error is merged. - #psobj_reconst = diobj_reconst.partitionsystems[0] + psobj_reconst = diobj_reconst.partition_systems[0] assert diobj_reconst.error == ERROR_1 - #TODO This should be uncommented after the branch add_partition_system_error is merged. - #assert psobj_reconst.error == ERROR_2 + assert psobj_reconst.error == ERROR_2 except: _logger.debug("tmp_filename = %r." % tmp_filename) raise os.remove(tmp_filename) def test_error_after_file_system(): - #TODO Bump version when feature branch merged into schema. - dobj = Objects.DFXMLObject(version="1.2.0+") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") diobj = Objects.DiskImageObject() dobj.append(diobj) @@ -131,7 +125,7 @@ def test_error_after_file_system(): def test_error_after_file(): #TODO Bump version when feature branch merged into schema. - dobj = Objects.DFXMLObject(version="1.2.0+") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") diobj = Objects.DiskImageObject() dobj.append(diobj) diff --git a/tests/misc_object_tests/FileObject_test.py b/tests/misc_object_tests/FileObject_test.py index 18cb7ff..16f24f1 100644 --- a/tests/misc_object_tests/FileObject_test.py +++ b/tests/misc_object_tests/FileObject_test.py @@ -27,7 +27,7 @@ def test_empty_file_object() -> None: - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") fobj = Objects.FileObject() dobj.append(fobj) @@ -43,7 +43,7 @@ def test_empty_file_object() -> None: def test_blank_file_object_filename() -> None: - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") fobj = Objects.FileObject() dobj.append(fobj) diff --git a/tests/misc_object_tests/PartitionObject_test.py b/tests/misc_object_tests/PartitionObject_test.py index b997de6..6576672 100644 --- a/tests/misc_object_tests/PartitionObject_test.py +++ b/tests/misc_object_tests/PartitionObject_test.py @@ -26,7 +26,7 @@ _logger = logging.getLogger(os.path.basename(__file__)) def test_empty_object(): - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") pobj = Objects.PartitionObject() dobj.append(pobj) @@ -43,7 +43,7 @@ def test_cfreds_macwd_properties(): """ These were drawn from a CFReDS sample Mac disk image. """ - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") pobj = Objects.PartitionObject() dobj.append(pobj) @@ -65,7 +65,7 @@ def test_bsd_disklabel_properties(): """ These were drawn from a BSD Disk Label sample image. """ - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") pobj_a = Objects.PartitionObject() pobj_c = Objects.PartitionObject() dobj.append(pobj_a) diff --git a/tests/misc_object_tests/PartitionSystemObject_test.py b/tests/misc_object_tests/PartitionSystemObject_test.py index 195e63b..deaff51 100644 --- a/tests/misc_object_tests/PartitionSystemObject_test.py +++ b/tests/misc_object_tests/PartitionSystemObject_test.py @@ -26,7 +26,7 @@ _logger = logging.getLogger(os.path.basename(__file__)) def test_empty_object(): - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") psobj = Objects.PartitionSystemObject() dobj.append(psobj) @@ -40,8 +40,7 @@ def test_empty_object(): os.remove(tmp_filename) def test_error_element_order(): - #TODO When schema 1.3.0 is released, update version. - dobj = Objects.DFXMLObject(version="1.2.0+") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") psobj = Objects.PartitionSystemObject() fobj = Objects.FileObject() diff --git a/tests/misc_object_tests/VolumeObject_externals_test.py b/tests/misc_object_tests/VolumeObject_externals_test.py index 1033ba1..52179a4 100644 --- a/tests/misc_object_tests/VolumeObject_externals_test.py +++ b/tests/misc_object_tests/VolumeObject_externals_test.py @@ -101,7 +101,7 @@ def test_externals(): def test_prefixed_externals_round_trip(): _logger = logging.getLogger(os.path.basename(__file__)) - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") vobj = Objects.VolumeObject() dobj.append(vobj) diff --git a/tests/misc_object_tests/VolumeObject_test.py b/tests/misc_object_tests/VolumeObject_test.py index 6b5d512..ae0f3af 100644 --- a/tests/misc_object_tests/VolumeObject_test.py +++ b/tests/misc_object_tests/VolumeObject_test.py @@ -26,7 +26,7 @@ _logger = logging.getLogger(os.path.basename(__file__)) def test_empty_object(): - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") vobj = Objects.VolumeObject() dobj.append(vobj) diff --git a/tests/misc_object_tests/error_test.py b/tests/misc_object_tests/error_test.py index 05d8854..310d127 100644 --- a/tests/misc_object_tests/error_test.py +++ b/tests/misc_object_tests/error_test.py @@ -30,7 +30,7 @@ _logger = logging.getLogger(os.path.basename(__file__)) def test_volume_error_roundtrip_without_file(): - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") vobj = Objects.VolumeObject() dobj.append(vobj) @@ -49,7 +49,7 @@ def test_volume_error_roundtrip_without_file(): os.remove(tmp_filename) def test_file_error_roundtrip(): - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") fobj = Objects.FileObject() dobj.append(fobj) @@ -68,7 +68,7 @@ def test_file_error_roundtrip(): os.remove(tmp_filename) def test_volume_error_roundtrip_with_file(): - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") vobj = Objects.VolumeObject() dobj.append(vobj) @@ -97,7 +97,7 @@ def test_volume_error_roundtrip_with_file(): os.remove(tmp_filename) def test_volume_error_roundtrip_with_file_and_extns(): - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") vobj = Objects.VolumeObject() dobj.append(vobj) diff --git a/tests/misc_object_tests/storage_layers_test.py b/tests/misc_object_tests/storage_layers_test.py index 64837c3..5e6196d 100644 --- a/tests/misc_object_tests/storage_layers_test.py +++ b/tests/misc_object_tests/storage_layers_test.py @@ -62,7 +62,7 @@ def _test_file_in_non_fs_levels_deep( """ This test follows a simple, vertical storage layer stack, but adds a file at each layer. """ - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") # Add file to top-level document. fobj_dobj = Objects.FileObject() @@ -184,7 +184,7 @@ def _test_file_in_non_fs_levels_flat( """ This test follows a simple, horizontal storage layer stack (every container attached to top document object), and adds a file for each container. """ - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") # Add file to top-level document. fobj_dobj = Objects.FileObject() @@ -284,7 +284,7 @@ def test_file_in_non_fs_levels_flat() -> None: raise def test_solaris_ps_in_partition() -> None: - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") psobj_outer = Objects.PartitionSystemObject() dobj.append(psobj_outer) @@ -331,8 +331,7 @@ def test_solaris_ps_in_partition() -> None: os.remove(tmp_filename) def test_partition_in_partition() -> None: - #TODO Remove "+" on DFXML Schema 1.3.0 tracking. - dobj = Objects.DFXMLObject(version="1.2.0+") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") psobj = Objects.PartitionSystemObject() psobj.pstype_str = "mbr" @@ -357,7 +356,7 @@ def test_partition_in_partition() -> None: os.remove(tmp_filename) def test_hfsplus_in_hfs() -> None: - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") vobj_outer = Objects.VolumeObject() vobj_outer.ftype_str = "hfs" dobj.append(vobj_outer) @@ -380,7 +379,7 @@ def test_hfsplus_in_hfs() -> None: os.remove(tmp_filename) def test_disk_image_in_file_system() -> None: - dobj = Objects.DFXMLObject(version="1.2.0") + dobj = Objects.DFXMLObject(version="2.0.0-beta.0") vobj = Objects.VolumeObject() vobj.ftype_str = "iso9660" From 04b7daaba61d7a655fb3802fd4fef37606c32777 Mon Sep 17 00:00:00 2001 From: Alex Nelson Date: Mon, 24 Jun 2024 16:21:32 -0400 Subject: [PATCH 2/2] Assign new string constant DFXML_VERSION as default value Signed-off-by: Alex Nelson --- dfxml/__init__.py | 3 +++ dfxml/bin/Extractor.py | 2 +- dfxml/bin/cat_fileobjects.py | 4 ++-- dfxml/bin/cat_partitions.py | 2 +- dfxml/bin/idifference.py | 3 ++- dfxml/bin/make_differential_dfxml.py | 2 +- dfxml/bin/walk_to_dfxml.py | 2 +- dfxml/objects.py | 4 ++-- dfxml/writer.py | 4 +++- tests/misc_object_tests/ByteRun_test.py | 2 +- tests/misc_object_tests/DiskImageObject_test.py | 12 ++++++------ tests/misc_object_tests/FileObject_test.py | 4 ++-- tests/misc_object_tests/PartitionObject_test.py | 6 +++--- .../misc_object_tests/PartitionSystemObject_test.py | 4 ++-- .../misc_object_tests/VolumeObject_externals_test.py | 2 +- tests/misc_object_tests/VolumeObject_test.py | 2 +- tests/misc_object_tests/error_test.py | 8 ++++---- tests/misc_object_tests/storage_layers_test.py | 12 ++++++------ 18 files changed, 42 insertions(+), 36 deletions(-) diff --git a/dfxml/__init__.py b/dfxml/__init__.py index 2c60fc7..e7d6a98 100644 --- a/dfxml/__init__.py +++ b/dfxml/__init__.py @@ -61,6 +61,9 @@ tsk_virtual_filenames = set(['$FAT1','$FAT2']) +# This version string is the version of the DFXML Schema. +DFXML_VERSION = "2.0.0-beta.0" + XMLNS_DC = "http://purl.org/dc/elements/1.1/" XMLNS_DFXML = "http://www.forensicswiki.org/wiki/Category:Digital_Forensics_XML" XMLNS_DELTA = "http://www.forensicswiki.org/wiki/Forensic_Disk_Differencing" diff --git a/dfxml/bin/Extractor.py b/dfxml/bin/Extractor.py index 0a1c104..35e4faf 100644 --- a/dfxml/bin/Extractor.py +++ b/dfxml/bin/Extractor.py @@ -70,7 +70,7 @@ def extract_files(image_path, outdir, dfxml_path=None, file_predicate=is_file, f _path_for_iterparse = dfxml_path or image_path #Set up base manifest to track extracted files - base_manifest = Objects.DFXMLObject(version="2.0.0-beta.0") + base_manifest = Objects.DFXMLObject() base_manifest.program = sys.argv[0] if sys.argv[0] == os.path.basename(__file__): base_manifest.program_version = __version__ diff --git a/dfxml/bin/cat_fileobjects.py b/dfxml/bin/cat_fileobjects.py index 58855f3..7ae30ed 100644 --- a/dfxml/bin/cat_fileobjects.py +++ b/dfxml/bin/cat_fileobjects.py @@ -39,7 +39,7 @@ def main(): + version="%s"> %s @@ -51,7 +51,7 @@ def main(): %s \ -""" % (dfxml.XMLNS_DFXML, dfxml.XMLNS_DELTA, sys.argv[0], __version__, " ".join(sys.argv), args.filename)) +""" % (dfxml.XMLNS_DFXML, dfxml.XMLNS_DELTA, dfxml.DFXML_VERSION, sys.argv[0], __version__, " ".join(sys.argv), args.filename)) ET.register_namespace("delta", dfxml.XMLNS_DELTA) diff --git a/dfxml/bin/cat_partitions.py b/dfxml/bin/cat_partitions.py index 32ee39b..e74cecf 100644 --- a/dfxml/bin/cat_partitions.py +++ b/dfxml/bin/cat_partitions.py @@ -39,7 +39,7 @@ _logger = logging.getLogger(os.path.basename(__file__)) def main(): - d = Objects.DFXMLObject(version="2.0.0-beta.0") + d = Objects.DFXMLObject() d.program = sys.argv[0] d.program_version = __version__ diff --git a/dfxml/bin/idifference.py b/dfxml/bin/idifference.py index 8628953..051bef7 100644 --- a/dfxml/bin/idifference.py +++ b/dfxml/bin/idifference.py @@ -365,6 +365,7 @@ def to_xml(self): exit(1) metadict = dict() + metadict["DFXML_VERSION"] = dfxml.DFXML_VERSION metadict["XMLNS_DFXML"] = dfxml.XMLNS_DFXML metadict["XMLNS_DELTA"] = dfxml.XMLNS_DELTA metadict["program"] = sys.argv[0] @@ -377,7 +378,7 @@ def to_xml(self): xmlfile.write("""\ None: using_threading = False _logger.warning("Python queue support not available. (If running Ubuntu, this is in package python3-queuelib.) Running in single thread only.") - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() dobj.program = sys.argv[0] dobj.program_version = __version__ dobj.command_line = " ".join(sys.argv) diff --git a/dfxml/objects.py b/dfxml/objects.py index 3c0d157..e6aa327 100644 --- a/dfxml/objects.py +++ b/dfxml/objects.py @@ -232,11 +232,11 @@ def child_objects(self): class DFXMLObject(AbstractParentObject): - def __init__(self, *args, **kwargs) -> None: + def __init__(self, *args: typing.Any, version: str = dfxml.DFXML_VERSION, **kwargs: typing.Any) -> None: self.command_line = kwargs.get("command_line") self.program = kwargs.get("program") self.program_version = kwargs.get("program_version") - self.version = kwargs.get("version") + self.version = version self.sources = kwargs.get("sources", []) self.dc = kwargs.get("dc", dict()) self.externals = kwargs.get("externals", OtherNSElementList()) diff --git a/dfxml/writer.py b/dfxml/writer.py index cf01583..b156957 100644 --- a/dfxml/writer.py +++ b/dfxml/writer.py @@ -16,6 +16,8 @@ import __main__ import psutil +from dfxml import DFXML_VERSION + __version__="0.2.0" ### @@ -84,7 +86,7 @@ def __init__(self,heartbeat=None,filename=None,prettyprint=False): """ self.t0 = time.time() self.tlast = time.time() - self.doc = ET.Element('dfxml', {'version':'2.0.0-beta.0'}) + self.doc = ET.Element('dfxml', {'version': DFXML_VERSION}) self.add_DFXML_creator(self.doc) self.filename = filename self.timers = {} diff --git a/tests/misc_object_tests/ByteRun_test.py b/tests/misc_object_tests/ByteRun_test.py index 923a56e..20c45e4 100644 --- a/tests/misc_object_tests/ByteRun_test.py +++ b/tests/misc_object_tests/ByteRun_test.py @@ -246,7 +246,7 @@ def test_glomming_fill(): raise def test_hash_properties(): - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() fobj = Objects.FileObject() dobj.append(fobj) diff --git a/tests/misc_object_tests/DiskImageObject_test.py b/tests/misc_object_tests/DiskImageObject_test.py index 9ae56cf..d66eeba 100644 --- a/tests/misc_object_tests/DiskImageObject_test.py +++ b/tests/misc_object_tests/DiskImageObject_test.py @@ -29,7 +29,7 @@ ERROR_2 = "Error 2" def test_empty_object(): - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() diobj = Objects.DiskImageObject() dobj.append(diobj) @@ -43,7 +43,7 @@ def test_empty_object(): os.remove(tmp_filename) def test_sector_size(): - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() diobj = Objects.DiskImageObject() dobj.append(diobj) @@ -61,7 +61,7 @@ def test_sector_size(): os.remove(tmp_filename) def test_error(): - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() diobj = Objects.DiskImageObject() dobj.append(diobj) @@ -78,7 +78,7 @@ def test_error(): os.remove(tmp_filename) def test_error_after_partition_system(): - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() diobj = Objects.DiskImageObject() dobj.append(diobj) @@ -101,7 +101,7 @@ def test_error_after_partition_system(): os.remove(tmp_filename) def test_error_after_file_system(): - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() diobj = Objects.DiskImageObject() dobj.append(diobj) @@ -125,7 +125,7 @@ def test_error_after_file_system(): def test_error_after_file(): #TODO Bump version when feature branch merged into schema. - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() diobj = Objects.DiskImageObject() dobj.append(diobj) diff --git a/tests/misc_object_tests/FileObject_test.py b/tests/misc_object_tests/FileObject_test.py index 73dff44..9772f50 100644 --- a/tests/misc_object_tests/FileObject_test.py +++ b/tests/misc_object_tests/FileObject_test.py @@ -27,7 +27,7 @@ def test_empty_file_object() -> None: - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() fobj = Objects.FileObject() dobj.append(fobj) @@ -43,7 +43,7 @@ def test_empty_file_object() -> None: def test_blank_file_object_filename() -> None: - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() fobj = Objects.FileObject() dobj.append(fobj) diff --git a/tests/misc_object_tests/PartitionObject_test.py b/tests/misc_object_tests/PartitionObject_test.py index 53b30c2..5c1d2ef 100644 --- a/tests/misc_object_tests/PartitionObject_test.py +++ b/tests/misc_object_tests/PartitionObject_test.py @@ -26,7 +26,7 @@ _logger = logging.getLogger(os.path.basename(__file__)) def test_empty_object(): - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() pobj = Objects.PartitionObject() dobj.append(pobj) @@ -43,7 +43,7 @@ def test_cfreds_macwd_properties(): """ These were drawn from a CFReDS sample Mac disk image. """ - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() pobj = Objects.PartitionObject() dobj.append(pobj) @@ -65,7 +65,7 @@ def test_bsd_disklabel_properties(): """ These were drawn from a BSD Disk Label sample image. """ - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() pobj_a = Objects.PartitionObject() pobj_c = Objects.PartitionObject() dobj.append(pobj_a) diff --git a/tests/misc_object_tests/PartitionSystemObject_test.py b/tests/misc_object_tests/PartitionSystemObject_test.py index 51d25f1..2a4f245 100644 --- a/tests/misc_object_tests/PartitionSystemObject_test.py +++ b/tests/misc_object_tests/PartitionSystemObject_test.py @@ -26,7 +26,7 @@ _logger = logging.getLogger(os.path.basename(__file__)) def test_empty_object(): - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() psobj = Objects.PartitionSystemObject() dobj.append(psobj) @@ -40,7 +40,7 @@ def test_empty_object(): os.remove(tmp_filename) def test_error_element_order(): - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() psobj = Objects.PartitionSystemObject() fobj = Objects.FileObject() diff --git a/tests/misc_object_tests/VolumeObject_externals_test.py b/tests/misc_object_tests/VolumeObject_externals_test.py index 97af97f..2ccb8e3 100644 --- a/tests/misc_object_tests/VolumeObject_externals_test.py +++ b/tests/misc_object_tests/VolumeObject_externals_test.py @@ -101,7 +101,7 @@ def test_externals(): def test_prefixed_externals_round_trip(): _logger = logging.getLogger(os.path.basename(__file__)) - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() vobj = Objects.VolumeObject() dobj.append(vobj) diff --git a/tests/misc_object_tests/VolumeObject_test.py b/tests/misc_object_tests/VolumeObject_test.py index a7241e3..e5c3630 100644 --- a/tests/misc_object_tests/VolumeObject_test.py +++ b/tests/misc_object_tests/VolumeObject_test.py @@ -26,7 +26,7 @@ _logger = logging.getLogger(os.path.basename(__file__)) def test_empty_object(): - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() vobj = Objects.VolumeObject() dobj.append(vobj) diff --git a/tests/misc_object_tests/error_test.py b/tests/misc_object_tests/error_test.py index bbd4b39..dfa5af3 100644 --- a/tests/misc_object_tests/error_test.py +++ b/tests/misc_object_tests/error_test.py @@ -30,7 +30,7 @@ _logger = logging.getLogger(os.path.basename(__file__)) def test_volume_error_roundtrip_without_file(): - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() vobj = Objects.VolumeObject() dobj.append(vobj) @@ -49,7 +49,7 @@ def test_volume_error_roundtrip_without_file(): os.remove(tmp_filename) def test_file_error_roundtrip(): - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() fobj = Objects.FileObject() dobj.append(fobj) @@ -68,7 +68,7 @@ def test_file_error_roundtrip(): os.remove(tmp_filename) def test_volume_error_roundtrip_with_file(): - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() vobj = Objects.VolumeObject() dobj.append(vobj) @@ -97,7 +97,7 @@ def test_volume_error_roundtrip_with_file(): os.remove(tmp_filename) def test_volume_error_roundtrip_with_file_and_extns(): - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() vobj = Objects.VolumeObject() dobj.append(vobj) diff --git a/tests/misc_object_tests/storage_layers_test.py b/tests/misc_object_tests/storage_layers_test.py index 54868aa..e8e3419 100644 --- a/tests/misc_object_tests/storage_layers_test.py +++ b/tests/misc_object_tests/storage_layers_test.py @@ -62,7 +62,7 @@ def _test_file_in_non_fs_levels_deep( """ This test follows a simple, vertical storage layer stack, but adds a file at each layer. """ - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() # Add file to top-level document. fobj_dobj = Objects.FileObject() @@ -184,7 +184,7 @@ def _test_file_in_non_fs_levels_flat( """ This test follows a simple, horizontal storage layer stack (every container attached to top document object), and adds a file for each container. """ - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() # Add file to top-level document. fobj_dobj = Objects.FileObject() @@ -284,7 +284,7 @@ def test_file_in_non_fs_levels_flat() -> None: raise def test_solaris_ps_in_partition() -> None: - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() psobj_outer = Objects.PartitionSystemObject() dobj.append(psobj_outer) @@ -331,7 +331,7 @@ def test_solaris_ps_in_partition() -> None: os.remove(tmp_filename) def test_partition_in_partition() -> None: - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() psobj = Objects.PartitionSystemObject() psobj.pstype_str = "mbr" @@ -356,7 +356,7 @@ def test_partition_in_partition() -> None: os.remove(tmp_filename) def test_hfsplus_in_hfs() -> None: - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() vobj_outer = Objects.VolumeObject() vobj_outer.ftype_str = "hfs" dobj.append(vobj_outer) @@ -379,7 +379,7 @@ def test_hfsplus_in_hfs() -> None: os.remove(tmp_filename) def test_disk_image_in_file_system() -> None: - dobj = Objects.DFXMLObject(version="2.0.0-beta.0") + dobj = Objects.DFXMLObject() vobj = Objects.VolumeObject() vobj.ftype_str = "iso9660"