diff --git a/java-repo-tools/.travis.yml b/java-repo-tools/.travis.yml index bb7197c..d5659c5 100644 --- a/java-repo-tools/.travis.yml +++ b/java-repo-tools/.travis.yml @@ -13,11 +13,11 @@ # limitations under the License. language: java jdk: - - oraclejdk7 - - oraclejdk8 +- oraclejdk7 +- oraclejdk8 script: mvn verify after_success: - - mvn clean cobertura:cobertura coveralls:report +- bash <(curl -s https://codecov.io/bash) branches: only: - master diff --git a/java-repo-tools/README.md b/java-repo-tools/README.md index de5effc..0c172c9 100644 --- a/java-repo-tools/README.md +++ b/java-repo-tools/README.md @@ -2,6 +2,8 @@ [![Build Status](https://travis-ci.org/GoogleCloudPlatform/java-repo-tools.svg?branch=master)](https://travis-ci.org/GoogleCloudPlatform/java-repo-tools) +[![Coverage +Status](https://codecov.io/gh/GoogleCloudPlatform/java-repo-tools/branch/master/graph/badge.svg)](https://codecov.io/gh/GoogleCloudPlatform/java-repo-tools) This is a collection of common tools used to maintain and test Java repositories in the [GoogleCloudPlaftorm](https://github.com/GoogleCloudPlatform) @@ -27,34 +29,21 @@ git remote add java-repo-tools git@github.com:GoogleCloudPlatform/java-repo-tool git fetch java-repo-tools master ``` -To make it easier to push changes back upstream, create a new branch. - -``` -git checkout -b java-repo-tools java-repo-tools/master -``` - We can then go back to the `my-java-samples` code and prepare a Pull Request to -add the `java-repo-tools` code in a subtree. - -``` -git checkout master -# Making a new branch ia optional, but recommended to send a pull request to -# start using java-repo-tools. -git checkout -b use-java-repo-tools -``` - -So that we can pull future updates from the `java-repo-tools` repository, we -merge histories. This way we won't get unnecessary conflicts when pulling changes -in. +add the `java-repo-tools` code in a subtree. Making a new branch is optional, but +recommended so that you can more easily send a pull request to start using +`java-repo-tools`. ``` -git merge -s ours --no-commit java-repo-tools/master +git checkout -b use-java-repo-tools origin/master ``` -Finally, read the `java-repo-tools` into a subtree. +Finally, read the `java-repo-tools` into a subtree. So that you can pull future +updates from the `java-repo-tools` repository, this command will merge histories. +This way prevents unnecessary conflicts when pulling changes in. ``` -git read-tree --prefix=java-repo-tools/ -u java-repo-tools +git subtree add --prefix=java-repo-tools java-repo-tools master ``` Now all the content of `java-repo-tools` will be in the `java-repo-tools/` @@ -143,22 +132,14 @@ Pull Request as you would in the normal flow. What if you make changes in your repository and now want to push them upstream? Assuming you just commited changes in the `java-repo-tools/` directory of your -`my-main-branch`, to merge the changes into the local `java-repo-tools` branch, -we need to cherry pick this commit using the subtree strategy. It will ignore -any changes to file not in the `java-repo-tools/` directory. - -``` -git checkout java-repo-tools -git cherry-pick -x --strategy=subtree my-main-branch -``` - -After you have committed all the changes you want to your `java-repo-tools` -branch, you can push to the upstream `java-repo-tools` repository with the -following command. (Replace `name-for-remote-branch` with the name you'd like to -give the branch on the `java-repo-tools` repository.) +`my-main-branch`, to split the `java-repo-tools` changes into their own branch. +The first time using the `subtree` command, we may need to use the `--rejoin` +argument. ``` -git push java-repo-tools java-repo-tools:name-for-remote-branch +git subtree split --prefix=java-repo-tools -b ${USER}-push-java-repo-tools +git checkout ${USER}-push-java-repo-tools +git push java-repo-tools ${USER}-push-java-repo-tools ``` Then, you can send a pull request to the `java-repo-tools` repository. diff --git a/java-repo-tools/codecov.yml b/java-repo-tools/codecov.yml new file mode 100644 index 0000000..f5c8444 --- /dev/null +++ b/java-repo-tools/codecov.yml @@ -0,0 +1,18 @@ +# Copyright 2016 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +codecov: + branch: master +comment: + branches: + - master diff --git a/java-repo-tools/google-checks.xml b/java-repo-tools/google-checks.xml index 5f1d75b..cf6675c 100644 --- a/java-repo-tools/google-checks.xml +++ b/java-repo-tools/google-checks.xml @@ -121,13 +121,13 @@ value="Member name ''{0}'' must match pattern ''{1}''."/> - + - + @@ -213,8 +213,11 @@ + + + diff --git a/java-repo-tools/pom.xml b/java-repo-tools/pom.xml index e86bda8..48490d3 100644 --- a/java-repo-tools/pom.xml +++ b/java-repo-tools/pom.xml @@ -76,30 +76,28 @@ limitations under the License. - org.eluder.coveralls - coveralls-maven-plugin - 3.1.0 - - - ${basedir}/target/coverage.xml - - + org.codehaus.mojo + versions-maven-plugin + 2.2 - org.codehaus.mojo - cobertura-maven-plugin - 2.6 - - ${basedir}/target - - xml - html - - xml - 256m - - true - + org.jacoco + jacoco-maven-plugin + 0.7.6.201602180812 + + + + prepare-agent + + + + report + test + + report + + + diff --git a/java-repo-tools/scripts/test-localhost.sh b/java-repo-tools/scripts/test-localhost.sh new file mode 100755 index 0000000..742e0df --- /dev/null +++ b/java-repo-tools/scripts/test-localhost.sh @@ -0,0 +1,94 @@ +#!/usr/bin/env bash +# Copyright 2016 Google Inc. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Usage: +# test-localhost.sh deployment-type path/to/project -- [maven arguments] +# +# This script runs a localhost server Maven plugin and verifies that a request +# to http://localhost:8080/ does not return an error code. + +print_usage () { + echo "Usage:" >&2 + echo " $0 server-type path/to/project [-- maven arguments]" >&2 + echo >&2 + echo "server-type can be any of the following:" >&2 + echo " appengine" >&2 + echo " jetty" >&2 + echo " spring-boot" >&2 +} + +if [[ -z "$1" ]]; then + echo "Missing server-type parameter." >&2 + print_usage + exit 1 +fi +case $1 in + appengine) + mvn_plugin="appengine:devserver" + server_started_message="localhost:8080" + ;; + jetty) + mvn_plugin="jetty:run-exploded" + server_started_message="Started Jetty Server" + ;; + spring-boot) + mvn_plugin="spring-boot:run" + server_started_message="Tomcat started on port(s): 8080 (http)" + ;; + *) + print_usage + exit 1 + ;; +esac + +if [[ -z "$2" ]]; then + echo "Missing directory parameter." >&2 + print_usage + exit 1 +fi +code_path=$2 + +mvn_command="mvn --batch-mode clean ${mvn_plugin} -DskipTests" +if [[ "$3" == "--" ]]; then + shift 3 + for mvn_arg in "${@}"; do + mvn_command="${mvn_command} ${mvn_arg}" + done +elif [[ -n "$3" ]]; then + echo "Got unexpected third argument" >&2 + print_usage + exit 1 +fi + +set -e +set -x + +( +cd "$code_path" +expect -c " + spawn ${mvn_command} + set timeout 600 + expect \"${server_started_message}\" + "'sleep 10 + spawn curl --silent --output /dev/stderr --write-out "%{http_code}" http://localhost:8080/ + expect { + "200" { + exit + } + } + exit 1 + ' +) + diff --git a/java-repo-tools/test/pom.xml b/java-repo-tools/test/pom.xml index 96f42c5..0bde62c 100644 --- a/java-repo-tools/test/pom.xml +++ b/java-repo-tools/test/pom.xml @@ -41,7 +41,7 @@ limitations under the License. com.google.truth truth - 0.27 + 0.28 test diff --git a/java-repo-tools/test/src/main/java/com/google/cloud/samples/test/App.java b/java-repo-tools/test/src/main/java/com/google/cloud/samples/test/App.java index 244b150..a2e4713 100644 --- a/java-repo-tools/test/src/main/java/com/google/cloud/samples/test/App.java +++ b/java-repo-tools/test/src/main/java/com/google/cloud/samples/test/App.java @@ -20,11 +20,12 @@ * A hello world app to test the parent pom.xml. */ public class App { - public static String greeting() { + public String greeting() { return "Hello World!"; } public static void main(String[] args) { - System.out.println(App.greeting()); + App app = new App(); + System.out.println(app.greeting()); } } diff --git a/java-repo-tools/test/src/test/java/com/google/cloud/samples/test/AppTest.java b/java-repo-tools/test/src/test/java/com/google/cloud/samples/test/AppTest.java index ab7f509..3bdb86f 100644 --- a/java-repo-tools/test/src/test/java/com/google/cloud/samples/test/AppTest.java +++ b/java-repo-tools/test/src/test/java/com/google/cloud/samples/test/AppTest.java @@ -22,12 +22,21 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + /** * Unit tests for {@link App}. */ @RunWith(JUnit4.class) public class AppTest { - @Test public void greeting_returnsHelloWorld() { - assertThat(App.greeting()).named("greeting").isEqualTo("Hello World!"); + @Test public void main_printsHelloWorld() { + ByteArrayOutputStream out = new ByteArrayOutputStream(); + System.setOut(new PrintStream(out)); + + App.main(new String[0]); + + String greeting = out.toString(); + assertThat(greeting).named("greeting").contains("Hello World!"); } }