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
# variables
env = os.environ
# Generate (or update) the ant build file, build.xml...
if build['update'] and build['update'] != ['no'] and build['type'] == 'ant':
- parms = [config['android'], 'update', 'lib-project']
- lparms = [config['android'], 'update', 'project']
+ parms = ['android', 'update', 'lib-project']
+ lparms = ['android', 'update', 'project']
if build['target']:
parms += ['-t', build['target']]
else:
logging.debug("Updating subproject %s" % 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
# code (this is the case for the 'no target set or target invalid'
# error)
import logging
import common
-from common import FDroidPopen, FDroidException
+from common import SdkToolsPopen, FDroidException
options = None
config = None
def devices():
- p = FDroidPopen([config['adb'], "devices"])
+ p = SdkToolsPopen(['adb', "devices"])
if p.returncode != 0:
raise FDroidException("An error occured when finding devices: %s" % p.output)
lines = p.output.splitlines()
logging.info("Installing %s..." % apk)
for dev in devs:
logging.info("Installing %s on %s..." % (apk, dev))
- p = FDroidPopen([config['adb'], "-s", dev, "install", apk])
+ p = SdkToolsPopen(['adb', "-s", dev, "install", apk])
fail = ""
for line in p.output.splitlines():
if line.startswith("Failure"):
import common
import metadata
-from common import FDroidPopen, BuildException
+from common import FDroidPopen, SdkToolsPopen, BuildException
config = None
options = None
raise BuildException("Failed to sign application")
# Zipalign it...
- p = FDroidPopen([config['zipalign'], '-v', '4', apkfile,
- os.path.join(output_dir, apkfilename)])
+ p = SdkToolsPopen(['zipalign', '-v', '4', apkfile,
+ os.path.join(output_dir, apkfilename)])
if p.returncode != 0:
raise BuildException("Failed to align application")
os.remove(apkfile)
--- /dev/null
+#!/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()
cd $WORKSPACE/tests/getsig
./make.sh
-cd $WORKSPACE/tests
-./common.TestCase
-./update.TestCase
+for testcase in $WORKSPACE/tests/*.TestCase; do
+ $testcase
+done
#------------------------------------------------------------------------------#