mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-06 17:16:12 +00:00
4dc2f2248c
--HG-- rename : dom/tests/mochitest/w3c/Makefile.in => dom/imported-tests/Makefile.in rename : dom/tests/mochitest/w3c/README => dom/imported-tests/README rename : dom/tests/mochitest/w3c/WebIDLParser.js => dom/imported-tests/WebIDLParser.js rename : dom/tests/mochitest/w3c/failures.txt => dom/imported-tests/failures.txt rename : dom/tests/mochitest/w3c/html.json => dom/imported-tests/html.json rename : dom/tests/mochitest/w3c/html.mk => dom/imported-tests/html.mk rename : dom/tests/mochitest/w3c/html.txt => dom/imported-tests/html.txt rename : dom/tests/mochitest/w3c/html/tests/submission/Mozilla/Makefile.in => dom/imported-tests/html/tests/submission/Mozilla/Makefile.in rename : dom/tests/mochitest/w3c/html/tests/submission/Mozilla/nested-document-write-external.js => dom/imported-tests/html/tests/submission/Mozilla/nested-document-write-external.js rename : dom/tests/mochitest/w3c/html/tests/submission/Mozilla/test_body-onload.html => dom/imported-tests/html/tests/submission/Mozilla/test_body-onload.html rename : dom/tests/mochitest/w3c/html/tests/submission/Mozilla/test_pageload-image.html => dom/imported-tests/html/tests/submission/Mozilla/test_pageload-image.html rename : dom/tests/mochitest/w3c/html/tests/submission/Mozilla/test_pageload-video.html => dom/imported-tests/html/tests/submission/Mozilla/test_pageload-video.html rename : dom/tests/mochitest/w3c/html/tests/submission/Mozilla/test_script-for-onload.html => dom/imported-tests/html/tests/submission/Mozilla/test_script-for-onload.html rename : dom/tests/mochitest/w3c/html/tests/submission/Mozilla/test_window-onerror-parse-error.html => dom/imported-tests/html/tests/submission/Mozilla/test_window-onerror-parse-error.html rename : dom/tests/mochitest/w3c/html/tests/submission/Mozilla/test_window-onerror-runtime-error-throw.html => dom/imported-tests/html/tests/submission/Mozilla/test_window-onerror-runtime-error-throw.html rename : dom/tests/mochitest/w3c/html/tests/submission/Mozilla/test_window-onerror-runtime-error.html => dom/imported-tests/html/tests/submission/Mozilla/test_window-onerror-runtime-error.html rename : dom/tests/mochitest/w3c/idlharness.js => dom/imported-tests/idlharness.js rename : dom/tests/mochitest/w3c/importTestsuite.py => dom/imported-tests/importTestsuite.py rename : dom/tests/mochitest/w3c/parseManifest.py => dom/imported-tests/parseManifest.py rename : dom/tests/mochitest/w3c/testharness.css => dom/imported-tests/testharness.css rename : dom/tests/mochitest/w3c/testharness.js => dom/imported-tests/testharness.js rename : dom/tests/mochitest/w3c/testharnessreport.js.in => dom/imported-tests/testharnessreport.js.in rename : dom/tests/mochitest/w3c/updateTestharness.py => dom/imported-tests/updateTestharness.py rename : dom/tests/mochitest/w3c/webapps.json => dom/imported-tests/webapps.json rename : dom/tests/mochitest/w3c/webapps.mk => dom/imported-tests/webapps.mk rename : dom/tests/mochitest/w3c/webapps.txt => dom/imported-tests/webapps.txt rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/Makefile.in => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/Makefile.in rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-01.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-01.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-02.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-02.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-03.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-03.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-04.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-04.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-05.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-05.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-06.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-06.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-07.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-07.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-08.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-08.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-09.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-09.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-10.xml => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-10.xml rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-11.xml => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-11.xml rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-12.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-12.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-13.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-13.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-14.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-14.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-15.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-15.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-16.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-16.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-17.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-17.htm rename : dom/tests/mochitest/w3c/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-18.htm => dom/imported-tests/webapps/DOMCore/tests/submissions/Opera/test_getElementsByClassName-18.htm rename : dom/tests/mochitest/w3c/writeReporter.py => dom/imported-tests/writeReporter.py
178 lines
5.3 KiB
Python
Executable File
178 lines
5.3 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
|
# You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
"""
|
|
Imports a test suite from a remote repository. Takes one argument, a file in
|
|
the format described in README.
|
|
Note: removes both source and destination directory before starting. Do not
|
|
use with outstanding changes in either directory.
|
|
"""
|
|
|
|
import os
|
|
import shutil
|
|
import string
|
|
import subprocess
|
|
import sys
|
|
|
|
import parseManifest
|
|
|
|
def parseManifestFile(dest, dir):
|
|
subdirs, mochitests, _, __, supportfiles = parseManifest.parseManifestFile("hg-%s/%s/MANIFEST" % (dest, dir))
|
|
return subdirs, mochitests, supportfiles
|
|
|
|
def getData(confFile):
|
|
"""This function parses a file of the form
|
|
URL of remote repository|Name of the destination directory
|
|
First directory of tests
|
|
...
|
|
Last directory of tests"""
|
|
repo = ""
|
|
dest = ""
|
|
directories = []
|
|
try:
|
|
fp = open(confFile, "rb")
|
|
first = True
|
|
for line in fp:
|
|
if first:
|
|
idx = line.index("|")
|
|
repo = line[:idx].strip()
|
|
dest = line[idx + 1:].strip()
|
|
first = False
|
|
else:
|
|
directories.append(line.strip())
|
|
finally:
|
|
fp.close()
|
|
return repo, dest, directories
|
|
|
|
def copy(thissrcdir, dest, directories):
|
|
"""Copy mochitests and support files from the external HG directory to their
|
|
place in mozilla-central.
|
|
"""
|
|
print "Copying %s..." % (directories, )
|
|
for d in directories:
|
|
dirtocreate = dest
|
|
|
|
subdirs, mochitests, supportfiles = parseManifestFile(dest, d)
|
|
sourcedir = "hg-%s/%s" % (dest, d)
|
|
destdir = "%s/%s" % (dest, d)
|
|
os.makedirs(destdir)
|
|
|
|
for mochitest in mochitests:
|
|
shutil.copy("%s/%s" % (sourcedir, mochitest), "%s/test_%s" % (destdir, mochitest))
|
|
for support in supportfiles:
|
|
shutil.copy("%s/%s" % (sourcedir, support), "%s/%s" % (destdir, support))
|
|
|
|
if len(subdirs):
|
|
importDirs(thissrcdir, dest, ["%s/%s" % (d, subdir) for subdir in subdirs])
|
|
|
|
def printMakefile(dest, directories):
|
|
"""Create a .mk file to be included into the main Makefile.in, which lists the
|
|
directories with tests.
|
|
"""
|
|
print "Creating .mk..."
|
|
path = dest + ".mk"
|
|
fp = open(path, "wb")
|
|
fp.write("DIRS += \\\n")
|
|
fp.writelines([" %s/%s \\\n" % (dest, d) for d in directories])
|
|
fp.write(" $(NULL)\n")
|
|
fp.close()
|
|
subprocess.check_call(["hg", "add", path])
|
|
|
|
makefileTemplate = """# THIS FILE IS AUTOGENERATED BY importTestsuite.py - DO NOT EDIT
|
|
|
|
DEPTH = ${depth}
|
|
|
|
topsrcdir = @top_srcdir@
|
|
srcdir = @srcdir@
|
|
VPATH = @srcdir@
|
|
relativesrcdir = ${relativesrcdir}
|
|
|
|
DIRS = \\
|
|
${dirs}
|
|
|
|
include $$(DEPTH)/config/autoconf.mk
|
|
include $$(topsrcdir)/config/rules.mk
|
|
"""
|
|
testsTemplate = """
|
|
_TESTS = \\
|
|
${tests}
|
|
|
|
_TESTS += \\
|
|
${support}
|
|
|
|
libs:: $$(_TESTS)
|
|
\t$$(INSTALL) $$(foreach f,$$^,"$$f") $$(DEPTH)/_tests/testing/mochitest/tests/$$(relativesrcdir)
|
|
"""
|
|
|
|
def makefileString(entries):
|
|
if not len(entries):
|
|
return " $(NULL)"
|
|
return "\n".join([" %s \\" % (entry, ) for entry in entries]) + "\n $(NULL)"
|
|
|
|
def printMakefiles(thissrcdir, dest, directories):
|
|
"""Create Makefile.in files for each directory that contains tests we import.
|
|
"""
|
|
print "Creating Makefile.ins..."
|
|
for d in directories:
|
|
path = "%s/%s" % (dest, d)
|
|
abspath = "%s/%s" % (thissrcdir, path)
|
|
print "Creating Makefile.in in %s..." % (path, )
|
|
|
|
subdirs, mochitests, supportfiles = parseManifestFile(dest, d)
|
|
|
|
fp = open(path + "/Makefile.in", "wb")
|
|
result = string.Template(makefileTemplate).substitute({
|
|
"depth": "..%s" % ("/.." * abspath.count("/"), ),
|
|
"relativesrcdir": "%s/%s" % (thissrcdir, path),
|
|
"dirs": makefileString(subdirs)
|
|
})
|
|
|
|
if len(mochitests) + len(supportfiles):
|
|
result += string.Template(testsTemplate).substitute({
|
|
"tests": makefileString(["test_%s" % (mochitest, ) for mochitest in mochitests]),
|
|
"support": makefileString(supportfiles)
|
|
})
|
|
|
|
fp.write(result)
|
|
fp.close()
|
|
|
|
def hgadd(dest, directories):
|
|
"""Inform hg of the files in |directories|."""
|
|
print "hg addremoving..."
|
|
for d in directories:
|
|
subprocess.check_call(["hg", "addremove", "%s/%s" % (dest, d)])
|
|
|
|
def importDirs(thissrcdir, dest, directories):
|
|
copy(thissrcdir, dest, directories)
|
|
printMakefiles(thissrcdir, dest, directories)
|
|
|
|
def importRepo(confFile, thissrcdir):
|
|
try:
|
|
repo, dest, directories = getData(confFile)
|
|
hgdest = "hg-%s" % (dest, )
|
|
print "Going to clone %s to %s..." % (repo, hgdest)
|
|
print "Removing %s..." % dest
|
|
subprocess.check_call(["rm", "--recursive", "--force", dest])
|
|
print "Removing %s..." % hgdest
|
|
subprocess.check_call(["rm", "--recursive", "--force", hgdest])
|
|
print "Cloning %s to %s..." % (repo, hgdest)
|
|
subprocess.check_call(["hg", "clone", repo, hgdest])
|
|
print "Going to import %s..." % (directories, )
|
|
importDirs(thissrcdir, dest, directories)
|
|
printMakefile(dest, directories)
|
|
hgadd(dest, directories)
|
|
print "Removing %s again..." % hgdest
|
|
subprocess.check_call(["rm", "--recursive", "--force", hgdest])
|
|
except subprocess.CalledProcessError, e:
|
|
print e.returncode
|
|
finally:
|
|
print "Done"
|
|
|
|
if __name__ == "__main__":
|
|
if len(sys.argv) != 2:
|
|
print "Need one argument."
|
|
else:
|
|
importRepo(sys.argv[1], "dom/imported-tests")
|