Bug 747268 - devicemanagerADB: improve listFiles error handling and check for root. r=jmaher, a=test-only

This commit is contained in:
Geoff Brown 2012-04-20 17:15:59 -04:00
Родитель 8393c9b5f8
Коммит 27845ea082
1 изменённых файлов: 11 добавлений и 5 удалений

Просмотреть файл

@ -53,6 +53,8 @@ class DeviceManagerADB(DeviceManager):
pass pass
# Can we run things as root? (currently not required) # Can we run things as root? (currently not required)
useRunAsTmp = self.useRunAs
self.useRunAs = False
try: try:
self.verifyRoot() self.verifyRoot()
except DMError, e: except DMError, e:
@ -63,10 +65,11 @@ class DeviceManagerADB(DeviceManager):
# to check again ourselves that we have root now. # to check again ourselves that we have root now.
self.verifyRoot() self.verifyRoot()
except DMError: except DMError:
if self.useRunAs: if useRunAsTmp:
print "restarting as root failed, but run-as available" print "restarting as root failed, but run-as available"
else: else:
print "restarting as root failed" print "restarting as root failed"
self.useRunAs = useRunAsTmp
# can we use zip to speed up some file operations? (currently not # can we use zip to speed up some file operations? (currently not
# required) # required)
@ -314,6 +317,10 @@ class DeviceManagerADB(DeviceManager):
return [] return []
if (data[0].find("Not a directory") != -1): if (data[0].find("Not a directory") != -1):
return [] return []
if (data[0].find("Permission denied") != -1):
return []
if (data[0].find("opendir failed") != -1):
return []
return data return data
# external function # external function
@ -777,10 +784,9 @@ class DeviceManagerADB(DeviceManager):
def verifyRoot(self): def verifyRoot(self):
# a test to see if we have root privs # a test to see if we have root privs
files = self.listFiles("/data/data") files = self.listFiles("/data/data")
if (len(files) == 1): if (len(files) == 0):
if (files[0].find("Permission denied") != -1): print "NOT running as root"
print "NOT running as root" raise DMError("not running as root")
raise DMError("not running as root")
self.haveRoot = True self.haveRoot = True