1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-10-03 17:50:11 +02:00

run all SDK tools commands using SdkToolsPopen

This commit is contained in:
Hans-Christoph Steiner 2014-12-09 15:15:36 +01:00
parent 9244256461
commit fa1cc48d57
5 changed files with 58 additions and 38 deletions

View File

@ -130,32 +130,6 @@ def read_config(opts, config_file='config.py'):
fill_config_defaults(config) fill_config_defaults(config)
bin_paths = {
'aapt': [
os.path.join(config['sdk_path'], 'build-tools', config['build_tools'], 'aapt'),
],
'zipalign': [
os.path.join(config['sdk_path'], 'tools', 'zipalign'),
os.path.join(config['sdk_path'], 'build-tools', config['build_tools'], 'zipalign'),
],
'android': [
os.path.join(config['sdk_path'], 'tools', 'android'),
],
'adb': [
os.path.join(config['sdk_path'], 'platform-tools', 'adb'),
],
}
for b, paths in bin_paths.items():
config[b] = None
for path in paths:
if os.path.isfile(path):
config[b] = path
break
if config[b] is None:
logging.warn("Could not find %s in any of the following paths:\n%s" % (
b, '\n'.join(paths)))
# There is no standard, so just set up the most common environment # There is no standard, so just set up the most common environment
# variables # variables
env = os.environ env = os.environ
@ -1378,8 +1352,8 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver=
# Generate (or update) the ant build file, build.xml... # Generate (or update) the ant build file, build.xml...
if build['update'] and build['update'] != ['no'] and build['type'] == 'ant': if build['update'] and build['update'] != ['no'] and build['type'] == 'ant':
parms = [config['android'], 'update', 'lib-project'] parms = ['android', 'update', 'lib-project']
lparms = [config['android'], 'update', 'project'] lparms = ['android', 'update', 'project']
if build['target']: if build['target']:
parms += ['-t', build['target']] parms += ['-t', build['target']]
@ -1397,7 +1371,7 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver=
else: else:
logging.debug("Updating subproject %s" % d) logging.debug("Updating subproject %s" % d)
cmd = lparms + ['-p', d] cmd = lparms + ['-p', d]
p = FDroidPopen(cmd, cwd=root_dir) p = SdkToolsPopen(cmd, cwd=root_dir)
# Check to see whether an error was returned without a proper exit # Check to see whether an error was returned without a proper exit
# code (this is the case for the 'no target set or target invalid' # code (this is the case for the 'no target set or target invalid'
# error) # error)

View File

@ -25,14 +25,14 @@ from optparse import OptionParser, OptionError
import logging import logging
import common import common
from common import FDroidPopen, FDroidException from common import SdkToolsPopen, FDroidException
options = None options = None
config = None config = None
def devices(): def devices():
p = FDroidPopen([config['adb'], "devices"]) p = SdkToolsPopen(['adb', "devices"])
if p.returncode != 0: if p.returncode != 0:
raise FDroidException("An error occured when finding devices: %s" % p.output) raise FDroidException("An error occured when finding devices: %s" % p.output)
lines = p.output.splitlines() lines = p.output.splitlines()
@ -103,7 +103,7 @@ def main():
logging.info("Installing %s..." % apk) logging.info("Installing %s..." % apk)
for dev in devs: for dev in devs:
logging.info("Installing %s on %s..." % (apk, dev)) logging.info("Installing %s on %s..." % (apk, dev))
p = FDroidPopen([config['adb'], "-s", dev, "install", apk]) p = SdkToolsPopen(['adb', "-s", dev, "install", apk])
fail = "" fail = ""
for line in p.output.splitlines(): for line in p.output.splitlines():
if line.startswith("Failure"): if line.startswith("Failure"):

View File

@ -28,7 +28,7 @@ import logging
import common import common
import metadata import metadata
from common import FDroidPopen, BuildException from common import FDroidPopen, SdkToolsPopen, BuildException
config = None config = None
options = None options = None
@ -213,8 +213,8 @@ def main():
raise BuildException("Failed to sign application") raise BuildException("Failed to sign application")
# Zipalign it... # Zipalign it...
p = FDroidPopen([config['zipalign'], '-v', '4', apkfile, p = SdkToolsPopen(['zipalign', '-v', '4', apkfile,
os.path.join(output_dir, apkfilename)]) os.path.join(output_dir, apkfilename)])
if p.returncode != 0: if p.returncode != 0:
raise BuildException("Failed to align application") raise BuildException("Failed to align application")
os.remove(apkfile) os.remove(apkfile)

46
tests/install.TestCase Executable file
View File

@ -0,0 +1,46 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
# http://www.drdobbs.com/testing/unit-testing-with-python/240165163
import inspect
import optparse
import os
import sys
import unittest
localmodule = os.path.realpath(os.path.join(
os.path.dirname(inspect.getfile(inspect.currentframe())),
'..'))
print('localmodule: ' + localmodule)
if localmodule not in sys.path:
sys.path.insert(0,localmodule)
import fdroidserver.common
import fdroidserver.install
class InstallTest(unittest.TestCase):
'''fdroidserver/install.py'''
def test_devices(self):
config = dict()
config['sdk_path'] = os.getenv('ANDROID_HOME')
fdroidserver.common.config = config
config['adb'] = fdroidserver.common.find_sdk_tools_cmd('adb')
self.assertTrue(os.path.exists(config['adb']))
self.assertTrue(os.path.isfile(config['adb']))
devices = fdroidserver.install.devices()
self.assertIsInstance(devices, list, 'install.devices() did not return a list!')
for device in devices:
self.assertIsInstance(device, basestring)
if __name__ == "__main__":
parser = optparse.OptionParser()
parser.add_option("-v", "--verbose", action="store_true", default=False,
help="Spew out even more information than normal")
(fdroidserver.install.options, args) = parser.parse_args(['--verbose'])
newSuite = unittest.TestSuite()
newSuite.addTest(unittest.makeSuite(InstallTest))
unittest.main()

View File

@ -97,9 +97,9 @@ echo_header "test python getsig replacement"
cd $WORKSPACE/tests/getsig cd $WORKSPACE/tests/getsig
./make.sh ./make.sh
cd $WORKSPACE/tests for testcase in $WORKSPACE/tests/*.TestCase; do
./common.TestCase $testcase
./update.TestCase done
#------------------------------------------------------------------------------# #------------------------------------------------------------------------------#