Do not chdir when running test_xml_etree, and enhance the findfile helper.

This commit is contained in:
Florent Xicluna 2010-03-13 12:41:48 +00:00
parent 13ba1a1c65
commit 1b51c3d4de
4 changed files with 12 additions and 27 deletions

View File

@ -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

View File

@ -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/"

View File

@ -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:

View File

@ -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 = """\
<body>
@ -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