| Index: test/mozilla/testcfg.py
|
| diff --git a/test/mozilla/testcfg.py b/test/mozilla/testcfg.py
|
| index e88164d22cf5bb8898e6664ddaa03e2947cebf76..5aeac4cc67699c8dc73bc0e816fc2e3641d9b6d5 100644
|
| --- a/test/mozilla/testcfg.py
|
| +++ b/test/mozilla/testcfg.py
|
| @@ -26,12 +26,19 @@
|
| # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
|
| -import test
|
| import os
|
| -from os.path import join, exists
|
| +import shutil
|
| +import subprocess
|
| +import tarfile
|
| +
|
| +from testrunner.local import testsuite
|
| +from testrunner.objects import testcase
|
| +
|
|
|
| +MOZILLA_VERSION = "2010-06-29"
|
|
|
| -EXCLUDED = ['CVS']
|
| +
|
| +EXCLUDED = ["CVS"]
|
|
|
|
|
| FRAMEWORK = """
|
| @@ -54,6 +61,117 @@ TEST_DIRS = """
|
| """.split()
|
|
|
|
|
| +class MozillaTestSuite(testsuite.TestSuite):
|
| +
|
| + def __init__(self, name, root):
|
| + super(MozillaTestSuite, self).__init__(name, root)
|
| + self.testroot = os.path.join(root, "data")
|
| +
|
| + def ListTests(self, context):
|
| + tests = []
|
| + for testdir in TEST_DIRS:
|
| + current_root = os.path.join(self.testroot, testdir)
|
| + for dirname, dirs, files in os.walk(current_root):
|
| + for dotted in [x for x in dirs if x.startswith(".")]:
|
| + dirs.remove(dotted)
|
| + for excluded in EXCLUDED:
|
| + if excluded in dirs:
|
| + dirs.remove(excluded)
|
| + dirs.sort()
|
| + files.sort()
|
| + for filename in files:
|
| + if filename.endswith(".js") and not filename in FRAMEWORK:
|
| + testname = os.path.join(dirname[len(self.testroot) + 1:],
|
| + filename[:-3])
|
| + case = testcase.TestCase(self, testname)
|
| + tests.append(case)
|
| + return tests
|
| +
|
| + def GetFlagsForTestCase(self, testcase, context):
|
| + result = []
|
| + result += context.mode_flags
|
| + result += ["--expose-gc"]
|
| + result += [os.path.join(self.root, "mozilla-shell-emulation.js")]
|
| + testfilename = testcase.path + ".js"
|
| + testfilepath = testfilename.split(os.path.sep)
|
| + for i in xrange(len(testfilepath)):
|
| + script = os.path.join(self.testroot,
|
| + reduce(os.path.join, testfilepath[:i], ""),
|
| + "shell.js")
|
| + if os.path.exists(script):
|
| + result.append(script)
|
| + result.append(os.path.join(self.testroot, testfilename))
|
| + return testcase.flags + result
|
| +
|
| + def GetSourceForTest(self, testcase):
|
| + filename = join(self.testroot, testcase.path + ".js")
|
| + with open(filename) as f:
|
| + return f.read()
|
| +
|
| + def IsNegativeTest(self, testcase):
|
| + return testcase.path.endswith("-n")
|
| +
|
| + def IsFailureOutput(self, output, testpath):
|
| + if output.exit_code != 0:
|
| + return True
|
| + return "FAILED!" in output.stdout
|
| +
|
| + def DownloadData(self):
|
| + old_cwd = os.getcwd()
|
| + os.chdir(os.path.abspath(self.root))
|
| +
|
| + # Maybe we're still up to date?
|
| + versionfile = "CHECKED_OUT_VERSION"
|
| + checked_out_version = None
|
| + if os.path.exists(versionfile):
|
| + with open(versionfile) as f:
|
| + checked_out_version = f.read()
|
| + if checked_out_version == MOZILLA_VERSION:
|
| + os.chdir(old_cwd)
|
| + return
|
| +
|
| + # If we have a local archive file with the test data, extract it.
|
| + directory_name = "data"
|
| + if os.path.exists(directory_name):
|
| + os.rename(directory_name, "data.old")
|
| + archive_file = "downloaded_%s.tar.gz" % MOZILLA_VERSION
|
| + if os.path.exists(archive_file):
|
| + with tarfile.open(archive_file, "r:gz") as tar:
|
| + tar.extractall()
|
| + with open(versionfile, "w") as f:
|
| + f.write(MOZILLA_VERSION)
|
| + os.chdir(old_cwd)
|
| + return
|
| +
|
| + # No cached copy. Check out via CVS, and pack as .tar.gz for later use.
|
| + command = ("cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot"
|
| + " co -D %s mozilla/js/tests" % MOZILLA_VERSION)
|
| + code = subprocess.call(command, shell=True)
|
| + if code != 0:
|
| + os.chdir(old_cwd)
|
| + raise Exception("Error checking out Mozilla test suite!")
|
| + os.rename(join("mozilla", "js", "tests"), directory_name)
|
| + shutil.rmtree("mozilla")
|
| + with tarfile.open(archive_file, "w:gz") as tar:
|
| + tar.add("data")
|
| + with open(versionfile, "w") as f:
|
| + f.write(MOZILLA_VERSION)
|
| + os.chdir(old_cwd)
|
| +
|
| +
|
| +def GetSuite(name, root):
|
| + return MozillaTestSuite(name, root)
|
| +
|
| +
|
| +# Deprecated definitions below.
|
| +# TODO(jkummerow): Remove when SCons is no longer supported.
|
| +
|
| +
|
| +from os.path import exists
|
| +from os.path import join
|
| +import test
|
| +
|
| +
|
| class MozillaTestCase(test.TestCase):
|
|
|
| def __init__(self, filename, path, context, root, mode, framework):
|
|
|