def test_java_home_extraction_empty(self): result = tuple( ZincCompile._get_zinc_arguments( JvmPlatformSettings('1.7', '1.7', []))) self.assertEquals( 4, len(result), msg='_get_zinc_arguments did not correctly handle empty args.')
def test_java_home_extraction(self): _, source, _, target, foo, bar, composite, single = tuple(ZincCompile._get_zinc_arguments( JvmPlatformSettings('1.7', '1.7', [ 'foo', 'bar', 'foo:$JAVA_HOME/bar:$JAVA_HOME/foobar', '$JAVA_HOME', ]) )) self.assertEquals('-C1.7', source) self.assertEquals('-C1.7', target) self.assertEquals('foo', foo) self.assertEquals('bar', bar) self.assertNotEqual('$JAVA_HOME', single) self.assertNotIn('$JAVA_HOME', composite) self.assertEquals('foo:{0}/bar:{0}/foobar'.format(single), composite)
def test_java_home_extraction_missing_distributions(self): # This will need to be bumped if java ever gets to major version one million. far_future_version = '999999.1' farer_future_version = '999999.2' os_name = normalize_os_name(get_os_name()) @contextmanager def fake_distributions(versions): """Create a fake JDK for each java version in the input, and yield the list of java_homes. :param list versions: List of java version strings. """ fakes = [] for version in versions: fakes.append(distribution( executables=[EXE('bin/java', version), EXE('bin/javac', version)], )) yield [d.__enter__() for d in fakes] for d in fakes: d.__exit__(None, None, None) @contextmanager def fake_distribution_locator(*versions): """Sets up a fake distribution locator with fake distributions. Creates one distribution for each java version passed as an argument, and yields a list of paths to the java homes for each distribution. """ with fake_distributions(versions) as paths: path_options = { DistributionLocator.options_scope: { 'paths': { os_name: paths, } } } Subsystem.reset() init_subsystem(DistributionLocator, options=path_options) yield paths # Completely missing a usable distribution. with fake_distribution_locator(far_future_version): with self.assertRaises(DistributionLocator.Error): ZincCompile._get_zinc_arguments(JvmPlatformSettings( source_level=farer_future_version, target_level=farer_future_version, args=['$JAVA_HOME/foo'], )) # Missing a strict distribution. with fake_distribution_locator(farer_future_version) as paths: results = ZincCompile._get_zinc_arguments(JvmPlatformSettings( source_level=far_future_version, target_level=far_future_version, args=['$JAVA_HOME/foo', '$JAVA_HOME'], )) self.assertEquals(paths[0], results[-1]) self.assertEquals('{}/foo'.format(paths[0]), results[-2]) # Make sure we pick up the strictest possible distribution. with fake_distribution_locator(farer_future_version, far_future_version) as paths: farer_path, far_path = paths results = ZincCompile._get_zinc_arguments(JvmPlatformSettings( source_level=far_future_version, target_level=far_future_version, args=['$JAVA_HOME/foo', '$JAVA_HOME'], )) self.assertEquals(far_path, results[-1]) self.assertEquals('{}/foo'.format(far_path), results[-2]) # Make sure we pick the higher distribution when the lower one doesn't work. with fake_distribution_locator(farer_future_version, far_future_version) as paths: farer_path, far_path = paths results = ZincCompile._get_zinc_arguments(JvmPlatformSettings( source_level=farer_future_version, target_level=farer_future_version, args=['$JAVA_HOME/foo', '$JAVA_HOME'], )) self.assertEquals(farer_path, results[-1]) self.assertEquals('{}/foo'.format(farer_path), results[-2])
def test_java_home_extraction_empty(self): result = tuple(ZincCompile._get_zinc_arguments( JvmPlatformSettings('1.7', '1.7', []) )) self.assertEquals(4, len(result), msg='_get_zinc_arguments did not correctly handle empty args.')
def test_java_home_extraction_missing_distributions(self): # This will need to be bumped if java ever gets to major version one million. far_future_version = '999999.1' farer_future_version = '999999.2' os_name = normalize_os_name(get_os_name()) @contextmanager def fake_distributions(versions): """Create a fake JDK for each java version in the input, and yield the list of java_homes. :param list versions: List of java version strings. """ fakes = [] for version in versions: fakes.append(distribution( executables=[EXE('bin/java', version), EXE('bin/javac', version)], )) yield [d.__enter__() for d in fakes] for d in fakes: d.__exit__(None, None, None) @contextmanager def fake_distribution_locator(*versions): """Sets up a fake distribution locator with fake distributions. Creates one distribution for each java version passed as an argument, and yields a list of paths to the java homes for each distribution. """ with fake_distributions(versions) as paths: path_options = { 'jvm-distributions': { 'paths': { os_name: paths, } } } with subsystem_instance(DistributionLocator, **path_options) as locator: yield paths locator._reset() # Completely missing a usable distribution. with fake_distribution_locator(far_future_version): with self.assertRaises(DistributionLocator.Error): ZincCompile._get_zinc_arguments(JvmPlatformSettings( source_level=farer_future_version, target_level=farer_future_version, args=['$JAVA_HOME/foo'], )) # Missing a strict distribution. with fake_distribution_locator(farer_future_version) as paths: results = ZincCompile._get_zinc_arguments(JvmPlatformSettings( source_level=far_future_version, target_level=far_future_version, args=['$JAVA_HOME/foo', '$JAVA_HOME'], )) self.assertEquals(paths[0], results[-1]) self.assertEquals('{}/foo'.format(paths[0]), results[-2]) # Make sure we pick up the strictest possible distribution. with fake_distribution_locator(farer_future_version, far_future_version) as paths: farer_path, far_path = paths results = ZincCompile._get_zinc_arguments(JvmPlatformSettings( source_level=far_future_version, target_level=far_future_version, args=['$JAVA_HOME/foo', '$JAVA_HOME'], )) self.assertEquals(far_path, results[-1]) self.assertEquals('{}/foo'.format(far_path), results[-2]) # Make sure we pick the higher distribution when the lower one doesn't work. with fake_distribution_locator(farer_future_version, far_future_version) as paths: farer_path, far_path = paths results = ZincCompile._get_zinc_arguments(JvmPlatformSettings( source_level=farer_future_version, target_level=farer_future_version, args=['$JAVA_HOME/foo', '$JAVA_HOME'], )) self.assertEquals(farer_path, results[-1]) self.assertEquals('{}/foo'.format(farer_path), results[-2])