help=_("Restrict output to warnings and errors"))
+def _add_java_paths_to_config(pathlist, thisconfig):
+ def path_version_key(s):
+ versionlist = []
+ for u in re.split('[^0-9]+', s):
+ try:
+ versionlist.append(int(u))
+ except ValueError:
+ pass
+ return versionlist
+
+ for d in sorted(pathlist, key=path_version_key):
+ if os.path.islink(d):
+ continue
+ j = os.path.basename(d)
+ # the last one found will be the canonical one, so order appropriately
+ for regex in [
+ r'^1\.([6-9])\.0\.jdk$', # OSX
+ r'^jdk1\.([6-9])\.0_[0-9]+.jdk$', # OSX and Oracle tarball
+ r'^jdk1\.([6-9])\.0_[0-9]+$', # Oracle Windows
+ r'^jdk([6-9])-openjdk$', # Arch
+ r'^java-([6-9])-openjdk$', # Arch
+ r'^java-([6-9])-jdk$', # Arch (oracle)
+ r'^java-1\.([6-9])\.0-.*$', # RedHat
+ r'^java-([6-9])-oracle$', # Debian WebUpd8
+ r'^jdk-([6-9])-oracle-.*$', # Debian make-jpkg
+ r'^java-([6-9])-openjdk-[^c][^o][^m].*$', # Debian
+ ]:
+ m = re.match(regex, j)
+ if not m:
+ continue
+ for p in [d, os.path.join(d, 'Contents', 'Home')]:
+ if os.path.exists(os.path.join(p, 'bin', 'javac')):
+ thisconfig['java_paths'][m.group(1)] = p
+
+
def fill_config_defaults(thisconfig):
for k, v in default_config.items():
if k not in thisconfig:
pathlist.append(os.getenv('JAVA_HOME'))
if os.getenv('PROGRAMFILES') is not None:
pathlist += glob.glob(os.path.join(os.getenv('PROGRAMFILES'), 'Java', 'jdk1.[6-9].*'))
- for d in sorted(pathlist):
- if os.path.islink(d):
- continue
- j = os.path.basename(d)
- # the last one found will be the canonical one, so order appropriately
- for regex in [
- r'^1\.([6-9])\.0\.jdk$', # OSX
- r'^jdk1\.([6-9])\.0_[0-9]+.jdk$', # OSX and Oracle tarball
- r'^jdk1\.([6-9])\.0_[0-9]+$', # Oracle Windows
- r'^jdk([6-9])-openjdk$', # Arch
- r'^java-([6-9])-openjdk$', # Arch
- r'^java-([6-9])-jdk$', # Arch (oracle)
- r'^java-1\.([6-9])\.0-.*$', # RedHat
- r'^java-([6-9])-oracle$', # Debian WebUpd8
- r'^jdk-([6-9])-oracle-.*$', # Debian make-jpkg
- r'^java-([6-9])-openjdk-[^c][^o][^m].*$', # Debian
- ]:
- m = re.match(regex, j)
- if not m:
- continue
- for p in [d, os.path.join(d, 'Contents', 'Home')]:
- if os.path.exists(os.path.join(p, 'bin', 'javac')):
- thisconfig['java_paths'][m.group(1)] = p
+ _add_java_paths_to_config(pathlist, thisconfig)
for java_version in ('7', '8', '9'):
if java_version not in thisconfig['java_paths']:
else:
print('no build-tools found: ' + build_tools)
+ def test_find_java_root_path(self):
+ tmptestsdir = tempfile.mkdtemp(prefix='test_find_java_root_path', dir=self.tmpdir)
+ os.chdir(tmptestsdir)
+
+ all_pathlists = [
+ ([ # Debian
+ '/usr/lib/jvm/java-1.5.0-gcj-5-amd64',
+ '/usr/lib/jvm/java-8-openjdk-amd64',
+ '/usr/lib/jvm/java-1.8.0-openjdk-amd64',
+ ], '/usr/lib/jvm/java-8-openjdk-amd64'),
+ ([ # OSX
+ '/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk',
+ '/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk',
+ '/System/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk',
+ ], '/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk'),
+ ]
+
+ for pathlist, choice in all_pathlists:
+ # strip leading / to make relative paths to test without root
+ pathlist = [p[1:] for p in pathlist]
+
+ # create test file used in common._add_java_paths_to_config()
+ for p in pathlist:
+ if p.startswith('/System') or p.startswith('/Library'):
+ basedir = os.path.join(p, 'Contents', 'Home', 'bin')
+ else:
+ basedir = os.path.join(p, 'bin')
+ os.makedirs(basedir)
+ open(os.path.join(basedir, 'javac'), 'w').close()
+
+ config = dict()
+ config['java_paths'] = dict()
+ fdroidserver.common._add_java_paths_to_config(pathlist, config)
+ self.assertEqual(config['java_paths']['8'], choice[1:])
+
def testIsApkDebuggable(self):
config = dict()
fdroidserver.common.fill_config_defaults(config)
def test_prepare_sources_refresh(self):
packageName = 'org.fdroid.ci.test.app'
- testdir = tempfile.mkdtemp(prefix='test_verify_apks', dir=self.tmpdir)
+ testdir = tempfile.mkdtemp(prefix='test_prepare_sources_refresh', dir=self.tmpdir)
print('testdir', testdir)
os.chdir(testdir)
os.mkdir('build')
newSuite = unittest.TestSuite()
newSuite.addTest(unittest.makeSuite(CommonTest))
- unittest.main()
+ unittest.main(failfast=False)