From 541b553e5f44c0bf242a77701081358e55aa2d92 Mon Sep 17 00:00:00 2001 From: Jiri Vanek Date: Apr 23 2014 12:21:37 +0000 Subject: Added inclusion f NVR or part of NVR behind pretty jdks' id in list --- diff --git a/ChangeLog b/ChangeLog index c3cbede..4f70db8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +2014-04-23 Jiri Vanek + + Added inclusion f NVR or part of NVR behind pretty jdks' id in list + * switch_java_functions.py: (get_pretty_name) added recognition of + nvr and arch. Added support for legacy dirs without NVR + (get_java_split) similar + * tests/test_switch_java_functions.py: fixed existing tests to follow new + conventions. Added test_get_pretty_names_i686, test_get_pretty_name_openjdk7_full_nvr + test_get_pretty_name_openjdk7_full_nvr_fedora, test_get_pretty_name_openjdk6_partial_nvr + test_get_pretty_name_sun6_jsut_arch, test_get_pretty_name_sun6_partial_nvr + test_get_pretty_name_openjdk6_just_arch, test_get_pretty_name_oracle7_full_nvr + and def test_list_of_javas. The last one is testing list of various jdks as listed + from installation. + 2014-04-10 Omair Majid * Makefile.am: diff --git a/switch_java_functions.py b/switch_java_functions.py index 355bd3f..53977c5 100644 --- a/switch_java_functions.py +++ b/switch_java_functions.py @@ -296,7 +296,7 @@ def get_pretty_names(alternative_names): def get_pretty_name(java): '''Return a pretty name of the form "formatted-name version optional-arch"''' vendor, version, arch = get_java_split(java) - if vendor == 'sun' or vendor == 'blackdown': + if vendor in ['sun', 'blackdown', 'oracle']: pretty_name = vendor.capitalize() + ' ' + version elif vendor == 'icedtea': pretty_name = 'IcedTea' + ' ' + version @@ -304,18 +304,38 @@ def get_pretty_name(java): pretty_name = 'OpenJDK' + ' ' + version else: pretty_name = vendor.upper() + ' ' + version - if arch != '': - pretty_name = pretty_name + ' ' + '64-bit' + versionsplit = java.split('-') + + #handling of legacy '1.7.0-openjdk' or '1.5.0-sun.x86_64' + if ("." not in versionsplit[len(versionsplit)-1]): + return pretty_name + nvr = '' + if len(versionsplit) > 2: + nvr = nvr + versionsplit[2] + if len(versionsplit) > 3: + nvr = nvr + '-' + versionsplit[3] + if (nvr == '' and len(arch) > 1): + if (arch.startswith(".")): + nvr = arch[1:] + else: + nvr = arch + + pretty_name = pretty_name + ' (' + nvr + ')' + return pretty_name def get_java_split(java): '''Return the tuple (version, vendor, arch) for a directory suffix (1.5.0-gcj.x86_64) - arch is empty if the directory suffix does not contain arch.''' + vendor_arch = java.split('-'); + if ("." not in vendor_arch[len(vendor_arch)-1]): + return vendor_arch[1], vendor_arch[0], '' vendor_arch = java.split('-')[1].split('.') vendor = vendor_arch[0] arch = '' - if len(vendor_arch) > 1: - arch = '.' + vendor_arch[1] + #path can be full of dots - as in jdk>6 full version is included + vendor_version_arch = java.split('.') + if len(vendor_version_arch) > 1: + arch = '.' + vendor_version_arch[len(vendor_version_arch)-1] version = java.split('-')[0] return vendor, version, arch diff --git a/tests/test_switch_java_functions.py b/tests/test_switch_java_functions.py index 5456216..f70dd4a 100644 --- a/tests/test_switch_java_functions.py +++ b/tests/test_switch_java_functions.py @@ -43,7 +43,15 @@ class SimpleUsage(unittest.TestCase): java1 = '1.7.0-openjdk' java2 = '1.5.0-sun.x86_64' result = funcs.get_pretty_names([java1, java2]) - self.assertEquals(result, {java1 : 'OpenJDK 1.7.0', java2: 'Sun 1.5.0 64-bit'}) + self.assertEquals(result, {java1 : 'OpenJDK 1.7.0', java2: 'Sun 1.5.0 (x86_64)'}) + + def test_get_pretty_names_i686(self): + # this test is not exhaustive. specific tests on all names are + # done separately via test_get_pretty_name_* tests + java1 = '1.7.0-openjdk.i686' + java2 = '1.5.0-sun.i386' + result = funcs.get_pretty_names([java1, java2]) + self.assertEquals(result, {java1 : 'OpenJDK 1.7.0 (i686)', java2: 'Sun 1.5.0 (i386)'}) def test_get_pretty_name_no_arch(self): java_name = '1.7.0-openjdk' @@ -54,12 +62,12 @@ class SimpleUsage(unittest.TestCase): java_name = '1.7.0-openjdk.i686' result = funcs.get_pretty_name(java_name) # Yes, i686 -> 64-bit. - self.assertEquals(result, 'OpenJDK 1.7.0 64-bit') + self.assertEquals(result, 'OpenJDK 1.7.0 (i686)') def test_get_pretty_name_x86_64(self): java_name = '1.7.0-openjdk.x86_64' result = funcs.get_pretty_name(java_name) - self.assertEquals(result, 'OpenJDK 1.7.0 64-bit') + self.assertEquals(result, 'OpenJDK 1.7.0 (x86_64)') def test_get_pretty_name_vendor_is_icedtea(self): java_name = '1.7.0-icedtea' @@ -74,7 +82,7 @@ class SimpleUsage(unittest.TestCase): def test_get_pretty_name_vendor_is_oracle(self): java_name = '1.7.0-oracle' result = funcs.get_pretty_name(java_name) - self.assertEquals(result, 'ORACLE 1.7.0') + self.assertEquals(result, 'Oracle 1.7.0') def test_get_pretty_name_vendor_is_ibm(self): java_name = '1.7.0-ibm' @@ -90,3 +98,76 @@ class SimpleUsage(unittest.TestCase): input = '1.6.0-gcj' result = funcs.get_java_split(input) self.assertEqual(result, ('gcj', '1.6.0', '')) + + def test_get_pretty_name_openjdk7_full_nvr(self): + java_name = '1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64' + result = funcs.get_pretty_name(java_name) + self.assertEquals(result, 'OpenJDK 1.7.0 (1.7.0.51-2.4.5.5.el7.x86_64)') + + def test_get_pretty_name_openjdk7_full_nvr_fedora(self): + java_name = '1.7.0-openjdk-1.7.0.51-2.4.5.5.fc21.x86_64' + result = funcs.get_pretty_name(java_name) + self.assertEquals(result, 'OpenJDK 1.7.0 (1.7.0.51-2.4.5.5.fc21.x86_64)') + + def test_get_pretty_name_openjdk6_partial_nvr(self): + java_name = '1.6.0-openjdk-1.6.0.0.x86_64' + result = funcs.get_pretty_name(java_name) + self.assertEquals(result, 'OpenJDK 1.6.0 (1.6.0.0.x86_64)') + + def test_get_pretty_name_sun6_jsut_arch(self): + java_name = '1.6.0-sun.x86_64' + result = funcs.get_pretty_name(java_name) + self.assertEquals(result, 'Sun 1.6.0 (x86_64)') + + def test_get_pretty_name_sun6_partial_nvr(self): + java_name = '1.6.0-sun-1.6.0.45.x86_64' + result = funcs.get_pretty_name(java_name) + self.assertEquals(result, 'Sun 1.6.0 (1.6.0.45.x86_64)') + + def test_get_pretty_name_openjdk6_just_arch(self): + java_name = '1.6.0-openjdk.x86_64' + result = funcs.get_pretty_name(java_name) + self.assertEquals(result, 'OpenJDK 1.6.0 (x86_64)') + + def test_get_pretty_name_oracle7_full_nvr(self): + java_name = '1.7.0-oracle-1.7.0.51-1jpp.1.el7.i386' + result = funcs.get_pretty_name(java_name) + self.assertEquals(result, 'Oracle 1.7.0 (1.7.0.51-1jpp.1.el7.i386)') + + # this is testing above items + # adding duplicated or similar entries + def test_list_of_javas(self): + javas = ['1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64', + '1.7.0-openjdk-1.7.0.55-2.4.7.0.el7.x86_64', + '1.6.0-openjdk-1.6.0.0.x86_64', + '1.7.0-oracle', + '1.6.0-openjdk.x86_64', + '1.7.0-oracle-1.7.0.51-1jpp.1.el7.i386', + '1.6.0-sun-1.6.0.45.x86_64', + '1.7.0-oracle-1.7.0.51-1jpp.1.el7.x86_64', + '1.6.0-sun.x86_64', + '1.7.1-ibm-1.7.1.0.0-1jpp.4.el7.x86_64', + '1.6.0-sun.x86_64', + '1.7.0-oracle-1.7.0.51-1jpp.1.el7.x86_64', + '1.7.0-ibm', + '1.7.0-openjdk', + '1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.i386', + '1.7.0-openjdk-1.7.0.51-2.4.5.5.fc21.i386'] + result = funcs.get_pretty_names(javas) + self.assertEquals(result[javas[0]], 'OpenJDK 1.7.0 (1.7.0.51-2.4.5.5.el7.x86_64)') + self.assertEquals(result[javas[1]], 'OpenJDK 1.7.0 (1.7.0.55-2.4.7.0.el7.x86_64)') + self.assertEquals(result[javas[2]], 'OpenJDK 1.6.0 (1.6.0.0.x86_64)') + self.assertEquals(result[javas[3]], 'Oracle 1.7.0') + self.assertEquals(result[javas[4]], 'OpenJDK 1.6.0 (x86_64)') + self.assertEquals(result[javas[5]], 'Oracle 1.7.0 (1.7.0.51-1jpp.1.el7.i386)') + self.assertEquals(result[javas[6]], 'Sun 1.6.0 (1.6.0.45.x86_64)') + self.assertEquals(result[javas[7]], 'Oracle 1.7.0 (1.7.0.51-1jpp.1.el7.x86_64)') + self.assertEquals(result[javas[8]], 'Sun 1.6.0 (x86_64)') + self.assertEquals(result[javas[9]], 'IBM 1.7.1 (1.7.1.0.0-1jpp.4.el7.x86_64)') + self.assertEquals(result[javas[10]], 'Sun 1.6.0 (x86_64)'); + self.assertEquals(result[javas[11]], 'Oracle 1.7.0 (1.7.0.51-1jpp.1.el7.x86_64)') + self.assertEquals(result[javas[12]], 'IBM 1.7.0') + self.assertEquals(result[javas[13]], 'OpenJDK 1.7.0') + self.assertEquals(result[javas[14]], 'OpenJDK 1.7.0 (1.7.0.51-2.4.5.5.el7.i386)') + self.assertEquals(result[javas[15]], 'OpenJDK 1.7.0 (1.7.0.51-2.4.5.5.fc21.i386)') +