From 08e239bf29e89266bab7c91ba55927726ab99b4a Mon Sep 17 00:00:00 2001 From: Andrew Halberstadt Date: Fri, 30 Nov 2012 11:25:40 -0500 Subject: [PATCH] Bug 816630 - B2G xpcshell tests use wrong binary directory, r=jgriffin, DONTBUILD a=NPOTB,test-only --- testing/xpcshell/remotexpcshelltests.py | 66 +++++++++++++++++-------- testing/xpcshell/runtestsb2g.py | 28 +++++------ 2 files changed, 56 insertions(+), 38 deletions(-) diff --git a/testing/xpcshell/remotexpcshelltests.py b/testing/xpcshell/remotexpcshelltests.py index 3c2a62a228b9..6849f184bd74 100644 --- a/testing/xpcshell/remotexpcshelltests.py +++ b/testing/xpcshell/remotexpcshelltests.py @@ -19,8 +19,8 @@ class XPCShellRemote(xpcshell.XPCShellTests, object): def __init__(self, devmgr, options, args): xpcshell.XPCShellTests.__init__(self) - self.localLib = None - self.localBin = None + self.localLib = options.localLib + self.localBin = options.localBin self.options = options self.device = devmgr self.pathMapping = [] @@ -98,14 +98,6 @@ class XPCShellRemote(xpcshell.XPCShellTests, object): remoteFile = self.remoteJoin(self.remoteScriptsDir, "head.js") self.device.pushFile(local, remoteFile) - if not self.localBin: - self.localBin = os.path.join(self.options.objdir, "dist/bin") - if not os.path.exists(self.localBin): - self.localBin = os.path.join(self.options.objdir, "bin") - if not os.path.exists(self.localBin): - print >>sys.stderr, "Error: could not find bin in objdir" - sys.exit(1) - local = os.path.join(self.localBin, "xpcshell") remoteFile = self.remoteJoin(self.remoteBinDir, "xpcshell") self.device.pushFile(local, remoteFile) @@ -129,17 +121,6 @@ class XPCShellRemote(xpcshell.XPCShellTests, object): self.pushLibs() def pushLibs(self): - if not self.localLib: - if self.options.localAPK: - self.localLib = os.path.join(self.options.objdir, "dist/fennec") - if not os.path.exists(self.localLib): - self.localLib = os.path.join(self.options.objdir, "fennec/lib") - if not os.path.exists(self.localLib): - print >>sys.stderr, "Error: could not find libs in objdir" - sys.exit(1) - else: - self.localLib = os.path.join(self.options.objdir, 'dist/bin') - for file in os.listdir(self.localLib): if (file.endswith(".so")): print >> sys.stderr, "Pushing %s.." % file @@ -380,8 +361,50 @@ class RemoteXPCShellOptions(xpcshell.XPCShellOptions): help = "do not copy any files to device (to be used only if device is already setup)") defaults["setup"] = True + self.add_option("--local-lib-dir", action="store", + type = "string", dest = "localLib", + help = "local path to library directory") + defaults["localLib"] = None + + self.add_option("--local-bin-dir", action="store", + type = "string", dest = "localBin", + help = "local path to bin directory") + defaults["localBin"] = None + self.set_defaults(**defaults) + def verifyRemoteOptions(self, options): + if options.localLib is None: + if options.localAPK and options.objdir: + for path in ['dist/fennec', 'fennec/lib']: + options.localLib = os.path.join(options.objdir, path) + if os.path.isdir(options.localLib): + break + else: + self.error("Couldn't find local library dir, specify --local-lib-dir") + elif options.objdir: + options.localLib = os.path.join(options.objdir, 'dist/bin') + elif os.path.isfile(os.path.join(here, '..', 'bin', 'xpcshell')): + # assume tests are being run from a tests.zip + options.localLib = os.path.abspath(os.path.join(here, '..', 'bin')) + else: + self.error("Couldn't find local library dir, specify --local-lib-dir") + + if options.localBin is None: + if options.objdir: + for path in ['dist/bin', 'bin']: + options.localBin = os.path.join(options.objdir, path) + if os.path.isdir(options.localBin): + break + else: + self.error("Couldn't find local binary dir, specify --local-bin-dir") + elif os.path.isfile(os.path.join(here, '..', 'bin', 'xpcshell')): + # assume tests are being run from a tests.zip + options.localBin = os.path.abspath(os.path.join(here, '..', 'bin')) + else: + self.error("Couldn't find local binary dir, specify --local-bin-dir") + return options + class PathMapping: def __init__(self, localDir, remoteDir): @@ -392,6 +415,7 @@ def main(): parser = RemoteXPCShellOptions() options, args = parser.parse_args() + options = parser.verifyRemoteOptions(options) if len(args) < 1 and options.manifest is None: print >>sys.stderr, """Usage: %s diff --git a/testing/xpcshell/runtestsb2g.py b/testing/xpcshell/runtestsb2g.py index 006f807d4331..713e3108e88d 100644 --- a/testing/xpcshell/runtestsb2g.py +++ b/testing/xpcshell/runtestsb2g.py @@ -18,15 +18,10 @@ DEVICE_TEST_ROOT = '/data/local/tests' from marionette import Marionette - class B2GXPCShellRemote(XPCShellRemote): # Overridden def setupUtilities(self): - if self.options.xrePath: - self.localLib = self.options.xrePath - self.localBin = self.options.xrePath - if self.options.clean: # Ensure a fresh directory structure for our tests self.clean() @@ -147,22 +142,21 @@ class B2GOptions(RemoteXPCShellOptions): self.set_defaults(**defaults) + def verifyRemoteOptions(self, options): + if options.b2g_path is None: + self.error("Need to specify a --b2gpath") + + if options.geckoPath and not options.emulator: + self.error("You must specify --emulator if you specify --gecko-path") + + if options.logcat_dir and not options.emulator: + self.error("You must specify --emulator if you specify --logcat-dir") + return RemoteXPCShellOptions.verifyRemoteOptions(self, options) def main(): parser = B2GOptions() options, args = parser.parse_args() - - if options.b2g_path is None: - parser.error("Need to specify a --b2gpath") - - if options.xrePath is None: - parser.error("Need to specify a --xre-path") - - if options.geckoPath and not options.emulator: - self.error("You must specify --emulator if you specify --gecko-path") - - if options.logcat_dir and not options.emulator: - self.error("You must specify --emulator if you specify --logcat-dir") + options = parser.verifyRemoteOptions(options) # Create the Marionette instance kwargs = {}