Skip to content
This repository has been archived by the owner on Feb 12, 2022. It is now read-only.

Added negative project import tests #64

Merged
merged 11 commits into from
May 21, 2020
5 changes: 1 addition & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,7 @@ eclipse.sh
.DS_Store

# Bazel build result
**/bazel-bazel-ls-demo-project
**/bazel-bin
**/bazel-out
**/bazel-testlogs
**/bazel-*

# Checkstyle files
*.checkstyle
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
load("@rules_java//java:defs.bzl", "java_binary")

java_binary(
name = "ProjectRunner",
srcs = glob(["*.java"]),
main_class = "com.example.ProjectRunner",
deps = [":greeter"],
)

java_library(
name = "greeter",
srcs = ["Greeting.java"],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.example;

public class Greeting {
public static void sayHi() {
System.out.println("Hi!");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.example;

public class ProjectRunner {
public static void main(String args[]) {
Greeting.sayHi();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
workspace(name = "bazel_ls_demo_project")

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

# bazel-skylib 0.8.0 released 2019.03.20 (https://github.com/bazelbuild/bazel-skylib/releases/tag/0.8.0)
skylib_version = "0.8.0"
http_archive(
name = "bazel_skylib",
type = "tar.gz",
url = "https://github.com/bazelbuild/bazel-skylib/releases/download/{}/bazel-skylib.{}.tar.gz".format (skylib_version, skylib_version),
sha256 = "2ef429f5d7ce7111263289644d233707dba35e39696377ebab8b0bc701f7818e",
)

# check minimum Bazel version
load("@bazel_skylib//lib:versions.bzl", "versions")
versions.check(minimum_bazel_version= "2.0.0")

http_archive(
name = "salesforce_rules_mybuilder",
url = "https://github.com/salesforce/bazel-java-builder-template/archive/ea683699c346a0b75960dd3bb02aa21fc910fdb4.zip",
strip_prefix = "bazel-java-builder-template-ea683699c346a0b75960dd3bb02aa21fc910fdb4"
)
load("@salesforce_rules_mybuilder//mybuilder:repositories.bzl", "rules_mybuilder_dependencies", "rules_mybuilder_toolchains")
rules_mybuilder_dependencies()
rules_mybuilder_toolchains()

# Maven dependencies
load("//third_party/maven:dependencies.bzl", "maven_dependencies")
maven_dependencies()

Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
load("@rules_java//java:defs.bzl", "java_binary")
load("@salesforce_rules_mybuilder//mybuilder:defs.bzl", "mybuilder_gen")
beginningineer marked this conversation as resolved.
Show resolved Hide resolved

mybuilder_gen(
name = "mybuilder_sample_generation",
srcs = glob(
["java/resources/**/*.txt"],
),
srcjar = "mybuilder_generated.srcjar",
gendir = "mybuilder_generated",
)

java_binary(
name = "module1",
srcs = glob(["java/src/**/*.java"]) + [":mybuilder_sample_generation"],
resources = glob(
["java/resources/**/*.txt"],
),
deps = [
"//module2",
"//module3",
"@com_google_guava//jar",
],
main_class = "hello.Hello",
)
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Hi there!
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package hello;

import library.Greeting;

import log.Logger;

import java.util.List;

import com.google.common.collect.Lists;
import com.google.common.collect.Iterables;



public class Hello {


public static void main(String[] args) {
Logger.logDebug("Hello.main");

Greeting greeter = new Greeting();
System.out.println(new mybuilder_sample_generation.MybuilderSampleGeneration());

List<String> modules = Lists.newArrayList("module1", "module2");

Iterable<String> result = Iterables.transform(modules, greeter::greet);

result.forEach(System.out::println);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
load("@rules_java//java:defs.bzl", "java_library")

java_library(
name = "module4",
srcs = glob(["java/src/**/*.java"]),
visibility = ["//visibility:public"],
deps = [
"//module3",
],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package sayhi;

import log.Logger;

public class SayHi {

public static void sayHi() {
Logger.logDebug("SayHi.sayHi");
System.out.println("Hi!");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
load("@rules_java//java:defs.bzl", "java_library")

java_library (
name = "module2",
srcs = glob(["java/src/**/*.java"]),
visibility = ["//module1:__pkg__"],
deps = [
"//module3"
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package library;

import log.Logger;

public class Greeting {

public String greet(String name) {
Logger.logDebug("Greeting.greet");
return "Hello ".concat(name);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
load("@rules_java//java:defs.bzl", "java_library")

java_library (
name = "module3",
srcs = glob(["java/src/**/*.java"]),
visibility = ["//visibility:public"],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package log;

import java.time.Instant;

public final class Logger {

private Logger() {
throw new RuntimeException();
}

public static void logDebug(String message) {
String output = String.format("[DEBUG] %s", message);
System.out.println(output);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
load("@bazel_tools//tools/build_defs/repo:jvm.bzl", "jvm_maven_import_external")

def maven_dependencies(
maven_servers = ["https://repo1.maven.org/maven2/"]):

jvm_maven_import_external(
name = "com_google_guava",
artifact = "com.google.guava:guava:28.2-jre",
artifact_sha256 = "fc3aa363ad87223d1fbea584eee015a862150f6d34c71f24dc74088a635f08ef",
licenses = ["notice"],
server_urls = maven_servers,
)

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
load("@rules_java//java:defs.bzl", "java_binary")

java_binary(
name = "ProjectRunner",
srcs = glob(["src/main/java/com/example/ProjectRunner.java"]),
main_class = "com.example.ProjectRunner",
deps = [":greeter"],
)

java_library(
name = "greeter",
srcs = ["src/main/java/com/example/Greeting.java"],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.example;

public class Greeting {
public static void sayHi() {
System.out.println("Hi!");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package com.example;

public class ProjectRunner {
public static void main(String args[]) {
Greeting.sayHi();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ public void testGetProject() {
BazelNature nature = new BazelNature();
IProject actual = nature.getProject();
assertEquals(actual, expected);
System.out.println(nature);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -23,58 +23,52 @@
*
*/

package com.salesforce.b2eclipse;
package com.salesforce.b2eclipse.importer;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

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

import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.IWorkspaceRoot;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin;
import org.eclipse.jdt.ls.core.internal.preferences.PreferenceManager;
import org.eclipse.jdt.ls.core.internal.preferences.Preferences;
import org.junit.Before;
import org.junit.Test;

import com.salesforce.b2eclipse.config.BazelEclipseProjectFactory;
import com.salesforce.b2eclipse.importer.BazelProjectImportScanner;
import com.salesforce.b2eclipse.model.BazelPackageInfo;
import com.salesforce.b2eclipse.runtime.impl.EclipseWorkProgressMonitor;

/**
* An abstract class for importing a Bazel project.
*/
@SuppressWarnings("restriction")
public class BazelImportTest {
public abstract class BaseBazelImproterTest {
Copy link
Contributor

Choose a reason for hiding this comment

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

typo BaseBazelImpROterTest


private static final String BAZEL_SRC_PATH = "java.import.bazel.src.path";

private static final String BAZEL_SRC_PATH_VALUE = "/java/src";

private BazelPackageInfo workspaceRootPackage;
private IWorkspaceRoot workspaceRoot;
private BazelProjectImportScanner scanner;

public BazelImportTest() {
public BaseBazelImproterTest() {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
this.workspaceRoot = workspace.getRoot();
scanner = new BazelProjectImportScanner();
}

@Before
public void setup() {
protected void importProject() {
PreferenceManager manager = new PreferenceManager();
Map<String, Object> settings = new HashMap<>();
settings.put(BAZEL_SRC_PATH, BAZEL_SRC_PATH_VALUE);
Preferences pref = Preferences.createFrom(settings);
manager.update(pref);
JavaLanguageServerPlugin.setPreferencesManager(manager);
BazelProjectImportScanner scanner = new BazelProjectImportScanner();
BazelPackageInfo workspaceRootPackage = scanner.getProjects("projects/bazel-ls-demo-project");

List<BazelPackageInfo> bazelPackagesToImport =
workspaceRootPackage.getChildPackageInfos().stream().collect(Collectors.toList());
Expand All @@ -83,20 +77,28 @@ public void setup() {
new EclipseWorkProgressMonitor(), new NullProgressMonitor());
}

@Test
public void testImport() throws CoreException {
IProject module1Proj = workspaceRoot.getProject("module1");
IProject module2Proj = workspaceRoot.getProject("module2");
IProject module3Proj = workspaceRoot.getProject("module3");
public BazelPackageInfo getWorkspaceRootPackage() {
return workspaceRootPackage;
}

public void setWorkspaceRootPackage(BazelPackageInfo workspaceRootPackage) {
this.workspaceRootPackage = workspaceRootPackage;
}

IProject[] referencedProjects = module1Proj.getReferencedProjects();
public IWorkspaceRoot getWorkspaceRoot() {
return workspaceRoot;
}

assertEquals(2, referencedProjects.length);
public void setWorkspaceRoot(IWorkspaceRoot workspaceRoot) {
this.workspaceRoot = workspaceRoot;
}

assertNotNull("Didn't find module2 in the referenced projects list",
Arrays.stream(referencedProjects).anyMatch(proj -> proj.equals(module2Proj)));
public BazelProjectImportScanner getScanner() {
return scanner;
}

assertNotNull("Didn't find module3 in the referenced projects list",
Arrays.stream(referencedProjects).anyMatch(proj -> proj.equals(module3Proj)));
public void setScanner(BazelProjectImportScanner scanner) {
this.scanner = scanner;
}

}
Loading