Пример #1
0
    def test_source_root_trie_deprecated(self):
        trie = SourceRootTrie()
        self.assertIsNone(trie.find("src/java/org/pantsbuild/foo/Foo.java"))

        def root(path):
            return SourceRoot(path)

        # Wildcard at the end.
        trie.add_pattern("src/*")
        self.assertEqual(root("src/java"),
                         trie.find("src/java/org/pantsbuild/foo/Foo.java"))
        self.assertEqual(
            root("my/project/src/java"),
            trie.find("my/project/src/java/org/pantsbuild/foo/Foo.java"),
        )
        self.assertEqual(root("src/python"),
                         trie.find("src/python/pantsbuild/foo/foo.py"))
        self.assertEqual(
            root("my/project/src/python"),
            trie.find("my/project/src/python/org/pantsbuild/foo/foo.py"),
        )

        # Overlapping pattern.
        trie.add_pattern("src/main/*")
        self.assertEqual(
            root("src/main/java"),
            trie.find("src/main/java/org/pantsbuild/foo/Foo.java"))
        self.assertEqual(
            root("my/project/src/main/java"),
            trie.find("my/project/src/main/java/org/pantsbuild/foo/Foo.java"),
        )
        self.assertEqual(root("src/main/python"),
                         trie.find("src/main/python/pantsbuild/foo/foo.py"))
        self.assertEqual(
            root("my/project/src/main/python"),
            trie.find("my/project/src/main/python/org/pantsbuild/foo/foo.py"),
        )

        # Wildcard in the middle.
        trie.add_pattern("src/*/code")
        self.assertEqual(
            root("src/java/code"),
            trie.find("src/java/code/org/pantsbuild/foo/Foo.java"))
        self.assertEqual(
            root("my/project/src/java/code"),
            trie.find("my/project/src/java/code/org/pantsbuild/foo/Foo.java"),
        )
        self.assertEqual(root("src/python/code"),
                         trie.find("src/python/code/pantsbuild/foo/foo.py"))
        self.assertEqual(
            root("my/project/src/python/code"),
            trie.find("my/project/src/python/code/org/pantsbuild/foo/foo.py"),
        )

        # Verify that the now even-more-overlapping pattern still works.
        self.assertEqual(
            root("src/main/java"),
            trie.find("src/main/java/org/pantsbuild/foo/Foo.java"))
        self.assertEqual(
            root("my/project/src/main/java"),
            trie.find("my/project/src/main/java/org/pantsbuild/foo/Foo.java"),
        )
        self.assertEqual(root("src/main/python"),
                         trie.find("src/main/python/pantsbuild/foo/foo.py"))
        self.assertEqual(
            root("my/project/src/main/python"),
            trie.find("my/project/src/main/python/org/pantsbuild/foo/foo.py"),
        )

        # Verify that we take the first matching prefix.
        self.assertEqual(root("src/java"),
                         trie.find("src/java/src/python/Foo.java"))

        # Test canonicalization.
        self.assertEqual(root("src/jvm"),
                         trie.find("src/jvm/org/pantsbuild/foo/Foo.java"))
        self.assertEqual(root("src/jvm"),
                         trie.find("src/jvm/org/pantsbuild/foo/Foo.scala"))
        self.assertEqual(root("src/py"),
                         trie.find("src/py/pantsbuild/foo/foo.py"))

        # Non-canonicalized language names should also be detected.
        self.assertEqual(root("src/kotlin"),
                         trie.find("src/kotlin/org/pantsbuild/foo/Foo.kotlin"))

        # Test fixed roots.
        trie.add_fixed("mysrc/scalastuff")
        self.assertEqual(
            SourceRoot("mysrc/scalastuff"),
            trie.find("mysrc/scalastuff/org/pantsbuild/foo/Foo.scala"),
        )
        self.assertIsNone(
            trie.find(
                "my/project/mysrc/scalastuff/org/pantsbuild/foo/Foo.scala"))

        # Verify that a fixed root wins over a pattern that is a prefix of it
        # (e.g., that src/go/src wins over src/go).
        trie.add_fixed("src/go/src")
        self.assertEqual(root("src/go/src"),
                         trie.find("src/go/src/foo/bar/baz.go"))

        # Verify that the repo root can be a fixed source root.
        trie.add_fixed("")
        self.assertEqual(root(""), trie.find("foo/bar/baz.py"))
Пример #2
0
    def test_fixed_source_root_at_buildroot_deprecated(self):
        trie = SourceRootTrie()
        trie.add_fixed("", )

        self.assertEqual(SourceRoot(""), trie.find("foo/proto/bar/baz.proto"))
Пример #3
0
    def test_source_root_pattern_at_buildroot_deprecated(self):
        trie = SourceRootTrie()
        trie.add_pattern("*")

        self.assertEqual(SourceRoot("java"), trie.find("java/bar/baz.proto"))
Пример #4
0
    def test_source_root_pattern_at_buildroot(self):
        trie = SourceRootTrie(SourceRootFactory({}))
        trie.add_pattern('*')

        self.assertEqual(SourceRoot('java', ('java', ), UNKNOWN),
                         trie.find('java/bar/baz.proto'))
Пример #5
0
    def test_source_root_trie(self):
        trie = SourceRootTrie(
            SourceRootFactory({
                'jvm': ('java', 'scala'),
                'py': ('python', )
            }))
        self.assertIsNone(trie.find('src/java/org/pantsbuild/foo/Foo.java'))

        def root(path, langs):
            return SourceRoot(path, langs, UNKNOWN)

        # Wildcard at the end.
        trie.add_pattern('src/*')
        self.assertEqual(root('src/java', ('java', )),
                         trie.find('src/java/org/pantsbuild/foo/Foo.java'))
        self.assertEqual(
            root('my/project/src/java', ('java', )),
            trie.find('my/project/src/java/org/pantsbuild/foo/Foo.java'))
        self.assertEqual(root('src/python', ('python', )),
                         trie.find('src/python/pantsbuild/foo/foo.py'))
        self.assertEqual(
            root('my/project/src/python', ('python', )),
            trie.find('my/project/src/python/org/pantsbuild/foo/foo.py'))

        # Overlapping pattern.
        trie.add_pattern('src/main/*')
        self.assertEqual(
            root('src/main/java', ('java', )),
            trie.find('src/main/java/org/pantsbuild/foo/Foo.java'))
        self.assertEqual(
            root('my/project/src/main/java', ('java', )),
            trie.find('my/project/src/main/java/org/pantsbuild/foo/Foo.java'))
        self.assertEqual(root('src/main/python', ('python', )),
                         trie.find('src/main/python/pantsbuild/foo/foo.py'))
        self.assertEqual(
            root('my/project/src/main/python', ('python', )),
            trie.find('my/project/src/main/python/org/pantsbuild/foo/foo.py'))

        # Wildcard in the middle.
        trie.add_pattern('src/*/code')
        self.assertEqual(
            root('src/java/code', ('java', )),
            trie.find('src/java/code/org/pantsbuild/foo/Foo.java'))
        self.assertEqual(
            root('my/project/src/java/code', ('java', )),
            trie.find('my/project/src/java/code/org/pantsbuild/foo/Foo.java'))
        self.assertEqual(root('src/python/code', ('python', )),
                         trie.find('src/python/code/pantsbuild/foo/foo.py'))
        self.assertEqual(
            root('my/project/src/python/code', ('python', )),
            trie.find('my/project/src/python/code/org/pantsbuild/foo/foo.py'))

        # Verify that the now even-more-overlapping pattern still works.
        self.assertEqual(
            root('src/main/java', ('java', )),
            trie.find('src/main/java/org/pantsbuild/foo/Foo.java'))
        self.assertEqual(
            root('my/project/src/main/java', ('java', )),
            trie.find('my/project/src/main/java/org/pantsbuild/foo/Foo.java'))
        self.assertEqual(root('src/main/python', ('python', )),
                         trie.find('src/main/python/pantsbuild/foo/foo.py'))
        self.assertEqual(
            root('my/project/src/main/python', ('python', )),
            trie.find('my/project/src/main/python/org/pantsbuild/foo/foo.py'))

        # Verify that we take the first matching prefix.
        self.assertEqual(root('src/java', ('java', )),
                         trie.find('src/java/src/python/Foo.java'))

        # Test canonicalization.
        self.assertEqual(root('src/jvm', ('java', 'scala')),
                         trie.find('src/jvm/org/pantsbuild/foo/Foo.java'))
        self.assertEqual(root('src/jvm', ('java', 'scala')),
                         trie.find('src/jvm/org/pantsbuild/foo/Foo.scala'))
        self.assertEqual(root('src/py', ('python', )),
                         trie.find('src/py/pantsbuild/foo/foo.py'))

        # Non-canonicalized language names should also be detected.
        self.assertEqual(root('src/kotlin', ('kotlin', )),
                         trie.find('src/kotlin/org/pantsbuild/foo/Foo.kotlin'))

        # Test fixed roots.
        trie.add_fixed('mysrc/scalastuff', ('scala', ))
        self.assertEqual(
            SourceRoot('mysrc/scalastuff', ('scala', ), UNKNOWN),
            trie.find('mysrc/scalastuff/org/pantsbuild/foo/Foo.scala'))
        self.assertIsNone(
            trie.find(
                'my/project/mysrc/scalastuff/org/pantsbuild/foo/Foo.scala'))

        # Verify that a fixed root wins over a pattern that is a prefix of it
        # (e.g., that src/go/src wins over src/go).
        trie.add_fixed('src/go/src', ('go', ))
        self.assertEqual(root('src/go/src', ('go', )),
                         trie.find('src/go/src/foo/bar/baz.go'))
Пример #6
0
  def test_source_root_trie(self):
    trie = SourceRootTrie(SourceRootFactory({
      'jvm': ('java', 'scala'),
      'py': ('python',)
    }))
    self.assertIsNone(trie.find('src/java/org/pantsbuild/foo/Foo.java'))

    # Wildcard at the end.
    trie.add_pattern('src/*')
    self.assertEquals(SourceRoot('src/java', ('java',)),
                      trie.find('src/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('my/project/src/java', ('java',)),
                      trie.find('my/project/src/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('src/python', ('python',)),
                      trie.find('src/python/pantsbuild/foo/foo.py'))
    self.assertEquals(SourceRoot('my/project/src/python', ('python',)),
                      trie.find('my/project/src/python/org/pantsbuild/foo/foo.py'))

    # Overlapping pattern.
    trie.add_pattern('src/main/*')
    self.assertEquals(SourceRoot('src/main/java', ('java',)),
                      trie.find('src/main/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('my/project/src/main/java', ('java',)),
                      trie.find('my/project/src/main/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('src/main/python', ('python',)),
                      trie.find('src/main/python/pantsbuild/foo/foo.py'))
    self.assertEquals(SourceRoot('my/project/src/main/python', ('python',)),
                      trie.find('my/project/src/main/python/org/pantsbuild/foo/foo.py'))

    # Wildcard in the middle.
    trie.add_pattern('src/*/code')
    self.assertEquals(SourceRoot('src/java/code', ('java',)),
                      trie.find('src/java/code/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('my/project/src/java/code', ('java',)),
                      trie.find('my/project/src/java/code/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('src/python/code', ('python',)),
                      trie.find('src/python/code/pantsbuild/foo/foo.py'))
    self.assertEquals(SourceRoot('my/project/src/python/code', ('python',)),
                      trie.find('my/project/src/python/code/org/pantsbuild/foo/foo.py'))

    # Verify that the now even-more-overlapping pattern still works.
    self.assertEquals(SourceRoot('src/main/java', ('java',)),
                      trie.find('src/main/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('my/project/src/main/java', ('java',)),
                      trie.find('my/project/src/main/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('src/main/python', ('python',)),
                      trie.find('src/main/python/pantsbuild/foo/foo.py'))
    self.assertEquals(SourceRoot('my/project/src/main/python', ('python',)),
                      trie.find('my/project/src/main/python/org/pantsbuild/foo/foo.py'))

    # Verify that we take the first matching prefix.
    self.assertEquals(SourceRoot('src/java', ('java',)),
                      trie.find('src/java/src/python/Foo.java'))

    # Test canonicalization.
    self.assertEquals(SourceRoot('src/jvm', ('java', 'scala')),
                      trie.find('src/jvm/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('src/jvm', ('java', 'scala')),
                      trie.find('src/jvm/org/pantsbuild/foo/Foo.scala'))
    self.assertEquals(SourceRoot('src/py', ('python',)),
                      trie.find('src/py/pantsbuild/foo/foo.py'))

    # Test fixed patterns.
    trie.add_fixed('mysrc/scalastuff', ('scala',))
    self.assertEquals(('mysrc/scalastuff', ('scala',)),
                      trie.find('mysrc/scalastuff/org/pantsbuild/foo/Foo.scala'))
    self.assertIsNone(trie.find('my/project/mysrc/scalastuff/org/pantsbuild/foo/Foo.scala'))
Пример #7
0
    def test_fixed_source_root_at_buildroot(self):
        trie = SourceRootTrie(SourceRootFactory({}))
        trie.add_fixed('', ('proto', ))

        self.assertEqual(SourceRoot('', ('proto', ), UNKNOWN),
                         trie.find('foo/proto/bar/baz.proto'))
Пример #8
0
  def test_fixed_source_root_at_buildroot(self):
    trie = SourceRootTrie(SourceRootFactory({}))
    trie.add_fixed('', ('proto',))

    self.assertEquals(('', ('proto',), UNKNOWN),
                      trie.find('foo/proto/bar/baz.proto'))
Пример #9
0
  def test_source_root_trie(self):
    trie = SourceRootTrie(SourceRootFactory({
      'jvm': ('java', 'scala'),
      'py': ('python',)
    }))
    self.assertIsNone(trie.find('src/java/org/pantsbuild/foo/Foo.java'))

    def root(path, langs):
      return SourceRoot(path, langs, UNKNOWN)

    # Wildcard at the end.
    trie.add_pattern('src/*')
    self.assertEquals(root('src/java', ('java',)),
                      trie.find('src/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(root('my/project/src/java', ('java',)),
                      trie.find('my/project/src/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(root('src/python', ('python',)),
                      trie.find('src/python/pantsbuild/foo/foo.py'))
    self.assertEquals(root('my/project/src/python', ('python',)),
                      trie.find('my/project/src/python/org/pantsbuild/foo/foo.py'))

    # Overlapping pattern.
    trie.add_pattern('src/main/*')
    self.assertEquals(root('src/main/java', ('java',)),
                      trie.find('src/main/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(root('my/project/src/main/java', ('java',)),
                      trie.find('my/project/src/main/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(root('src/main/python', ('python',)),
                      trie.find('src/main/python/pantsbuild/foo/foo.py'))
    self.assertEquals(root('my/project/src/main/python', ('python',)),
                      trie.find('my/project/src/main/python/org/pantsbuild/foo/foo.py'))

    # Wildcard in the middle.
    trie.add_pattern('src/*/code')
    self.assertEquals(root('src/java/code', ('java',)),
                      trie.find('src/java/code/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(root('my/project/src/java/code', ('java',)),
                      trie.find('my/project/src/java/code/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(root('src/python/code', ('python',)),
                      trie.find('src/python/code/pantsbuild/foo/foo.py'))
    self.assertEquals(root('my/project/src/python/code', ('python',)),
                      trie.find('my/project/src/python/code/org/pantsbuild/foo/foo.py'))

    # Verify that the now even-more-overlapping pattern still works.
    self.assertEquals(root('src/main/java', ('java',)),
                      trie.find('src/main/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(root('my/project/src/main/java', ('java',)),
                      trie.find('my/project/src/main/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(root('src/main/python', ('python',)),
                      trie.find('src/main/python/pantsbuild/foo/foo.py'))
    self.assertEquals(root('my/project/src/main/python', ('python',)),
                      trie.find('my/project/src/main/python/org/pantsbuild/foo/foo.py'))

    # Verify that we take the first matching prefix.
    self.assertEquals(root('src/java', ('java',)),
                      trie.find('src/java/src/python/Foo.java'))

    # Test canonicalization.
    self.assertEquals(root('src/jvm', ('java', 'scala')),
                      trie.find('src/jvm/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(root('src/jvm', ('java', 'scala')),
                      trie.find('src/jvm/org/pantsbuild/foo/Foo.scala'))
    self.assertEquals(root('src/py', ('python',)),
                      trie.find('src/py/pantsbuild/foo/foo.py'))

    # Test fixed roots.
    trie.add_fixed('mysrc/scalastuff', ('scala',))
    self.assertEquals(('mysrc/scalastuff', ('scala',), UNKNOWN),
                      trie.find('mysrc/scalastuff/org/pantsbuild/foo/Foo.scala'))
    self.assertIsNone(trie.find('my/project/mysrc/scalastuff/org/pantsbuild/foo/Foo.scala'))

    # Verify that a fixed root wins over a pattern that is a prefix of it
    # (e.g., that src/go/src wins over src/go).
    trie.add_fixed('src/go/src', ('go',))
    self.assertEquals(root('src/go/src', ('go',)),
                      trie.find('src/go/src/foo/bar/baz.go'))
Пример #10
0
  def test_source_root_pattern_at_buildroot(self):
    trie = SourceRootTrie(SourceRootFactory({}))
    trie.add_pattern('*')

    self.assertEquals(('java', ('java',), UNKNOWN),
                      trie.find('java/bar/baz.proto'))
Пример #11
0
  def test_source_root_trie(self):
    trie = SourceRootTrie({
      'jvm': ('java', 'scala'),
      'py': ('python',)
    })
    self.assertIsNone(trie.find('src/java/org/pantsbuild/foo/Foo.java'))

    # Wildcard at the end.
    trie.add_pattern('src/*')
    self.assertEquals(SourceRoot('src/java', ('java',)),
                      trie.find('src/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('my/project/src/java', ('java',)),
                      trie.find('my/project/src/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('src/python', ('python',)),
                      trie.find('src/python/pantsbuild/foo/foo.py'))
    self.assertEquals(SourceRoot('my/project/src/python', ('python',)),
                      trie.find('my/project/src/python/org/pantsbuild/foo/foo.py'))

    # Overlapping pattern.
    trie.add_pattern('src/main/*')
    self.assertEquals(SourceRoot('src/main/java', ('java',)),
                      trie.find('src/main/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('my/project/src/main/java', ('java',)),
                      trie.find('my/project/src/main/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('src/main/python', ('python',)),
                      trie.find('src/main/python/pantsbuild/foo/foo.py'))
    self.assertEquals(SourceRoot('my/project/src/main/python', ('python',)),
                      trie.find('my/project/src/main/python/org/pantsbuild/foo/foo.py'))

    # Wildcard in the middle.
    trie.add_pattern('src/*/code')
    self.assertEquals(SourceRoot('src/java/code', ('java',)),
                      trie.find('src/java/code/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('my/project/src/java/code', ('java',)),
                      trie.find('my/project/src/java/code/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('src/python/code', ('python',)),
                      trie.find('src/python/code/pantsbuild/foo/foo.py'))
    self.assertEquals(SourceRoot('my/project/src/python/code', ('python',)),
                      trie.find('my/project/src/python/code/org/pantsbuild/foo/foo.py'))

    # Verify that the now even-more-overlapping pattern still works.
    self.assertEquals(SourceRoot('src/main/java', ('java',)),
                      trie.find('src/main/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('my/project/src/main/java', ('java',)),
                      trie.find('my/project/src/main/java/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('src/main/python', ('python',)),
                      trie.find('src/main/python/pantsbuild/foo/foo.py'))
    self.assertEquals(SourceRoot('my/project/src/main/python', ('python',)),
                      trie.find('my/project/src/main/python/org/pantsbuild/foo/foo.py'))

    # Verify that we take the first matching prefix.
    self.assertEquals(SourceRoot('src/java', ('java',)),
                      trie.find('src/java/src/python/Foo.java'))

    # Test canonicalization.
    self.assertEquals(SourceRoot('src/jvm', ('java', 'scala')),
                      trie.find('src/jvm/org/pantsbuild/foo/Foo.java'))
    self.assertEquals(SourceRoot('src/jvm', ('java', 'scala')),
                      trie.find('src/jvm/org/pantsbuild/foo/Foo.scala'))
    self.assertEquals(SourceRoot('src/py', ('python',)),
                      trie.find('src/py/pantsbuild/foo/foo.py'))

    # Test fixed patterns.
    trie.add_fixed('mysrc/scalastuff', ('scala',))
    self.assertEquals(('mysrc/scalastuff', ('scala',)),
                      trie.find('mysrc/scalastuff/org/pantsbuild/foo/Foo.scala'))
    self.assertIsNone(trie.find('my/project/mysrc/scalastuff/org/pantsbuild/foo/Foo.scala'))
Пример #12
0
    def test_source_root_pattern_at_buildroot(self):
        trie = SourceRootTrie(SourceRootFactory({}))
        trie.add_pattern("*")

        self.assertEqual(SourceRoot("java", ("java",), UNKNOWN), trie.find("java/bar/baz.proto"))