Skip to content

Commit d0a6262

Browse files
committed
Run CI on Windows
Previously, we didn't test lsif-java on Windows resulting in bugs like #422. This commit adds a build matrix to our CI job and fixes path escaping logic so that it should work correctly on Windows.
1 parent 5d7ccd5 commit d0a6262

File tree

9 files changed

+41
-8
lines changed

9 files changed

+41
-8
lines changed

.github/workflows/ci.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,15 @@ on:
66
pull_request:
77
jobs:
88
test:
9-
runs-on: ubuntu-latest
9+
runs-on: ${{ matrix.os }}
10+
strategy:
11+
matrix:
12+
os: [windows-latest, ubuntu-latest]
1013
steps:
1114
- uses: actions/checkout@v2
12-
- uses: olafurpg/setup-scala@v13
15+
- uses: actions/setup-java@v1
16+
with:
17+
java-version: 8
1318
- uses: actions/setup-go@v2
1419
with:
1520
go-version: "^1.13.1"

lsif-java/src/main/scala/com/sourcegraph/lsif_java/buildtools/GradleBuildTool.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,8 @@ class GradleBuildTool(index: IndexCommand) extends BuildTool("Gradle", index) {
215215
| }
216216
| }
217217
| task $lsifJavaDependencies {
218-
| def depsOut = java.nio.file.Paths.get('$dependenciesPath')
218+
| def depsOut = java.nio.file.Paths.get(
219+
| java.net.URI.create('${dependenciesPath.toUri}'))
219220
| doLast {
220221
| java.nio.file.Files.createDirectories(depsOut.getParent())
221222
| tasks.withType(JavaCompile) {

lsif-java/src/main/scala/com/sourcegraph/lsif_java/buildtools/GradleJavaToolchains.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ object GradleJavaToolchains {
7070
s"""|
7171
|try {
7272
| java.nio.file.Files.write(
73-
| java.nio.file.Paths.get('$gradleVersionPath'),
73+
| java.nio.file.Paths.get(
74+
| java.net.URI.create('${gradleVersionPath.toUri}')),
7475
| [gradle.gradleVersion],
7576
| java.nio.file.StandardOpenOption.TRUNCATE_EXISTING,
7677
| java.nio.file.StandardOpenOption.CREATE)
@@ -88,7 +89,8 @@ object GradleJavaToolchains {
8889
|
8990
|allprojects {
9091
| task $taskName {
91-
| def toolchainsOut = java.nio.file.Paths.get('$toolchainsPath')
92+
| def toolchainsOut = java.nio.file.Paths.get(
93+
| java.net.URI.create('${toolchainsPath.toUri}'))
9294
| doLast {
9395
| try {
9496
| tasks.withType(JavaCompile) {

project/JavaToolchainPlugin.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ object JavaToolchainPlugin extends AutoPlugin {
9292
.toList
9393
.flatMap(index => "--jvm-index" :: index :: Nil)
9494
val arguments =
95-
List(coursier.toString, "java-home", "--jvm", v) ++ index
95+
List("java", "-jar", coursier.toString, "java-home", "--jvm", v) ++
96+
index
9697
new File(Process(arguments).!!.trim)
9798
}
9899
)

tests/buildTools/src/test/scala/tests/BaseBuildToolSuite.scala

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import java.nio.file.FileSystems
44
import java.nio.file.Files
55
import java.nio.file.Path
66

7+
import scala.util.Properties
8+
79
import scala.meta.internal.io.FileIO
810
import scala.meta.io.AbsolutePath
911

@@ -12,12 +14,28 @@ import com.sourcegraph.lsif_java.buildtools.ClasspathEntry
1214
import moped.testkit.DeleteVisitor
1315
import moped.testkit.FileLayout
1416
import moped.testkit.MopedSuite
17+
import munit.Tag
1518
import munit.TestOptions
1619
import os.Shellable
1720

1821
abstract class BaseBuildToolSuite extends MopedSuite(LsifJava.app) {
1922
override def environmentVariables: Map[String, String] = sys.env
2023

24+
def tags = List.empty[Tag]
25+
26+
override def munitTestTransforms: List[TestTransform] =
27+
super.munitTestTransforms ++
28+
List(
29+
new TestTransform(
30+
"SkipWindows",
31+
t =>
32+
if (Properties.isWin && t.tags(SkipWindows))
33+
t.tag(munit.Ignore)
34+
else
35+
t
36+
)
37+
)
38+
2139
// NOTE(olafur): workaround for https://github.com/scalameta/moped/issues/18
2240
override val temporaryDirectory: DirectoryFixture =
2341
new DirectoryFixture {
@@ -41,7 +59,7 @@ abstract class BaseBuildToolSuite extends MopedSuite(LsifJava.app) {
4159
expectedPackages: String = "",
4260
initCommand: => List[String] = Nil
4361
): Unit = {
44-
test(options) {
62+
test(options.withTags(options.tags ++ tags)) {
4563
if (initCommand.nonEmpty) {
4664
os.proc(Shellable(initCommand)).call(os.Path(workingDirectory))
4765
}

tests/buildTools/src/test/scala/tests/LsifBuildToolSuite.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package tests
33
import com.sourcegraph.lsif_java.{BuildInfo => V}
44

55
class LsifBuildToolSuite extends BaseBuildToolSuite {
6+
override def tags = List(SkipWindows)
67
checkBuild(
78
"basic",
89
"""|/lsif-java.json

tests/buildTools/src/test/scala/tests/MavenBuildToolSuite.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package tests
33
import scala.meta.internal.io.InputStreamIO
44

55
class MavenBuildToolSuite extends BaseBuildToolSuite {
6+
override def tags = List(SkipWindows)
67

78
def pomXml =
89
new String(

tests/buildTools/src/test/scala/tests/MissingBuildToolSuite.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package tests
22

33
class MissingBuildToolSuite extends BaseBuildToolSuite {
4+
45
checkErrorOutput(
56
"basic",
67
List("index"),
78
expectedOutput =
8-
s"""|error: No build tool detected in workspace '/workingDirectory'. At the moment, the only supported build tools are: Gradle, Maven, sbt.
9+
s"""|error: No build tool detected in workspace '${java.io.File.separator}workingDirectory'. At the moment, the only supported build tools are: Gradle, Maven, sbt.
910
|""".stripMargin,
1011
workingDirectoryLayout = ""
1112
)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package tests
2+
3+
object SkipWindows extends munit.Tag("SkipWindows")

0 commit comments

Comments
 (0)