From 1b51c3d4deb4e99fe8440ce9e6f82769e2a1b9be Mon Sep 17 00:00:00 2001 From: Florent Xicluna Date: Sat, 13 Mar 2010 12:41:48 +0000 Subject: [PATCH] Do not chdir when running test_xml_etree, and enhance the findfile helper. --- Lib/test/test_minidom.py | 12 +++--------- Lib/test/test_sax.py | 5 ++--- Lib/test/test_support.py | 4 +++- Lib/test/test_xml_etree.py | 18 ++++-------------- 4 files changed, 12 insertions(+), 27 deletions(-) diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py index a8c0b10ac87..fad7f36f76e 100644 --- a/Lib/test/test_minidom.py +++ b/Lib/test/test_minidom.py @@ -1,10 +1,8 @@ # test for xml.dom.minidom -import os -import sys import pickle from StringIO import StringIO -from test.test_support import verbose, run_unittest +from test.test_support import verbose, run_unittest, findfile import unittest import xml.dom @@ -15,12 +13,8 @@ from xml.dom.minidom import parse, Node, Document, parseString from xml.dom.minidom import getDOMImplementation -if __name__ == "__main__": - base = sys.argv[0] -else: - base = __file__ -tstfile = os.path.join(os.path.dirname(base), "xmltestdata", "test.xml") -del base +tstfile = findfile("test.xml", subdir="xmltestdata") + # The tests of DocumentType importing use these helpers to construct # the documents to work with, since not all DOM builders actually diff --git a/Lib/test/test_sax.py b/Lib/test/test_sax.py index 22048e6f7a0..df7daf1955b 100644 --- a/Lib/test/test_sax.py +++ b/Lib/test/test_sax.py @@ -15,10 +15,9 @@ from xml.sax.xmlreader import InputSource, AttributesImpl, AttributesNSImpl from cStringIO import StringIO from test.test_support import findfile, run_unittest import unittest -import os -TEST_XMLFILE = findfile(os.path.join("xmltestdata", "test.xml")) -TEST_XMLFILE_OUT = findfile(os.path.join("xmltestdata", "test.xml.out")) +TEST_XMLFILE = findfile("test.xml", subdir="xmltestdata") +TEST_XMLFILE_OUT = findfile("test.xml.out", subdir="xmltestdata") ns_uri = "http://www.python.org/xml-ns/saxtest/" diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py index c8aed4eebd0..a8f9fbf78f2 100644 --- a/Lib/test/test_support.py +++ b/Lib/test/test_support.py @@ -424,12 +424,14 @@ def temp_cwd(name='tempcwd', quiet=False): rmtree(name) -def findfile(file, here=__file__): +def findfile(file, here=__file__, subdir=None): """Try to find a file on sys.path and the working directory. If it is not found the argument passed to the function is returned (this does not necessarily signal failure; could still be the legitimate path).""" if os.path.isabs(file): return file + if subdir is not None: + file = os.path.join(subdir, file) path = sys.path path = [os.path.dirname(here)] + path for dn in path: diff --git a/Lib/test/test_xml_etree.py b/Lib/test/test_xml_etree.py index b99e42a5823..cdb9fdfbef0 100644 --- a/Lib/test/test_xml_etree.py +++ b/Lib/test/test_xml_etree.py @@ -14,11 +14,12 @@ import sys from test import test_support +from test.test_support import findfile from xml.etree import ElementTree as ET -SIMPLE_XMLFILE = "xmltestdata/simple.xml" -SIMPLE_NS_XMLFILE = "xmltestdata/simple-ns.xml" +SIMPLE_XMLFILE = findfile("simple.xml", subdir="xmltestdata") +SIMPLE_NS_XMLFILE = findfile("simple-ns.xml", subdir="xmltestdata") SAMPLE_XML = """\ @@ -1791,30 +1792,19 @@ def check_issue6565(): class CleanContext(object): - """Provide default namespace mapping, path cache and working directory. + """Provide default namespace mapping and path cache.""" - Save and restore the default namespace mapping and the path cache. - Change directory to the "Lib/test/" directory: some tests open - xml files in the "samples/" directory relative to the test module. - """ def __enter__(self): - import os from xml.etree import ElementTree self._nsmap = ElementTree._namespace_map self._path_cache = ElementTree.ElementPath._cache - self._previous_cwd = os.getcwd() # Copy the default namespace mapping ElementTree._namespace_map = self._nsmap.copy() # Copy the path cache (should be empty) ElementTree.ElementPath._cache = self._path_cache.copy() - # Change directory to Lib/test/ - os.chdir(os.path.dirname(__file__)) def __exit__(self, *args): - import os from xml.etree import ElementTree - # Restore working directory - os.chdir(self._previous_cwd) # Restore mapping and path cache ElementTree._namespace_map = self._nsmap ElementTree.ElementPath._cache = self._path_cache