author | Geoff Brown <gbrown@mozilla.com> |
Tue, 18 Dec 2012 22:18:03 -0700 | |
changeset 116496 | f9e5c189ae6bb96424ee9a243c5238c747951810 |
parent 116495 | f6d35a8b7dad7664d717e53e8a969e149ae4ec28 |
child 116497 | ffe29f6052f294ef467b9b50ed1140d87acc77f4 |
push id | 19960 |
push user | gbrown@mozilla.com |
push date | Wed, 19 Dec 2012 05:18:21 +0000 |
treeherder | mozilla-inbound@f9e5c189ae6b [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | jmaher |
bugs | 817235 |
milestone | 20.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/testing/xpcshell/remotexpcshelltests.py +++ b/testing/xpcshell/remotexpcshelltests.py @@ -20,22 +20,26 @@ class XPCShellRemote(xpcshell.XPCShellTe def __init__(self, devmgr, options, args): xpcshell.XPCShellTests.__init__(self) self.localLib = options.localLib self.localBin = options.localBin self.options = options self.device = devmgr self.pathMapping = [] self.remoteTestRoot = self.device.getTestRoot("xpcshell") - # Terse directory names are used here ("b" for a binaries directory) + # remoteBinDir contains xpcshell and its wrapper script, both of which must + # be executable. Since +x permissions cannot usually be set on /mnt/sdcard, + # and the test root may be on /mnt/sdcard, remoteBinDir is set to be on + # /data/local, always. + self.remoteBinDir = "/data/local/xpcb" + # Terse directory names are used here ("c" for the components directory) # to minimize the length of the command line used to execute # xpcshell on the remote device. adb has a limit to the number # of characters used in a shell command, and the xpcshell command # line can be quite complex. - self.remoteBinDir = self.remoteJoin(self.remoteTestRoot, "b") self.remoteTmpDir = self.remoteJoin(self.remoteTestRoot, "tmp") self.remoteScriptsDir = self.remoteTestRoot self.remoteComponentsDir = self.remoteJoin(self.remoteTestRoot, "c") self.remoteModulesDir = self.remoteJoin(self.remoteTestRoot, "m") self.profileDir = self.remoteJoin(self.remoteTestRoot, "p") self.remoteDebugger = options.debugger self.remoteDebuggerArgs = options.debuggerArgs self.testingModulesDir = options.testingModulesDir @@ -78,16 +82,20 @@ class XPCShellRemote(xpcshell.XPCShellTe def remoteForLocal(self, local): for mapping in self.pathMapping: if (os.path.abspath(mapping.local) == os.path.abspath(local)): return mapping.remote return local def setupUtilities(self): + if (not self.device.dirExists(self.remoteBinDir)): + # device.mkDir may fail here where shellCheckOutput may succeed -- see bug 817235 + self.device.shellCheckOutput(["mkdir", self.remoteBinDir]); + remotePrefDir = self.remoteJoin(self.remoteBinDir, "defaults/pref") if (self.device.dirExists(self.remoteTmpDir)): self.device.removeDir(self.remoteTmpDir) self.device.mkDir(self.remoteTmpDir) if (not self.device.dirExists(remotePrefDir)): self.device.mkDirs(self.remoteJoin(remotePrefDir, "extra")) if (not self.device.dirExists(self.remoteScriptsDir)): self.device.mkDir(self.remoteScriptsDir)