Skip to content

Commit 3865f0e

Browse files
committed
Add tests for Kotlin and Scala
Signed-off-by: Tushar Goel <[email protected]>
1 parent ccae710 commit 3865f0e

File tree

2 files changed

+96
-2
lines changed

2 files changed

+96
-2
lines changed

scanpipe/pipes/jvm.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,7 @@ def get_normalized_path(cls, path, extension):
201201
class_name, _, _ = class_name.partition("$")
202202
else:
203203
class_name, _, _ = class_name.partition(".") # plain .class
204-
if class_name.endswith("Kt"):
205-
class_name = class_name[: -len("Kt")]
204+
class_name = class_name.removesuffix("Kt")
206205
return str(path.parent / f"{class_name}{extension}")
207206

208207

scanpipe/tests/pipes/test_jvm.py

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,3 +97,98 @@ def test_scanpipe_pipes_jvm_get_normalized_java_path_with_inner_class(self):
9797
def test_scanpipe_pipes_jvm_get_fully_qualified_java_path(self):
9898
fqjp = jvm.get_fully_qualified_path("org.common", "Bar.java")
9999
self.assertEqual("org/common/Bar.java", fqjp)
100+
101+
102+
class ScanPipeJvmScalaTest(TestCase):
103+
data = Path(__file__).parent.parent / "data"
104+
105+
scala_code = """
106+
package org.apache.logging.log4j.scala
107+
import scala.concurrent.Future
108+
"""
109+
110+
scala_package_too_far_down = ("\n" * 501) + "package org.apache.logging.log4j.scala"
111+
112+
def test_scanpipe_pipes_jvm_find_scala_package(self):
113+
package = jvm.ScalaLanguage.find_source_package(self.scala_code.splitlines())
114+
self.assertEqual({"scala_package": "org.apache.logging.log4j.scala"}, package)
115+
116+
def test_scanpipe_pipes_jvm_find_scala_package_with_spaces(self):
117+
lines = [" package foo.bar.baz ;"]
118+
package = jvm.ScalaLanguage.find_source_package(lines)
119+
self.assertEqual({"scala_package": "foo.bar.baz"}, package)
120+
121+
def test_scanpipe_pipes_jvm_find_scala_package_return_None(self):
122+
package = jvm.ScalaLanguage.find_source_package(
123+
self.scala_package_too_far_down.splitlines()
124+
)
125+
self.assertIsNone(package)
126+
127+
def test_scanpipe_pipes_jvm_get_normalized_scala_path(self):
128+
njp = jvm.ScalaLanguage.get_normalized_path(
129+
"foo/org/common/Bar.class", ".scala"
130+
)
131+
self.assertEqual("foo/org/common/Bar.scala", njp)
132+
133+
def test_scanpipe_pipes_jvm_get_normalized_scala_path_with_inner_class(self):
134+
njp = jvm.ScalaLanguage.get_normalized_path(
135+
"foo/org/common/Bar$inner.class", ".scala"
136+
)
137+
self.assertEqual("foo/org/common/Bar.scala", njp)
138+
139+
def test_scanpipe_pipes_jvm_get_fully_qualified_scala_path(self):
140+
fqjp = jvm.get_fully_qualified_path("org.common", "Bar.scala")
141+
self.assertEqual("org/common/Bar.scala", fqjp)
142+
143+
144+
class ScanPipeJvmKotlinTest(TestCase):
145+
data = Path(__file__).parent.parent / "data"
146+
147+
kotlin_code = """
148+
package org.apache.logging.log4j.kotlin
149+
150+
import kotlinx.coroutines.Deferred
151+
"""
152+
153+
kotlin_package_too_far_down = (
154+
"\n" * 501
155+
) + "package org.apache.logging.log4j.kotlin"
156+
157+
def test_scanpipe_pipes_jvm_find_kotlin_package(self):
158+
package = jvm.KotlinLanguage.find_source_package(self.kotlin_code.splitlines())
159+
self.assertEqual({"kotlin_package": "org.apache.logging.log4j.kotlin"}, package)
160+
161+
def test_scanpipe_pipes_jvm_find_kotlin_package_with_spaces(self):
162+
lines = [" package foo.bar.baz "]
163+
package = jvm.KotlinLanguage.find_source_package(lines)
164+
self.assertEqual({"kotlin_package": "foo.bar.baz"}, package)
165+
166+
def test_scanpipe_pipes_jvm_find_kotlin_package_return_None(self):
167+
package = jvm.KotlinLanguage.find_source_package(
168+
self.kotlin_package_too_far_down.splitlines()
169+
)
170+
self.assertIsNone(package)
171+
172+
def test_scanpipe_pipes_jvm_get_normalized_kotlin_path(self):
173+
njp = jvm.KotlinLanguage.get_normalized_path("foo/org/common/Bar.class", ".kt")
174+
self.assertEqual("foo/org/common/Bar.kt", njp)
175+
176+
def test_scanpipe_pipes_jvm_get_normalized_kotlin_path_with_inner_class(self):
177+
njp = jvm.KotlinLanguage.get_normalized_path(
178+
"foo/org/common/Bar$inner.class", ".kt"
179+
)
180+
self.assertEqual("foo/org/common/Bar.kt", njp)
181+
njp = jvm.KotlinLanguage.get_normalized_path(
182+
"foo/org/common/BarKt$inner.class", ".kt"
183+
)
184+
self.assertEqual("foo/org/common/Bar.kt", njp)
185+
186+
def test_scanpipe_pipes_jvm_get_normalized_kotlin_path_with_Kt_suffix(self):
187+
njp = jvm.KotlinLanguage.get_normalized_path(
188+
"foo/org/common/LoggerKt.class", ".kt"
189+
)
190+
self.assertEqual("foo/org/common/Logger.kt", njp)
191+
192+
def test_scanpipe_pipes_jvm_get_fully_qualified_kotlin_path(self):
193+
fqjp = jvm.get_fully_qualified_path("org.common", "Bar.kt")
194+
self.assertEqual("org/common/Bar.kt", fqjp)

0 commit comments

Comments
 (0)