def _create_idea_project(self, outdir, module_pool): targets = self.context.targets() blob = self.generate_targets_map(targets) aop_sources_dir = os.path.join(self.get_options().annotation_generated_sources_dir) aop_tests_dir = os.path.join(self.get_options().annotation_generated_test_sources_dir) annotation_processing = IdeaProject.AnnotationProcessing( enabled=self.get_options().annotation_processing_enabled, sources_dir=aop_sources_dir, test_sources_dir=aop_tests_dir, processors=self.get_options().annotation_processor, codegen_processors=self.get_options().internal_codegen_processor, ) return IdeaProject( blob, output_directory=outdir, workdir=self.gen_project_workdir, context=self.context, maven_style=self.get_options().maven_style, exclude_folders=self.get_options().exclude_folders, annotation_processing=annotation_processing, bash=self.bash, java_encoding=self.java_encoding, java_maximum_heap_size=self.java_maximum_heap_size, pants_workdir=self.get_options().pants_workdir, generate_root_module=self.get_options().loose_files, prune_libraries=self.get_options().prune_libraries, module_pool=module_pool, debug_port=self.jvm.get_options().debug_port, provided_module_dependencies=self.get_options().provided_module_dependencies, )
def test_java_language_level(self): blob = { 'jvm_platforms': { 'platforms': { '1.7': { 'source_level': '1.7' }, 'the-best': { 'source_level': '1.8.34._5' }, 'not-the-best': { 'source_level': '1.6.1.3_12' }, } }, 'targets': { 'squarepants/faketarget': { 'platform': 'the-best' }, 'squarepants/shamtarget': { 'platform': 'not-the-best' }, } } project = IdeaProject(blob, '.', '.', None) self.assertEqual( 'JDK_1_8', project._java_language_level( blob['targets']['squarepants/faketarget'])) self.assertEqual( 'JDK_1_6', project._java_language_level( blob['targets']['squarepants/shamtarget']))
def test_module_dependencies(self): blob = { 'jvm_platforms': { 'platforms': { '1.7': { 'source_level': '1.7' }, }, 'default_platform': '1.7', }, 'targets': { 'foo/a:a': { 'roots': [{ 'source_root': 'foo/a/src/main/java' }] }, 'foo/b:b': { 'targets': [ 'foo/a:a', ], 'roots': [{ 'source_root': 'foo/b/src/main/java' }] }, 'foo/c:c': { 'roots': [{ 'source_root': 'foo/c/src/main/java' }] }, 'foo/d:d': { 'roots': [{ 'source_root': 'foo/d/src/main/java' }] }, 'foo/e:e': { 'targets': [ 'foo/c:c', 'foo/d:d', ] }, 'foo/f:f': { 'targets': [ 'foo/e:e', ] }, 'foo:foo': { 'targets': [ 'foo/b:b', 'foo/f:f', ], 'roots': [{ 'source_root': 'foo/src/main/java' }] }, 'foo/cycle:cycle': { 'targets': [ 'foo/cycle:cycle', ] }, 'bar:bar': { 'targets': [ 'foo:foo', ], 'roots': [{ 'source_root': 'bar/src/main/java' }] } } } for target in blob['targets'].values(): target['pants_target_type'] = 'java_library' def module_dependencies(spec): modules, _ = project._compute_module_and_library_dependencies( blob['targets'][spec]) return modules project = IdeaProject(blob, '.', '.', None, maven_style=True) self.assertEqual(set(), module_dependencies('foo/a:a')) self.assertEqual({'foo-a'}, module_dependencies('foo/b:b')) self.assertEqual({'foo-c', 'foo-d'}, module_dependencies('foo/e:e')) self.assertEqual({'foo-c', 'foo-d'}, module_dependencies('foo/f:f')) # foo/a:a isn't included because it's a transitive dependency of foo/b:b, and foo/b:b has source # roots. Transitive dependencies are only "collapsed" if the intermediary dependency has no # source roots (and thus no module to correspond to). self.assertEqual({'foo-b', 'foo-c', 'foo-d'}, module_dependencies('foo:foo')) self.assertEqual(set(), module_dependencies('foo/cycle:cycle')) self.assertEqual({'foo'}, module_dependencies('bar:bar'))