Merge branch 'build_tools_tests' into 'master'

Build tools tests

See merge request fdroid/fdroidserver!834
This commit is contained in:
Hans-Christoph Steiner 2020-11-30 08:39:20 +00:00
commit 2a265cbc0b
5 changed files with 14 additions and 51 deletions

View file

@ -31,9 +31,6 @@
# java_paths: # java_paths:
# 8: /usr/lib/jvm/java-8-openjdk # 8: /usr/lib/jvm/java-8-openjdk
# Build tools version to be used
# build_tools: 28.0.3
# Command or path to binary for running Ant # Command or path to binary for running Ant
# ant: ant # ant: ant

View file

@ -115,7 +115,6 @@ default_config = {
'r16b': None, 'r16b': None,
}, },
'cachedir': os.path.join(os.getenv('HOME'), '.cache', 'fdroidserver'), 'cachedir': os.path.join(os.getenv('HOME'), '.cache', 'fdroidserver'),
'build_tools': MINIMUM_APKSIGNER_BUILD_TOOLS_VERSION,
'java_paths': None, 'java_paths': None,
'scan_binary': False, 'scan_binary': False,
'ant': "ant", 'ant': "ant",
@ -501,18 +500,11 @@ def find_sdk_tools_cmd(cmd):
tooldirs = [] tooldirs = []
if config is not None and 'sdk_path' in config and os.path.exists(config['sdk_path']): if config is not None and 'sdk_path' in config and os.path.exists(config['sdk_path']):
# try to find a working path to this command, in all the recent possible paths # try to find a working path to this command, in all the recent possible paths
if 'build_tools' in config: build_tools = os.path.join(config['sdk_path'], 'build-tools')
build_tools = os.path.join(config['sdk_path'], 'build-tools') if os.path.isdir(build_tools):
# if 'build_tools' was manually set and exists, check only that one for f in sorted(os.listdir(build_tools), reverse=True):
configed_build_tools = os.path.join(build_tools, config['build_tools']) if os.path.isdir(os.path.join(build_tools, f)):
if os.path.exists(configed_build_tools): tooldirs.append(os.path.join(build_tools, f))
tooldirs.append(configed_build_tools)
else:
# no configed version, so hunt known paths for it
for f in sorted(os.listdir(build_tools), reverse=True):
if os.path.isdir(os.path.join(build_tools, f)):
tooldirs.append(os.path.join(build_tools, f))
tooldirs.append(build_tools)
sdk_tools = os.path.join(config['sdk_path'], 'tools') sdk_tools = os.path.join(config['sdk_path'], 'tools')
if os.path.exists(sdk_tools): if os.path.exists(sdk_tools):
tooldirs.append(sdk_tools) tooldirs.append(sdk_tools)
@ -528,7 +520,8 @@ def find_sdk_tools_cmd(cmd):
test_aapt_version(path) test_aapt_version(path)
return path return path
# did not find the command, exit with error message # did not find the command, exit with error message
ensure_build_tools_exists(config) if not test_sdk_exists(config):
raise FDroidException(_("Android SDK not found!"))
def test_aapt_version(aapt): def test_aapt_version(aapt):
@ -581,17 +574,6 @@ def test_sdk_exists(thisconfig):
return True return True
def ensure_build_tools_exists(thisconfig):
if not test_sdk_exists(thisconfig):
raise FDroidException(_("Android SDK not found!"))
build_tools = os.path.join(thisconfig['sdk_path'], 'build-tools')
versioned_build_tools = os.path.join(build_tools, thisconfig['build_tools'])
if not os.path.isdir(versioned_build_tools):
raise FDroidException(
_("Android build-tools path '{path}' does not exist!")
.format(path=versioned_build_tools))
def get_local_metadata_files(): def get_local_metadata_files():
'''get any metadata files local to an app's source repo '''get any metadata files local to an app's source repo

View file

@ -28,23 +28,10 @@ import fdroidserver.scanner
class BuildTest(unittest.TestCase): class BuildTest(unittest.TestCase):
'''fdroidserver/build.py''' '''fdroidserver/build.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 setUp(self): def setUp(self):
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger('androguard.axml')
logger.setLevel(logging.INFO) # tame the axml debug messages
self.basedir = os.path.join(localmodule, 'tests') self.basedir = os.path.join(localmodule, 'tests')
self.tmpdir = os.path.abspath(os.path.join(self.basedir, '..', '.testfiles')) self.tmpdir = os.path.abspath(os.path.join(self.basedir, '..', '.testfiles'))
if not os.path.exists(self.tmpdir): if not os.path.exists(self.tmpdir):
@ -56,7 +43,6 @@ class BuildTest(unittest.TestCase):
fdroidserver.common.fill_config_defaults(config) fdroidserver.common.fill_config_defaults(config)
fdroidserver.common.config = config fdroidserver.common.config = config
fdroidserver.build.config = config fdroidserver.build.config = config
self._set_build_tools()
try: try:
config['aapt'] = fdroidserver.common.find_sdk_tools_cmd('aapt') config['aapt'] = fdroidserver.common.find_sdk_tools_cmd('aapt')
except fdroidserver.exception.FDroidException: except fdroidserver.exception.FDroidException:
@ -183,7 +169,6 @@ class BuildTest(unittest.TestCase):
config = dict() config = dict()
config['sdk_path'] = os.getenv('ANDROID_HOME') config['sdk_path'] = os.getenv('ANDROID_HOME')
config['ndk_paths'] = {'r10d': os.getenv('ANDROID_NDK_HOME')} config['ndk_paths'] = {'r10d': os.getenv('ANDROID_NDK_HOME')}
config['build_tools'] = 'FAKE_BUILD_TOOLS_VERSION'
fdroidserver.common.config = config fdroidserver.common.config = config
app = fdroidserver.metadata.App() app = fdroidserver.metadata.App()
app.id = 'com.gpl.rpg.AndorsTrail' app.id = 'com.gpl.rpg.AndorsTrail'

View file

@ -42,6 +42,8 @@ class CommonTest(unittest.TestCase):
def setUp(self): def setUp(self):
logging.basicConfig(level=logging.DEBUG) logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger('androguard.axml')
logger.setLevel(logging.INFO) # tame the axml debug messages
self.basedir = os.path.join(localmodule, 'tests') self.basedir = os.path.join(localmodule, 'tests')
self.tmpdir = os.path.abspath(os.path.join(self.basedir, '..', '.testfiles')) self.tmpdir = os.path.abspath(os.path.join(self.basedir, '..', '.testfiles'))
if not os.path.exists(self.tmpdir): if not os.path.exists(self.tmpdir):
@ -75,12 +77,10 @@ class CommonTest(unittest.TestCase):
def _set_build_tools(self): def _set_build_tools(self):
build_tools = os.path.join(fdroidserver.common.config['sdk_path'], 'build-tools') build_tools = os.path.join(fdroidserver.common.config['sdk_path'], 'build-tools')
if os.path.exists(build_tools): if os.path.exists(build_tools):
fdroidserver.common.config['build_tools'] = ''
for f in sorted(os.listdir(build_tools), reverse=True): for f in sorted(os.listdir(build_tools), reverse=True):
versioned = os.path.join(build_tools, f) versioned = os.path.join(build_tools, f)
if os.path.isdir(versioned) \ if os.path.isdir(versioned) \
and os.path.isfile(os.path.join(versioned, 'apksigner')): and os.path.isfile(os.path.join(versioned, 'apksigner')):
fdroidserver.common.config['build_tools'] = versioned
break break
return True return True
else: else:
@ -235,7 +235,6 @@ class CommonTest(unittest.TestCase):
config = dict() config = dict()
config['sdk_path'] = os.getenv('ANDROID_HOME') config['sdk_path'] = os.getenv('ANDROID_HOME')
config['ndk_paths'] = {'r10d': os.getenv('ANDROID_NDK_HOME')} config['ndk_paths'] = {'r10d': os.getenv('ANDROID_NDK_HOME')}
config['build_tools'] = 'FAKE_BUILD_TOOLS_VERSION'
fdroidserver.common.config = config fdroidserver.common.config = config
app = fdroidserver.metadata.App() app = fdroidserver.metadata.App()
app.id = 'org.fdroid.froid' app.id = 'org.fdroid.froid'
@ -715,9 +714,10 @@ class CommonTest(unittest.TestCase):
fdroidserver.common.fill_config_defaults(config) fdroidserver.common.fill_config_defaults(config)
fdroidserver.common.config = config fdroidserver.common.config = config
self._set_build_tools() self._set_build_tools()
aapt = fdroidserver.common.find_sdk_tools_cmd('aapt') try:
if aapt:
config['aapt'] = fdroidserver.common.find_sdk_tools_cmd('aapt') config['aapt'] = fdroidserver.common.find_sdk_tools_cmd('aapt')
except fdroidserver.exception.FDroidException:
pass # aapt is not required if androguard is present
testcases = [ testcases = [
('repo/obb.main.twoversions_1101613.apk', 'obb.main.twoversions', '1101613', '0.1'), ('repo/obb.main.twoversions_1101613.apk', 'obb.main.twoversions', '1101613', '0.1'),

View file

@ -59,7 +59,6 @@ class VCSTest(unittest.TestCase):
os.mkdir("build") os.mkdir("build")
config['sdk_path'] = 'MOCKPATH' config['sdk_path'] = 'MOCKPATH'
config['ndk_paths'] = {'r10d': os.getenv('ANDROID_NDK_HOME')} config['ndk_paths'] = {'r10d': os.getenv('ANDROID_NDK_HOME')}
config['build_tools'] = 'FAKE_BUILD_TOOLS_VERSION'
config['java_paths'] = {'fake': 'fake'} config['java_paths'] = {'fake': 'fake'}
fdroidserver.common.config = config fdroidserver.common.config = config
app = fdroidserver.metadata.App() app = fdroidserver.metadata.App()