mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-11-04 22:40:29 +03:00
find cmds from SDK build-tools in a more flexible way, on the fly
This is a more flexible approach than testing for the complete SDK and build-tools up front. This will only test for the commands that are actually being run, so that if you only have `aapt` installed, you can do `fdroid update` without errors, but other commands will still give appropriate errors. This also makes the build_tools item in config.py optional, it is only needed if you want to force a specific version of the build-tools.
This commit is contained in:
parent
298a88a498
commit
9244256461
6 changed files with 132 additions and 46 deletions
|
|
@ -21,9 +21,50 @@ import fdroidserver.common
|
|||
class CommonTest(unittest.TestCase):
|
||||
'''fdroidserver/common.py'''
|
||||
|
||||
def _set_build_tools(self):
|
||||
build_tools = os.path.join(fdroidserver.common.config['sdk_path'], 'build-tools')
|
||||
if os.path.exists(build_tools):
|
||||
fdroidserver.common.config['build_tools'] = ''
|
||||
for f in sorted(os.listdir(build_tools), reverse=True):
|
||||
versioned = os.path.join(build_tools, f)
|
||||
if os.path.isdir(versioned) \
|
||||
and os.path.isfile(os.path.join(versioned, 'aapt')):
|
||||
fdroidserver.common.config['build_tools'] = versioned
|
||||
break
|
||||
return True
|
||||
else:
|
||||
print 'no build-tools found: ' + build_tools
|
||||
return False
|
||||
|
||||
def _find_all(self):
|
||||
for cmd in ('aapt', 'adb', 'android', 'zipalign'):
|
||||
path = fdroidserver.common.find_sdk_tools_cmd(cmd)
|
||||
if path is not None:
|
||||
self.assertTrue(os.path.exists(path))
|
||||
self.assertTrue(os.path.isfile(path))
|
||||
|
||||
def test_find_sdk_tools_cmd(self):
|
||||
fdroidserver.common.config = dict()
|
||||
# TODO add this once everything works without sdk_path set in config
|
||||
#self._find_all()
|
||||
sdk_path = os.getenv('ANDROID_HOME')
|
||||
if os.path.exists(sdk_path):
|
||||
fdroidserver.common.config['sdk_path'] = sdk_path
|
||||
if os.path.exists('/usr/bin/aapt'):
|
||||
# this test only works when /usr/bin/aapt is installed
|
||||
self._find_all()
|
||||
build_tools = os.path.join(sdk_path, 'build-tools')
|
||||
if self._set_build_tools():
|
||||
self._find_all()
|
||||
else:
|
||||
print 'no build-tools found: ' + build_tools
|
||||
|
||||
def testIsApkDebuggable(self):
|
||||
config = dict()
|
||||
config['aapt'] = '/usr/bin/aapt'
|
||||
config['sdk_path'] = os.getenv('ANDROID_HOME')
|
||||
fdroidserver.common.config = config
|
||||
self._set_build_tools();
|
||||
config['aapt'] = fdroidserver.common.find_sdk_tools_cmd('aapt')
|
||||
# these are set debuggable
|
||||
testfiles = []
|
||||
testfiles.append(os.path.join(os.path.dirname(__file__), 'urzip.apk'))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue