-
Notifications
You must be signed in to change notification settings - Fork 304
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
added llvm toolchain integration test
- Loading branch information
Showing
14 changed files
with
240 additions
and
35 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
45 changes: 45 additions & 0 deletions
45
clwb/tests/integrationtests/com/google/idea/blaze/clwb/LlvmToolchainTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
package com.google.idea.blaze.clwb; | ||
|
||
import static com.google.common.truth.Truth.assertThat; | ||
import static com.google.idea.blaze.clwb.base.Assertions.assertContainsHeader; | ||
import static com.google.idea.blaze.clwb.base.Assertions.assertDefine; | ||
|
||
import com.google.idea.blaze.clwb.base.BazelVersionRule; | ||
import com.google.idea.blaze.clwb.base.ClwbIntegrationTestCase; | ||
import com.google.idea.blaze.clwb.base.OSRule; | ||
import com.intellij.util.system.OS; | ||
import com.jetbrains.cidr.lang.workspace.compiler.ClangCompilerKind; | ||
import org.junit.Rule; | ||
import org.junit.Test; | ||
import org.junit.runner.RunWith; | ||
import org.junit.runners.JUnit4; | ||
|
||
@RunWith(JUnit4.class) | ||
public class LlvmToolchainTest extends ClwbIntegrationTestCase { | ||
|
||
// llvm toolchain currently does not support windows, otherwise this test should be fine to run on windows | ||
@Rule | ||
public final OSRule osRule = new OSRule(OS.Linux, OS.macOS); | ||
|
||
// llvm toolchain currently only supports bazel 7+ | ||
@Rule | ||
public final BazelVersionRule bazelRule = new BazelVersionRule(7, 0); | ||
|
||
@Test | ||
public void testClwb() { | ||
final var errors = runSync(defaultSyncParams().build()); | ||
errors.assertNoErrors(); | ||
|
||
checkCompiler(); | ||
} | ||
|
||
private void checkCompiler() { | ||
final var compilerSettings = findFileCompilerSettings("main/hello-world.cc"); | ||
|
||
assertThat(compilerSettings.getCompilerKind()).isEqualTo(ClangCompilerKind.INSTANCE); | ||
assertDefine("__llvm__", compilerSettings).isNotEmpty(); | ||
assertDefine("__VERSION__", compilerSettings).startsWith("\"Clang 19.1.0"); | ||
|
||
assertContainsHeader("iostream", compilerSettings); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
38 changes: 38 additions & 0 deletions
38
clwb/tests/integrationtests/com/google/idea/blaze/clwb/base/BazelVersionRule.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
package com.google.idea.blaze.clwb.base; | ||
|
||
import com.google.idea.blaze.base.bazel.BazelVersion; | ||
import org.junit.rules.TestRule; | ||
import org.junit.runner.Description; | ||
import org.junit.runners.model.Statement; | ||
|
||
public class BazelVersionRule implements TestRule { | ||
|
||
private final BazelVersion min; | ||
|
||
public BazelVersionRule(int major, int minor) { | ||
this.min = new BazelVersion(major, minor, 0); | ||
} | ||
|
||
@Override | ||
public Statement apply(Statement base, Description description) { | ||
final var bitBazelVersion = System.getenv("BIT_BAZEL_VERSION"); | ||
if (bitBazelVersion == null) { | ||
return Statements.fail("Could not find BIT_BAZEL_VERSION"); | ||
} | ||
|
||
final var version = BazelVersion.parseVersion(bitBazelVersion); | ||
if (version.isAtLeast(999, 0, 0)) { | ||
return Statements.fail("Invalid BIT_BAZEL_VERSION: %s", bitBazelVersion); | ||
} | ||
|
||
if (version.isAtLeast(min)) { | ||
return base; | ||
} else { | ||
return Statements.message( | ||
"Test '%s' does not run on bazel version %s", | ||
description.getDisplayName(), | ||
bitBazelVersion | ||
); | ||
} | ||
} | ||
} |
29 changes: 29 additions & 0 deletions
29
clwb/tests/integrationtests/com/google/idea/blaze/clwb/base/OSRule.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
package com.google.idea.blaze.clwb.base; | ||
|
||
import java.util.Arrays; | ||
import org.junit.rules.TestRule; | ||
import org.junit.runner.Description; | ||
import org.junit.runners.model.Statement; | ||
import com.intellij.util.system.OS; | ||
|
||
public class OSRule implements TestRule { | ||
|
||
private final OS[] supportedOS; | ||
|
||
public OSRule(OS... supportedOS) { | ||
this.supportedOS = supportedOS; | ||
} | ||
|
||
@Override | ||
public Statement apply(Statement base, Description description) { | ||
if (Arrays.stream(supportedOS).anyMatch(it -> it == OS.CURRENT)) { | ||
return base; | ||
} | ||
|
||
return Statements.message( | ||
"Test '%s' does not run on %s", | ||
description.getDisplayName(), | ||
OS.CURRENT.name() | ||
); | ||
} | ||
} |
28 changes: 28 additions & 0 deletions
28
clwb/tests/integrationtests/com/google/idea/blaze/clwb/base/Statements.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package com.google.idea.blaze.clwb.base; | ||
|
||
import org.junit.runners.model.Statement; | ||
|
||
public class Statements { | ||
|
||
public static Statement message(String format, Object... args) { | ||
final var message = String.format(format, args); | ||
|
||
return new Statement() { | ||
@Override | ||
public void evaluate() { | ||
System.out.println(message); | ||
} | ||
}; | ||
} | ||
|
||
public static Statement fail(String format, Object... args) { | ||
final var message = String.format(format, args); | ||
|
||
return new Statement() { | ||
@Override | ||
public void evaluate() { | ||
throw new AssertionError(message); | ||
} | ||
}; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") | ||
|
||
http_archive( | ||
name = "toolchains_llvm", | ||
canonical_id = "v1.2.0", | ||
sha256 = "e3fb6dc6b77eaf167cb2b0c410df95d09127cbe20547e5a329c771808a816ab4", | ||
strip_prefix = "toolchains_llvm-v1.2.0", | ||
url = "https://github.com/bazel-contrib/toolchains_llvm/releases/download/v1.2.0/toolchains_llvm-v1.2.0.tar.gz", | ||
) | ||
|
||
load("@toolchains_llvm//toolchain:deps.bzl", "bazel_toolchain_dependencies") | ||
bazel_toolchain_dependencies() | ||
|
||
load("@toolchains_llvm//toolchain:rules.bzl", "llvm_toolchain") | ||
llvm_toolchain( | ||
name = "llvm_toolchain", | ||
llvm_version = "19.1.0", | ||
) | ||
|
||
load("@llvm_toolchain//:toolchains.bzl", "llvm_register_toolchains") | ||
llvm_register_toolchains() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
load("@rules_cc//cc:defs.bzl", "cc_binary") | ||
|
||
cc_binary( | ||
name = "hello-world", | ||
srcs = ["hello-world.cc"], | ||
visibility = ["//visibility:public"], | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
#include <iostream> | ||
|
||
int main() { | ||
std::cout << "Hello, there!" << std::endl; | ||
return 0; | ||
} |