diff --git a/.travis.yml b/.travis.yml index e350ebca..9dd53cb4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,3 +5,6 @@ jdk: - openjdk7 - oraclejdk7 - oraclejdk8 + +after_success: + - mvn clean cobertura:cobertura coveralls:report diff --git a/phabricator-plugin.iml b/phabricator-plugin.iml index ee8e5638..ba37b2f1 100644 --- a/phabricator-plugin.iml +++ b/phabricator-plugin.iml @@ -6,6 +6,7 @@ + diff --git a/pom.xml b/pom.xml index 8d26791a..455dc026 100644 --- a/pom.xml +++ b/pom.xml @@ -55,12 +55,14 @@ cobertura 1.9.6 + net.sf.trove4j trove4j 3.0.3 jar + net.java.dev.jna jna @@ -68,6 +70,28 @@ + + + + org.eluder.coveralls + coveralls-maven-plugin + 3.1.0 + + + + org.codehaus.mojo + cobertura-maven-plugin + 2.6 + + xml + 256m + + true + + + + + scm:git:ssh://github.com/jenkinsci/phabricator-plugin.git scm:git:ssh://git@github.com/jenkinsci/phabricator-plugin.git diff --git a/src/test/java/com/uber/jenkins/phabricator/conduit/ArcanistClientTest.java b/src/test/java/com/uber/jenkins/phabricator/conduit/ArcanistClientTest.java new file mode 100644 index 00000000..e1ff2a18 --- /dev/null +++ b/src/test/java/com/uber/jenkins/phabricator/conduit/ArcanistClientTest.java @@ -0,0 +1,84 @@ +// Copyright (c) 2015 Uber Technologies, Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +package com.uber.jenkins.phabricator.conduit; + +import hudson.Launcher; +import net.sf.json.JSONException; +import net.sf.json.JSONObject; +import org.junit.Rule; +import org.junit.Test; +import org.jvnet.hudson.test.JenkinsRule; + +import java.util.HashMap; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class ArcanistClientTest { + @Rule + public JenkinsRule j = new JenkinsRule(); + + Map emptyParams = new HashMap(); + + @Test + public void testEcho() throws Exception { + ArcanistClient client = new ArcanistClient("echo", "hello", emptyParams, null); + + int result = client.callConduit(getLauncher().launch(), System.err); + assertEquals(result, 0); + } + + @Test + public void testEchoWithToken() throws Exception { + ArcanistClient client = new ArcanistClient("echo", "tokentest", emptyParams, "notarealtoken"); + + int result = client.callConduit(getLauncher().launch(), System.err); + assertEquals(result, 0); + } + + @Test + public void testParseConduit() throws Exception { + String jsonString = "{\"hello\": \"world\"}"; + ArcanistClient client = new ArcanistClient("echo", jsonString, emptyParams, null); + + JSONObject result = client.parseConduit(getLauncher().launch(), System.err); + assertTrue(result.has("hello")); + assertEquals(result.getString("hello"), "world"); + } + + @Test(expected = ArcanistUsageException.class) + public void testNonZeroExitCode() throws Exception { + ArcanistClient client = new ArcanistClient("false", "", emptyParams, null); + + client.parseConduit(getLauncher().launch(), System.err); + } + + @Test(expected = JSONException.class) + public void testNonJsonOutput() throws Exception { + ArcanistClient client = new ArcanistClient("echo", "not-json", emptyParams, null); + client.parseConduit(getLauncher().launch(), System.err); + } + + private Launcher getLauncher() { + return j.createLocalLauncher(); + } +} \ No newline at end of file