diff options
author | Damien Martin-Guillerez <dmarting@google.com> | 2015-03-24 09:05:08 +0000 |
---|---|---|
committer | Han-Wen Nienhuys <hanwen@google.com> | 2015-03-24 16:41:48 +0000 |
commit | adeef73a97cf191301a7b563883a075caed733b7 (patch) | |
tree | c06734cbffa4160b156779da7c87dbf5cc2b6f94 /examples/java-skylark/src | |
parent | 5247ff53465afc6ad9db889d1ec3f106ec09a3d6 (diff) |
Move all examples into Bazel workspace
Those examples will be used for Bazel integration tests and their
sources should be available directly to the Bazel workspace itself.
--
MOS_MIGRATED_REVID=89380736
Diffstat (limited to 'examples/java-skylark/src')
7 files changed, 131 insertions, 0 deletions
diff --git a/examples/java-skylark/src/main/java/com/example/myproject/BUILD b/examples/java-skylark/src/main/java/com/example/myproject/BUILD new file mode 100644 index 0000000000..10ca2d440d --- /dev/null +++ b/examples/java-skylark/src/main/java/com/example/myproject/BUILD @@ -0,0 +1,21 @@ +load("/tools/build_rules/java_rules_skylark", "java_library", "java_binary", "java_test") + +package(default_visibility = ["//visibility:public"]) + +java_binary( + name = "hello-world", + srcs = ["Greeter.java"], + main_class = "com.example.myproject.Greeter", +) + +java_binary( + name = "hello-data", + main_class = "com.example.myproject.Greeter", + deps = [":hello-lib"], +) + +java_library( + name = "hello-lib", + srcs = ["Greeter.java"], + data = ["//examples/java-skylark/src/main/resources:greeting"], +) diff --git a/examples/java-skylark/src/main/java/com/example/myproject/Greeter.java b/examples/java-skylark/src/main/java/com/example/myproject/Greeter.java new file mode 100644 index 0000000000..b4d8516dc9 --- /dev/null +++ b/examples/java-skylark/src/main/java/com/example/myproject/Greeter.java @@ -0,0 +1,45 @@ +package com.example.myproject; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.io.PrintStream; +import java.util.Scanner; + +/** + * Prints a greeting which can be customized by building with data and/or passing in command- + * line arguments. + */ +public class Greeter { + static PrintStream out = System.out; + + public static String getRunfiles() { + String path = System.getenv("JAVA_RUNFILES"); + if (path == null) { + path = System.getenv("TEST_SRCDIR"); + } + return path; + } + + public static String convertStreamToString(InputStream is) throws Exception { + Scanner s = new Scanner(is).useDelimiter("\n"); + return s.hasNext() ? s.next() : ""; + } + + public void hello(String obj) throws Exception { + String greeting = "Hello"; + try { + String greetFile = getRunfiles() + "/examples/java-skylark/src/main/resources/greeting.txt"; + greeting = convertStreamToString(new FileInputStream(greetFile)); + } catch (FileNotFoundException e) { + // use default. + } + out.println(greeting + " " + obj); + } + + public static void main(String... args) throws Exception { + Greeter g = new Greeter(); + String obj = args.length > 0 ? args[0] : "world"; + g.hello(obj); + } +}; diff --git a/examples/java-skylark/src/main/resources/BUILD b/examples/java-skylark/src/main/resources/BUILD new file mode 100644 index 0000000000..8347a3555a --- /dev/null +++ b/examples/java-skylark/src/main/resources/BUILD @@ -0,0 +1,6 @@ +package(default_visibility = ["//visibility:public"]) + +filegroup( + name = "greeting", + srcs = ["greeting.txt"], +) diff --git a/examples/java-skylark/src/main/resources/greeting.txt b/examples/java-skylark/src/main/resources/greeting.txt new file mode 100644 index 0000000000..17654db5a1 --- /dev/null +++ b/examples/java-skylark/src/main/resources/greeting.txt @@ -0,0 +1 @@ +Heyo diff --git a/examples/java-skylark/src/test/java/com/example/myproject/BUILD b/examples/java-skylark/src/test/java/com/example/myproject/BUILD new file mode 100644 index 0000000000..36c4cc3a67 --- /dev/null +++ b/examples/java-skylark/src/test/java/com/example/myproject/BUILD @@ -0,0 +1,16 @@ +load("/tools/build_rules/java_rules_skylark", "java_test") + +java_test( + name = "pass", + srcs = ["TestHello.java"], + deps = [ + "//examples/java-skylark/src/main/java/com/example/myproject:hello-lib", + "//third_party:junit4-skylark", + ], +) + +java_test( + name = "fail", + srcs = ["Fail.java"], + main_class = "com.example.myproject.Fail", +) diff --git a/examples/java-skylark/src/test/java/com/example/myproject/Fail.java b/examples/java-skylark/src/test/java/com/example/myproject/Fail.java new file mode 100644 index 0000000000..079e1e9f04 --- /dev/null +++ b/examples/java-skylark/src/test/java/com/example/myproject/Fail.java @@ -0,0 +1,7 @@ +package com.example.myproject; + +class Fail { + public static void main(String []args) { + System.exit(1); + } +} diff --git a/examples/java-skylark/src/test/java/com/example/myproject/TestHello.java b/examples/java-skylark/src/test/java/com/example/myproject/TestHello.java new file mode 100644 index 0000000000..d50e6e503f --- /dev/null +++ b/examples/java-skylark/src/test/java/com/example/myproject/TestHello.java @@ -0,0 +1,35 @@ +package com.example.myproject; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.nio.charset.StandardCharsets; + +/** + * Tests different numbers of arguments to main(). + * + * <p>With an empty args array, {@link Greeter} should print "Hello world". If there are one or more + * args, {@link Greeter} should print "Hello <arg[0]>".</p> + */ +public class TestHello { + + @Test + public void testNoArgument() throws Exception { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + Greeter.out = new PrintStream(out); + Greeter.main(); + assertEquals("Hello world\n", new String(out.toByteArray(), StandardCharsets.UTF_8)); + } + + @Test + public void testWithArgument() throws Exception { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + Greeter.out = new PrintStream(out); + Greeter.main("toto"); + assertEquals("Hello toto\n", new String(out.toByteArray(), StandardCharsets.UTF_8)); + } + +} |