mirror of
https://github.com/f-droid/fdroidserver.git
synced 2026-04-16 04:52:51 -04:00
Merge branch 'gradlepath' into 'master'
fix gradle output path See merge request fdroid/fdroidserver!1030
This commit is contained in:
@@ -749,8 +749,11 @@ def build_local(app, build, vcs, build_dir, output_dir, log_dir, srclib_dir, ext
|
||||
# If we build with gradle flavors with gradle plugin >= 3.0 the APK will be in
|
||||
# a subdirectory corresponding to the flavor command used, but with different
|
||||
# capitalization.
|
||||
if flavors_cmd:
|
||||
apk_dirs.append(os.path.join(root_dir, 'build', 'outputs', 'apk', transform_first_char(flavors_cmd, str.lower), 'release'))
|
||||
if flavors:
|
||||
root = os.path.join(root_dir, 'build', 'outputs', 'apk')
|
||||
for d in os.listdir(root):
|
||||
if d.lower() == flavors_cmd.lower():
|
||||
apk_dirs.append(os.path.join(root, d, 'release'))
|
||||
for apks_dir in apk_dirs:
|
||||
for apkglob in ['*-release-unsigned.apk', '*-unsigned.apk', '*.apk']:
|
||||
apks = glob.glob(os.path.join(apks_dir, apkglob))
|
||||
|
||||
@@ -387,6 +387,71 @@ class BuildTest(unittest.TestCase):
|
||||
# All paths in the config must be strings, never pathlib.Path instances
|
||||
self.assertIsInstance(config['ndk_paths'][ndk_version], str)
|
||||
|
||||
def test_build_local_gradle(self):
|
||||
"""Test if `fdroid build` finds gradle build apk"""
|
||||
with (
|
||||
tempfile.TemporaryDirectory() as testdir,
|
||||
TmpCwd(testdir),
|
||||
tempfile.TemporaryDirectory() as sdk_path,
|
||||
):
|
||||
config = {'ndk_paths': {}, 'sdk_path': sdk_path, 'gradle': 'gradle'}
|
||||
fdroidserver.common.config = config
|
||||
fdroidserver.build.config = config
|
||||
fdroidserver.build.options = mock.Mock()
|
||||
fdroidserver.build.options.scan_binary = False
|
||||
fdroidserver.build.options.notarball = True
|
||||
fdroidserver.build.options.skipscan = True
|
||||
|
||||
app = fdroidserver.metadata.App()
|
||||
app.id = 'mocked.app.id'
|
||||
build = fdroidserver.metadata.Build()
|
||||
build.commit = '1.0'
|
||||
build.versionCode = 1
|
||||
build.versionName = '1.0'
|
||||
vcs = mock.Mock()
|
||||
|
||||
# use "as _ignored" just to make a pretty layout
|
||||
with (
|
||||
mock.patch('fdroidserver.common.get_native_code', return_value='x86'),
|
||||
mock.patch(
|
||||
'fdroidserver.common.get_apk_id',
|
||||
return_value=(app.id, build.versionCode, build.versionName),
|
||||
),
|
||||
mock.patch(
|
||||
'fdroidserver.common.is_debuggable_or_testOnly',
|
||||
return_value=False,
|
||||
),
|
||||
mock.patch('fdroidserver.build.FDroidPopen', FakeProcess),
|
||||
mock.patch(
|
||||
'fdroidserver.common.get_source_date_epoch', lambda f: '1234567890'
|
||||
),
|
||||
):
|
||||
for gradle, output in [
|
||||
(['yes'], 'build/outputs/apk/release/out.apk'),
|
||||
(['foss'], 'build/outputs/apk/foss/release/out.apk'),
|
||||
(['foss', 'prod'], 'build/outputs/apk/fossProd/release/out.apk'),
|
||||
(['FOSS'], 'build/outputs/apk/FOSS/release/out.apk'),
|
||||
(['Prod', 'foss'], 'build/outputs/apk/ProdFoss/release/out.apk'),
|
||||
]:
|
||||
build.gradle = gradle
|
||||
Path(output).parent.mkdir(parents=True, exist_ok=True)
|
||||
Path(output).write_text("OUTPUT")
|
||||
fdroidserver.build.build_local(
|
||||
app,
|
||||
build,
|
||||
vcs,
|
||||
build_dir=testdir,
|
||||
output_dir=testdir,
|
||||
log_dir=None,
|
||||
srclib_dir=None,
|
||||
extlib_dir=None,
|
||||
tmp_dir=None,
|
||||
force=False,
|
||||
onserver=False,
|
||||
refresh=False,
|
||||
)
|
||||
Path(output).unlink()
|
||||
|
||||
@mock.patch('sdkmanager.build_package_list', lambda use_net: None)
|
||||
@mock.patch('fdroidserver.build.FDroidPopen', FakeProcess)
|
||||
@mock.patch('fdroidserver.common.get_native_code', lambda _ignored: 'x86')
|
||||
|
||||
Reference in New Issue
Block a user