Index: spongenet/trunk/spongenet/expand.py =================================================================== --- spongenet/trunk/spongenet/expand.py (revision 348) +++ spongenet/trunk/spongenet/expand.py (revision 351) @@ -31,5 +31,5 @@ USAGE = "\n".join(__doc__.splitlines()[3:8]) -TEST_PATH = "tests/expand" +TEST_PATH = os.path.join("tests", "expand") @@ -224,9 +224,9 @@ namespace = {} - namespace["zipdir"] = None - namespace["xmldir"] = None - namespace["zipdir_pattern"] = None - namespace["zipfile_pattern"] = None - namespace["xmlfile_pattern"] = None + namespace["ZIPDIR"] = None + namespace["XMLDIR"] = None + namespace["ZIPDIR_PATTERN"] = None + namespace["ZIPFILE_PATTERN"] = None + namespace["XMLFILE_PATTERN"] = None try: execfile(path, globals(), namespace) @@ -235,9 +235,9 @@ except SyntaxError: print USAGE - return (namespace["zipdir"], - namespace["xmldir"], - namespace["zipdir_pattern"], - namespace["zipfile_pattern"], - namespace["xmlfile_pattern"],) + return (namespace["ZIPDIR"], + namespace["XMLDIR"], + namespace["ZIPDIR_PATTERN"], + namespace["ZIPFILE_PATTERN"], + namespace["XMLFILE_PATTERN"],) @@ -354,5 +354,5 @@ for zip_month in zip_months: # Create each monthly XML subdirectory. - xml_month = os.path.join(xmldir, os.path.split(zip_month)[1]) + xml_month = os.path.join(xmldir, os.path.basename(zip_month)) if not os.path.exists(xml_month): os.mkdir(xml_month, 0755) @@ -370,5 +370,5 @@ for zip_file in zipfiles: # Create an XML subdirectory for each zip file. - xml_subdir = os.path.splitext(os.path.split(zip_file)[1])[0] + xml_subdir = os.path.splitext(os.path.basename(zip_file))[0] xml_subdir = os.path.join(xml_month, xml_subdir) if not os.path.exists(xml_subdir): Index: spongenet/trunk/spongenet/parse.py =================================================================== --- spongenet/trunk/spongenet/parse.py (revision 350) +++ spongenet/trunk/spongenet/parse.py (revision 351) @@ -23,10 +23,12 @@ import os import glob +import hashlib import doctest import unittest from StringIO import StringIO +import xml.etree.ElementTree as ET USAGE = "\n".join(__doc__.splitlines()[3:8]) -TEST_PATH = "tests/parse" +TEST_PATH = os.path.join("tests", "parse") @@ -48,5 +50,5 @@ -def doc_path(): +def xmldoc_path(): """ Return the XML document file path from the command line. @@ -58,5 +60,5 @@ >>> sys.stdout = temp_stdout >>> sys.argv = [] - >>> _doc_path = doc_path() + >>> _xmldoc_path = xmldoc_path() >>> sys.stdout = save_stdout >>> USAGE == temp_stdout.getvalue()[:-1] @@ -69,5 +71,5 @@ >>> sys.stdout = temp_stdout >>> sys.argv = ["", "", "",] - >>> _doc_path = doc_path() + >>> _xmldoc_path = xmldoc_path() >>> sys.stdout = save_stdout >>> USAGE == temp_stdout.getvalue()[:-1] @@ -79,10 +81,10 @@ >>> temp_stdout = StringIO() >>> sys.stdout = temp_stdout - >>> _doc_path = os.path.join( - ... os.path.dirname( - ... os.path.abspath(__file__)), - ... TEST_PATH) - >>> sys.argv = ["", _doc_path] - >>> _doc_path = doc_path() + >>> _xmldoc_path = os.path.join( + ... os.path.dirname( + ... os.path.abspath(__file__)), + ... TEST_PATH) + >>> sys.argv = ["", _xmldoc_path] + >>> _xmldoc_path = xmldoc_path() >>> sys.stdout = save_stdout >>> USAGE == temp_stdout.getvalue()[:-1] @@ -94,10 +96,10 @@ >>> temp_stdout = StringIO() >>> sys.stdout = temp_stdout - >>> _doc_path = os.path.join( - ... os.path.dirname( - ... os.path.abspath(__file__)), - ... TEST_PATH, "xxxxx") - >>> sys.argv = ["", _doc_path] - >>> _doc_path = doc_path() + >>> _xmldoc_path = os.path.join( + ... os.path.dirname( + ... os.path.abspath(__file__)), + ... TEST_PATH, "xxxxx") + >>> sys.argv = ["", _xmldoc_path] + >>> _xmldoc_path = xmldoc_path() >>> sys.stdout = save_stdout >>> USAGE == temp_stdout.getvalue()[:-1] @@ -106,11 +108,11 @@ Supply valid XML document path argument. - >>> _doc_path = os.path.join( - ... os.path.dirname( - ... os.path.abspath(__file__)), - ... TEST_PATH, "xml","*","*.xml") - >>> _doc_path = glob.glob(_doc_path)[0] - >>> sys.argv = ["", _doc_path] - >>> _doc_path == doc_path() + >>> _xmldoc_path = os.path.join( + ... os.path.dirname( + ... os.path.abspath(__file__)), + ... TEST_PATH, "xml","*","*.xml") + >>> _xmldoc_path = glob.glob(_xmldoc_path)[0] + >>> sys.argv = ["", _xmldoc_path] + >>> _xmldoc_path == xmldoc_path() True """ @@ -136,4 +138,49 @@ +def xmldoc(path): + """ + Return the XML document as a list of strings from a file at path. + + Get the test reference data. + + >>> xmlref = os.path.join( + ... os.path.dirname( + ... os.path.abspath(__file__)), + ... TEST_PATH, "xmlref.py") + >>> namespace = {} + >>> execfile(xmlref, globals(), namespace) + >>> xml_doc_lens = namespace["XML_DOC_LENS"] + >>> xml_doc_md5s = namespace["XML_DOC_MD5S"] + + Pick a test document. + + >>> xmldoc_glob = os.path.join( + ... os.path.dirname( + ... os.path.abspath(__file__)), + ... TEST_PATH, "xml","*","*.xml") + >>> _xmldoc_path = glob.glob(xmldoc_glob)[0] + >>> _xmldoc = xmldoc(_xmldoc_path) + + Verify the test document matches the reference data. + + >>> _xmldoc[0] == '\\n' + True + >>> _xmldoc[-1] == '\\n' + True + >>> len(_xmldoc) == xml_doc_lens[os.path.basename(_xmldoc_path)] + True + >>> doc_hash = hashlib.md5() + >>> doc_hash.update("".join(_xmldoc)) + >>> doc_hash.hexdigest() == xml_doc_md5s[os.path.basename(_xmldoc_path)] + True + """ + + _xmldoc = None + with open(path) as handle: + _xmldoc = handle.readlines() + + return _xmldoc + + def _main(): """ @@ -145,7 +192,8 @@ """ - _doc_path = doc_path() - if _doc_path: - print _doc_path + _xmldoc_path = xmldoc_path() + if _xmldoc_path: + _xmldoc = xmldoc(_xmldoc_path) + print len(_xmldoc) return Index: spongenet/trunk/spongenet/tests/expand/bad_config.py =================================================================== --- spongenet/trunk/spongenet/tests/expand/bad_config.py (revision 344) +++ spongenet/trunk/spongenet/tests/expand/bad_config.py (revision 351) @@ -5,14 +5,16 @@ import os -zipdir = os.path.join(os.path.dirname(os.path.abspath(__file__)), - "tests/expand/zip") -xmldir = os.path.join(os.path.dirname(os.path.abspath(__file__)), - "tests/expand/xml") +EXPAND_TEST_PATH = os.path.join("tests", "expand") + +ZIPDIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), + EXPAND_TEST_PATH, "zip") +XMLDIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), + EXPAND_TEST_PATH, "xml") # The next line has a SyntaxError -zipdir_pattern = "[0-9][0-9][0-9][0-9]_[0-9][0-9] -zipfile_pattern = "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]T" \ +ZIPDIR_PATTERN = "[0-9][0-9][0-9][0-9]_[0-9][0-9] +ZIPFILE_PATTERN = "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]T" \ "[0-9][0-9][0-9][0-9][0-9][0-9]-" \ "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]T" \ "[0-9][0-9][0-9][0-9][0-9][0-9].zip" -xmlfile_pattern = "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]T" \ +XMLFILE_PATTERN = "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]T" \ "[0-9][0-9][0-9][0-9][0-9][0-9].xml" Index: spongenet/trunk/spongenet/tests/expand/config.py =================================================================== --- spongenet/trunk/spongenet/tests/expand/config.py (revision 344) +++ spongenet/trunk/spongenet/tests/expand/config.py (revision 351) @@ -5,13 +5,15 @@ import os -zipdir = os.path.join(os.path.dirname(os.path.abspath(__file__)), - "tests/expand/zip") -xmldir = os.path.join(os.path.dirname(os.path.abspath(__file__)), - "tests/expand/xml") -zipdir_pattern = "[0-9][0-9][0-9][0-9]_[0-9][0-9]" -zipfile_pattern = "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]T" \ +EXPAND_TEST_PATH = os.path.join("tests", "expand") + +ZIPDIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), + EXPAND_TEST_PATH, "zip") +XMLDIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), + EXPAND_TEST_PATH, "xml") +ZIPDIR_PATTERN = "[0-9][0-9][0-9][0-9]_[0-9][0-9]" +ZIPFILE_PATTERN = "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]T" \ "[0-9][0-9][0-9][0-9][0-9][0-9]-" \ "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]T" \ "[0-9][0-9][0-9][0-9][0-9][0-9].zip" -xmlfile_pattern = "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]T" \ +XMLFILE_PATTERN = "[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]T" \ "[0-9][0-9][0-9][0-9][0-9][0-9].xml" Index: spongenet/trunk/spongenet/tests/parse/xmlref.py =================================================================== --- (revision ) +++ spongenet/trunk/spongenet/tests/parse/xmlref.py (revision 351) @@ -1,0 +1,27 @@ +#!/usr/local/env python + +"""Test data for the parse module.""" + +import os +import glob +import hashlib + +PARSE_TEST_PATH = os.path.join("tests","parse") + + +def file_md5(path): + """Return MD5 hash of contents at path.""" + + hasher = hashlib.md5() + hasher.update("".join(open(path).readlines())) + return hasher.hexdigest() + +XML_GLOB = os.path.join(os.path.dirname(os.path.abspath(__file__)), + PARSE_TEST_PATH, "xml", "*", "*.xml") +XML_PATHS = glob.glob(XML_GLOB) +XML_DOC_LENS = dict([(os.path.basename(xml_path), + len(open(xml_path).readlines())) + for xml_path in XML_PATHS]) +XML_DOC_MD5S = dict([(os.path.basename(xml_path), + file_md5(xml_path)) + for xml_path in XML_PATHS])