コード例 #1
0
  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,
    )
コード例 #2
0
 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']))
コード例 #3
0
    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'))