Commit 1b51c3d4 authored by Florent Xicluna's avatar Florent Xicluna

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

parent 13ba1a1c
# test for xml.dom.minidom # test for xml.dom.minidom
import os
import sys
import pickle import pickle
from StringIO import StringIO from StringIO import StringIO
from test.test_support import verbose, run_unittest from test.test_support import verbose, run_unittest, findfile
import unittest import unittest
import xml.dom import xml.dom
...@@ -15,12 +13,8 @@ from xml.dom.minidom import parse, Node, Document, parseString ...@@ -15,12 +13,8 @@ from xml.dom.minidom import parse, Node, Document, parseString
from xml.dom.minidom import getDOMImplementation from xml.dom.minidom import getDOMImplementation
if __name__ == "__main__": tstfile = findfile("test.xml", subdir="xmltestdata")
base = sys.argv[0]
else:
base = __file__
tstfile = os.path.join(os.path.dirname(base), "xmltestdata", "test.xml")
del base
# The tests of DocumentType importing use these helpers to construct # The tests of DocumentType importing use these helpers to construct
# the documents to work with, since not all DOM builders actually # the documents to work with, since not all DOM builders actually
......
...@@ -15,10 +15,9 @@ from xml.sax.xmlreader import InputSource, AttributesImpl, AttributesNSImpl ...@@ -15,10 +15,9 @@ from xml.sax.xmlreader import InputSource, AttributesImpl, AttributesNSImpl
from cStringIO import StringIO from cStringIO import StringIO
from test.test_support import findfile, run_unittest from test.test_support import findfile, run_unittest
import unittest import unittest
import os
TEST_XMLFILE = findfile(os.path.join("xmltestdata", "test.xml")) TEST_XMLFILE = findfile("test.xml", subdir="xmltestdata")
TEST_XMLFILE_OUT = findfile(os.path.join("xmltestdata", "test.xml.out")) TEST_XMLFILE_OUT = findfile("test.xml.out", subdir="xmltestdata")
ns_uri = "http://www.python.org/xml-ns/saxtest/" ns_uri = "http://www.python.org/xml-ns/saxtest/"
......
...@@ -424,12 +424,14 @@ def temp_cwd(name='tempcwd', quiet=False): ...@@ -424,12 +424,14 @@ def temp_cwd(name='tempcwd', quiet=False):
rmtree(name) 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 """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 found the argument passed to the function is returned (this does not
necessarily signal failure; could still be the legitimate path).""" necessarily signal failure; could still be the legitimate path)."""
if os.path.isabs(file): if os.path.isabs(file):
return file return file
if subdir is not None:
file = os.path.join(subdir, file)
path = sys.path path = sys.path
path = [os.path.dirname(here)] + path path = [os.path.dirname(here)] + path
for dn in path: for dn in path:
......
...@@ -14,11 +14,12 @@ ...@@ -14,11 +14,12 @@
import sys import sys
from test import test_support from test import test_support
from test.test_support import findfile
from xml.etree import ElementTree as ET from xml.etree import ElementTree as ET
SIMPLE_XMLFILE = "xmltestdata/simple.xml" SIMPLE_XMLFILE = findfile("simple.xml", subdir="xmltestdata")
SIMPLE_NS_XMLFILE = "xmltestdata/simple-ns.xml" SIMPLE_NS_XMLFILE = findfile("simple-ns.xml", subdir="xmltestdata")
SAMPLE_XML = """\ SAMPLE_XML = """\
<body> <body>
...@@ -1791,30 +1792,19 @@ def check_issue6565(): ...@@ -1791,30 +1792,19 @@ def check_issue6565():
class CleanContext(object): 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): def __enter__(self):
import os
from xml.etree import ElementTree from xml.etree import ElementTree
self._nsmap = ElementTree._namespace_map self._nsmap = ElementTree._namespace_map
self._path_cache = ElementTree.ElementPath._cache self._path_cache = ElementTree.ElementPath._cache
self._previous_cwd = os.getcwd()
# Copy the default namespace mapping # Copy the default namespace mapping
ElementTree._namespace_map = self._nsmap.copy() ElementTree._namespace_map = self._nsmap.copy()
# Copy the path cache (should be empty) # Copy the path cache (should be empty)
ElementTree.ElementPath._cache = self._path_cache.copy() ElementTree.ElementPath._cache = self._path_cache.copy()
# Change directory to Lib/test/
os.chdir(os.path.dirname(__file__))
def __exit__(self, *args): def __exit__(self, *args):
import os
from xml.etree import ElementTree from xml.etree import ElementTree
# Restore working directory
os.chdir(self._previous_cwd)
# Restore mapping and path cache # Restore mapping and path cache
ElementTree._namespace_map = self._nsmap ElementTree._namespace_map = self._nsmap
ElementTree.ElementPath._cache = self._path_cache ElementTree.ElementPath._cache = self._path_cache
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment