class TestJvmLinker(CrossPlatformTestCase): def __init__(self, *args, **kwargs): super().__init__(clear_variables=True, *args, **kwargs) def setUp(self): with mock.patch('bfg9000.shell.which', mock_which), \ mock.patch('bfg9000.shell.execute', default_mock_execute): self.linker = JvmBuilder(self.env, known_langs['java'], ['javac'], True, 'version').linker('executable') def test_call(self): self.assertEqual(self.linker('in', 'out', 'manifest'), [self.linker, 'out', 'manifest', 'in']) self.assertEqual(self.linker('in', 'out', 'manifest', ['flags']), [self.linker, 'flags', 'out', 'manifest', 'in']) def test_output_file(self): self.assertEqual(self.linker.output_file('file', None), file_types.Library(Path('file.jar'), 'jvm', 'java')) self.assertEqual( self.linker.output_file( 'file', AttrDict(options=opts.option_list(opts.entry_point('foo')))), file_types.ExecutableLibrary(Path('file.jar'), 'jvm', 'java')) def test_can_link(self): self.assertTrue(self.linker.can_link('jvm', ['java', 'scala'])) self.assertTrue(self.linker.can_link('jvm', ['goofy'])) self.assertFalse(self.linker.can_link('goofy', ['java'])) def test_flags_empty(self): self.assertEqual(self.linker.flags(opts.option_list()), []) def test_flags_string(self): self.assertEqual(self.linker.flags(opts.option_list('-v')), ['-v']) def test_flags_debug(self): self.assertEqual(self.linker.flags(opts.option_list(opts.debug())), []) def test_flags_optimize(self): self.assertEqual( self.linker.flags(opts.option_list(opts.optimize('size'))), []) def test_flags_entry_point(self): self.assertEqual( self.linker.flags(opts.option_list(opts.entry_point('symbol'))), []) def test_flags_gui(self): self.assertEqual(self.linker.flags(opts.option_list(opts.gui())), []) def test_flags_invalid(self): with self.assertRaises(TypeError): self.linker.flags(opts.option_list(123))
def test_flags_debug(self): self.assertEqual(self.compiler.flags(opts.option_list(opts.debug())), ['-g']) version = ('Scala code runner version 2.11.6 -- ' + 'Copyright 2002-2013, LAMP/EPFL') with mock.patch('bfg9000.shell.which', mock_which): scala_compiler = JvmBuilder(self.env, known_langs['scala'], ['scalac'], True, version).compiler self.assertEqual(scala_compiler.flags(opts.option_list(opts.debug())), ['-g:vars'])
class TestJvmLinker(unittest.TestCase): def setUp(self): self.env = make_env() def mock_execute(*args, **kwargs): return 'version' with mock.patch('bfg9000.shell.which', mock_which), \ mock.patch('bfg9000.shell.execute', mock_execute): # noqa self.linker = JvmBuilder(self.env, known_langs['java'], ['javac'], 'version').linker('executable') def test_flags_empty(self): self.assertEqual(self.linker.flags(opts.option_list()), []) def test_flags_string(self): self.assertEqual(self.linker.flags(opts.option_list('-v')), ['-v']) def test_flags_invalid(self): with self.assertRaises(TypeError): self.linker.flags(opts.option_list(123))
class TestJvmCompiler(unittest.TestCase): def setUp(self): self.env = make_env() def mock_execute(*args, **kwargs): return 'version' with mock.patch('bfg9000.shell.which', mock_which), \ mock.patch('bfg9000.shell.execute', mock_execute): # noqa self.compiler = JvmBuilder(self.env, known_langs['java'], ['javac'], 'version').compiler def test_flags_empty(self): self.assertEqual(self.compiler.flags(opts.option_list()), []) def test_flags_lib(self): lib1 = Path('/path/to/lib/libfoo.jar') lib2 = Path('/path/to/lib/libbar.jar') self.assertEqual( self.compiler.flags( opts.option_list( opts.lib(file_types.StaticLibrary(lib1, 'jvm')))), ['-cp', jbos(lib1)]) self.assertEqual( self.compiler.flags( opts.option_list( opts.lib(file_types.StaticLibrary(lib1, 'jvm')), opts.lib(file_types.StaticLibrary(lib2, 'jvm')))), ['-cp', lib1 + os.pathsep + lib2]) def test_flags_string(self): self.assertEqual(self.compiler.flags(opts.option_list('-v')), ['-v']) def test_flags_invalid(self): with self.assertRaises(TypeError): self.compiler.flags(opts.option_list(123))
class TestJvmCompiler(CrossPlatformTestCase): def __init__(self, *args, **kwargs): super().__init__(clear_variables=True, *args, **kwargs) def setUp(self): def mock_execute(*args, **kwargs): return 'version' with mock.patch('bfg9000.shell.which', mock_which), \ mock.patch('bfg9000.shell.execute', mock_execute): # noqa self.compiler = JvmBuilder(self.env, known_langs['java'], ['javac'], 'version').compiler def test_call(self): extra = self.compiler._always_flags with mock.patch('bfg9000.shell.which', mock_which): jvmout = self.env.tool('jvmoutput') self.assertEqual( self.compiler('in', 'out'), [jvmout, '-o', 'out', self.compiler] + extra + ['in'] ) self.assertEqual( self.compiler('in', 'out', ['flags']), [jvmout, '-o', 'out', self.compiler] + extra + ['flags', 'in'] ) def test_default_name(self): src = file_types.SourceFile(Path('file.java', Root.srcdir), 'java') self.assertEqual(self.compiler.default_name(src, None), 'file') def test_output_file(self): self.assertEqual( self.compiler.output_file('file', None), file_types.ObjectFileList(Path('file.classlist'), Path('file.class'), 'jvm', 'java') ) def test_flags_empty(self): self.assertEqual(self.compiler.flags(opts.option_list()), []) def test_flags_lib(self): lib1 = self.Path('/path/to/lib/libfoo.jar') lib2 = self.Path('/path/to/lib/libbar.jar') self.assertEqual(self.compiler.flags(opts.option_list( opts.lib(file_types.StaticLibrary(lib1, 'jvm')) )), ['-cp', lib1]) self.assertEqual(self.compiler.flags(opts.option_list( opts.lib(file_types.StaticLibrary(lib1, 'jvm')), opts.lib(file_types.StaticLibrary(lib2, 'jvm')) )), ['-cp', lib1 + os.pathsep + lib2]) def test_flags_debug(self): self.assertEqual(self.compiler.flags(opts.option_list( opts.debug() )), ['-g']) version = ('Scala code runner version 2.11.6 -- ' + 'Copyright 2002-2013, LAMP/EPFL') with mock.patch('bfg9000.shell.which', mock_which): # noqa scala_compiler = JvmBuilder(self.env, known_langs['scala'], ['scalac'], version).compiler self.assertEqual(scala_compiler.flags(opts.option_list( opts.debug() )), ['-g:vars']) def test_flags_warning(self): self.assertEqual(self.compiler.flags(opts.option_list( opts.warning('disable') )), ['-nowarn']) self.assertEqual(self.compiler.flags(opts.option_list( opts.warning('all') )), ['-Xlint:all']) self.assertEqual(self.compiler.flags(opts.option_list( opts.warning('error') )), ['-Werror']) with self.assertRaises(ValueError): self.compiler.flags(opts.option_list(opts.warning('extra'))) self.assertEqual(self.compiler.flags(opts.option_list( opts.warning('all', 'error') )), ['-Xlint:all', '-Werror']) def test_flags_warning_scala(self): version = ('Scala code runner version 2.11.6 -- ' + 'Copyright 2002-2013, LAMP/EPFL') with mock.patch('bfg9000.shell.which', mock_which): # noqa self.compiler = JvmBuilder(self.env, known_langs['scala'], ['scalac'], version).compiler self.assertEqual(self.compiler.flags(opts.option_list( opts.warning('disable') )), ['-nowarn']) self.assertEqual(self.compiler.flags(opts.option_list( opts.warning('all') )), ['-Xlint:_']) self.assertEqual(self.compiler.flags(opts.option_list( opts.warning('error') )), ['-Xfatal-errors']) with self.assertRaises(ValueError): self.compiler.flags(opts.option_list(opts.warning('extra'))) self.assertEqual(self.compiler.flags(opts.option_list( opts.warning('all', 'error') )), ['-Xlint:_', '-Xfatal-errors']) with self.assertRaises(ValueError): self.compiler.flags(opts.option_list(opts.warning('unknown'))) def test_flags_optimize(self): version = ('Scala code runner version 2.11.6 -- ' + 'Copyright 2002-2013, LAMP/EPFL') with mock.patch('bfg9000.shell.which', mock_which): # noqa self.compiler = JvmBuilder(self.env, known_langs['scala'], ['scalac'], version).compiler self.assertEqual(self.compiler.flags(opts.option_list( opts.optimize('disable') )), []) self.assertEqual(self.compiler.flags(opts.option_list( opts.optimize('size') )), ['-optimize']) self.assertEqual(self.compiler.flags(opts.option_list( opts.optimize('speed') )), ['-optimize']) self.assertEqual(self.compiler.flags(opts.option_list( opts.optimize('linktime') )), []) self.assertEqual(self.compiler.flags(opts.option_list( opts.optimize('speed', 'linktime') )), ['-optimize']) def test_flags_string(self): self.assertEqual(self.compiler.flags(opts.option_list('-v')), ['-v']) def test_flags_invalid(self): with self.assertRaises(TypeError): self.compiler.flags(opts.option_list(123))