Skip to content

Commit

Permalink
Add cpp folder to tests
Browse files Browse the repository at this point in the history
  • Loading branch information
SocksDevil committed May 14, 2021
1 parent 686b657 commit c8c38f8
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,16 @@
import org.jetbrains.bsp.bazel.server.bazel.data.BazelData;
import org.jetbrains.bsp.bazel.server.bep.BepServer;
import org.jetbrains.bsp.bazel.server.bsp.config.BazelBspServerConfig;
import org.jetbrains.bsp.bazel.server.bsp.managers.BazelCppTargetManager;
import org.jetbrains.bsp.bazel.server.bsp.managers.BazelBspAspectsManager;
import org.jetbrains.bsp.bazel.server.bsp.managers.BazelBspCompilationManager;
import org.jetbrains.bsp.bazel.server.bsp.managers.BazelBspQueryManager;
import org.jetbrains.bsp.bazel.server.bsp.managers.BazelBspTargetManager;
import org.jetbrains.bsp.bazel.server.bsp.managers.BazelCppTargetManager;

public class BazelBspServerBuildManager {

public static final String BAZEL_PRINT_ASPECT = "@//.bazelbsp:aspects.bzl%print_aspect";


private final BazelBspServerConfig serverConfig;
private final BazelBspServerRequestHelpers serverRequestHelpers;
private final BazelData bazelData;
Expand All @@ -54,7 +53,8 @@ public BazelBspServerBuildManager(
this.bazelBspAspectsManager =
new BazelBspAspectsManager(bazelBspCompilationManager, bazelRunner);
this.bazelCppTargetManager = new BazelCppTargetManager(bazelBspAspectsManager);
this.bazelBspTargetManager = new BazelBspTargetManager(bazelRunner, bazelBspAspectsManager, bazelCppTargetManager);
this.bazelBspTargetManager =
new BazelBspTargetManager(bazelRunner, bazelBspAspectsManager, bazelCppTargetManager);
this.bazelBspQueryManager =
new BazelBspQueryManager(serverConfig, bazelData, bazelRunner, bazelBspTargetManager);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
package org.jetbrains.bsp.bazel.server.bsp.managers;

import ch.epfl.scala.bsp4j.WorkspaceBuildTargetsResult;
import ch.epfl.scala.bsp4j.SourceItem;
import ch.epfl.scala.bsp4j.BuildTargetIdentifier;
import ch.epfl.scala.bsp4j.BuildTarget;
import ch.epfl.scala.bsp4j.SourceItemKind;
import ch.epfl.scala.bsp4j.BuildTargetCapabilities;
import ch.epfl.scala.bsp4j.BuildTargetIdentifier;
import ch.epfl.scala.bsp4j.SourceItem;
import ch.epfl.scala.bsp4j.SourceItemKind;
import ch.epfl.scala.bsp4j.WorkspaceBuildTargetsResult;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.devtools.build.lib.query2.proto.proto2api.Build;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.TreeSet;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.eclipse.lsp4j.jsonrpc.messages.Either;
Expand All @@ -24,15 +32,6 @@
import org.jetbrains.bsp.bazel.server.bsp.config.BazelBspServerConfig;
import org.jetbrains.bsp.bazel.server.bsp.resolvers.QueryResolver;

import java.util.List;
import java.util.ArrayList;
import java.util.TreeSet;
import java.util.Set;
import java.util.Objects;
import java.util.Collection;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class BazelBspQueryManager {
private static final Logger LOGGER = LogManager.getLogger(BazelBspQueryManager.class);

Expand Down Expand Up @@ -77,11 +76,11 @@ private BuildTarget getBuildTargetForRule(Build.Rule rule) {
LOGGER.info("Getting targets for rule: " + name);

List<BuildTargetIdentifier> deps =
rule.getAttributeList().stream()
.filter(attribute -> attribute.getName().equals("deps"))
.flatMap(srcDeps -> srcDeps.getStringListValueList().stream())
.map(BuildTargetIdentifier::new)
.collect(Collectors.toList());
rule.getAttributeList().stream()
.filter(attribute -> attribute.getName().equals("deps"))
.flatMap(srcDeps -> srcDeps.getStringListValueList().stream())
.map(BuildTargetIdentifier::new)
.collect(Collectors.toList());
BuildTargetIdentifier label = new BuildTargetIdentifier(name);

List<SourceItem> sources = getSourceItems(rule, label);
Expand All @@ -91,31 +90,31 @@ private BuildTarget getBuildTargetForRule(Build.Rule rule) {
if (Constants.SCALA_EXTENSIONS.stream().anyMatch(ext -> source.getUri().endsWith(ext))) {
extensions.add(Constants.SCALA);
} else if (Constants.JAVA_EXTENSIONS.stream()
.anyMatch(ext -> source.getUri().endsWith(ext))) {
.anyMatch(ext -> source.getUri().endsWith(ext))) {
extensions.add(Constants.JAVA);
} else if (Constants.KOTLIN_EXTENSIONS.stream()
.anyMatch(ext -> source.getUri().endsWith(ext))) {
.anyMatch(ext -> source.getUri().endsWith(ext))) {
extensions.add(Constants.KOTLIN);
extensions.add(
Constants.JAVA); // TODO(andrefmrocha): Remove this when kotlin is natively supported
Constants.JAVA); // TODO(andrefmrocha): Remove this when kotlin is natively supported
} else if (Constants.CPP_EXTENSIONS.stream().anyMatch(ext -> source.getUri().endsWith(ext))) {
extensions.add(Constants.CPP);
}
}

String ruleClass = rule.getRuleClass();
BuildTarget target =
new BuildTarget(
label,
new ArrayList<>(),
new ArrayList<>(extensions),
deps,
new BuildTargetCapabilities(
true,
ruleClass.endsWith("_" + Constants.TEST_RULE_TYPE),
ruleClass.endsWith("_" + Constants.BINARY_RULE_TYPE)));
new BuildTarget(
label,
new ArrayList<>(),
new ArrayList<>(extensions),
deps,
new BuildTargetCapabilities(
true,
ruleClass.endsWith("_" + Constants.TEST_RULE_TYPE),
ruleClass.endsWith("_" + Constants.BINARY_RULE_TYPE)));
target.setBaseDirectory(
Uri.packageDirFromLabel(label.getUri(), bazelData.getWorkspaceRoot()).toString());
Uri.packageDirFromLabel(label.getUri(), bazelData.getWorkspaceRoot()).toString());
target.setDisplayName(label.getUri());
bazelBspTargetManager.fillTargetData(target, extensions, ruleClass, rule);
return target;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,7 @@ public void fillTargetData(
.ifPresent(
(buildTarget) -> {
target.setDataKind(BuildTargetDataKind.SCALA);
target.setTags(
Lists.newArrayList(BuildManagerParsingUtils.getRuleType(ruleClass)));
target.setTags(Lists.newArrayList(BuildManagerParsingUtils.getRuleType(ruleClass)));
target.setData(buildTarget);
});
} else if (extensions.contains(Constants.JAVA) || extensions.contains(Constants.KOTLIN)) {
Expand All @@ -57,8 +56,7 @@ public void fillTargetData(
.ifPresent(
buildTarget -> {
target.setDataKind(BuildTargetDataKind.CPP);
target.setTags(
Lists.newArrayList(BuildManagerParsingUtils.getRuleType(ruleClass)));
target.setTags(Lists.newArrayList(BuildManagerParsingUtils.getRuleType(ruleClass)));
target.setData(buildTarget);
});
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package org.jetbrains.bsp.bazel.server.bsp.managers;

import ch.epfl.scala.bsp4j.CppBuildTarget;
import org.jetbrains.bsp.bazel.commons.Lazy;

import java.util.List;
import java.util.Optional;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import org.jetbrains.bsp.bazel.commons.Lazy;

public class BazelCppTargetManager extends Lazy<CppBuildTarget> {
private static final String BAZEL_CPP_TOOLCHAIN = "@bazel_tools//tools/cpp:toolchain";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,20 @@
package org.jetbrains.bsp.bazel.server.bsp.services;


import ch.epfl.scala.bsp4j.BuildTargetIdentifier;
import ch.epfl.scala.bsp4j.CppOptionsItem;
import ch.epfl.scala.bsp4j.CppOptionsParams;
import ch.epfl.scala.bsp4j.CppOptionsResult;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import org.eclipse.lsp4j.jsonrpc.messages.Either;
import org.eclipse.lsp4j.jsonrpc.messages.ResponseError;
import org.jetbrains.bsp.bazel.server.bazel.BazelRunner;
import org.jetbrains.bsp.bazel.server.bazel.params.BazelRunnerFlag;
import org.jetbrains.bsp.bazel.server.bsp.managers.BazelBspAspectsManager;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class CppBuildServerService {
public static final int COPTS_LOCATION = 0;

This comment has been minimized.

Copy link
@SocksDevil

SocksDevil May 18, 2021

Author Contributor

My mistake, fixed!

public static final int DEFINES_LOCATION = 1;
Expand Down
6 changes: 3 additions & 3 deletions test-resources/cpp-project/example/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@ load("@rules_cc//cc:defs.bzl", "cc_binary")
cc_binary(
name = "example",
srcs = ["main.cpp"],
deps = [
"@com_google_googletest//:gtest_main",
],
copts = [
"-Iexternal/gtest/include",
],
Expand All @@ -15,4 +12,7 @@ cc_binary(
linkopts = [
"-pthread",
],
deps = [
"@com_google_googletest//:gtest_main",
],
)
2 changes: 1 addition & 1 deletion test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
NC='\033[0m'
GREEN='\033[0;32m'
RED='\033[0;31m'
TEST_PROJECTS=("sample-repo" "action-graph-v2" "java-8-project" "java-11-project" "java-default-project")
TEST_PROJECTS=("sample-repo" "action-graph-v2" "java-8-project" "java-11-project" "java-default-project" "cpp-project")

log_test_progress() {
echo -e "\n[TEST] $*"
Expand Down

2 comments on commit c8c38f8

@SocksDevil
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

src/main/java/org/jetbrains/bsp/bazel/server/bsp/services/CppBuildServerService.java:64
Thanks for noticing, done

@SocksDevil
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

src/main/java/org/jetbrains/bsp/bazel/server/bsp/services/CppBuildServerService.java:74
Done!

Please sign in to comment.