/* Copyright (c) 2014 Boundless and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Distribution License v1.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/org/documents/edl-v10.html * * Contributors: * Victor Olaya (Boundless) - initial implementation */ package org.locationtech.geogig.cli.test; import static org.junit.Assert.assertTrue; import static org.locationtech.geogig.cli.test.functional.general.GlobalState.geogigCLI; import static org.locationtech.geogig.cli.test.functional.general.GlobalState.insert; import static org.locationtech.geogig.cli.test.functional.general.GlobalState.platform; import static org.locationtech.geogig.cli.test.functional.general.GlobalState.setupGeogig; import static org.locationtech.geogig.cli.test.functional.general.GlobalState.tempFolder; import static org.locationtech.geogig.cli.test.functional.general.TestFeatures.points1; import static org.locationtech.geogig.cli.test.functional.general.TestFeatures.points1_modified; import static org.locationtech.geogig.cli.test.functional.general.TestFeatures.points2; import static org.locationtech.geogig.cli.test.functional.general.TestFeatures.points3; import static org.locationtech.geogig.cli.test.functional.general.TestFeatures.setupFeatures; import java.io.File; import java.io.IOException; import org.junit.Before; import org.junit.Test; import org.junit.rules.TemporaryFolder; import org.locationtech.geogig.api.GlobalContextBuilder; import org.locationtech.geogig.api.TestPlatform; import org.locationtech.geogig.api.porcelain.AddOp; import org.locationtech.geogig.api.porcelain.CommitOp; import org.locationtech.geogig.cli.GeogigPy4JEntryPoint; import org.locationtech.geogig.cli.test.functional.general.CLITestContextBuilder; import org.locationtech.geogig.cli.test.functional.general.GlobalState; import py4j.GatewayServer; public class GeogigPy4JEntryPointTest { @Before public void setUpDirectories() throws IOException { tempFolder = new TemporaryFolder(); tempFolder.create(); File homeDirectory = tempFolder.newFolder("fakeHomeDir").getCanonicalFile(); File currentDirectory = tempFolder.newFolder("testrepo").getCanonicalFile(); GlobalState.platform = new TestPlatform(currentDirectory, homeDirectory); GlobalContextBuilder.builder = new CLITestContextBuilder(platform); } @Test public void testPy4JentryPoint() throws Exception { setupGeogig(); setupFeatures(); String repoFolder = platform.pwd().getAbsolutePath(); GeogigPy4JEntryPoint py4j = new GeogigPy4JEntryPoint(); GatewayServer gatewayServer = new GatewayServer(py4j); gatewayServer.start(); py4j.runCommand(repoFolder, new String[] { "init" }); py4j.runCommand(repoFolder, "config user.name name".split(" ")); py4j.runCommand(repoFolder, "config user.email email@email.com".split(" ")); insert(points1); insert(points2); insert(points3); geogigCLI.getGeogig().command(AddOp.class).call(); geogigCLI.getGeogig().command(CommitOp.class).setMessage("message").call(); py4j.runCommand(repoFolder, new String[] { "log" }); String output = py4j.nextOutputPage(); assertTrue(output.contains("message")); assertTrue(output.contains("name")); assertTrue(output.contains("email@email.com")); insert(points1_modified); py4j.runCommand(repoFolder, new String[] { "add" }); py4j.runCommand(repoFolder, new String[] { "commit", "-m", "a commit message" }); py4j.runCommand(repoFolder, new String[] { "log" }); output = py4j.nextOutputPage(); System.out.println(output); assertTrue(output.contains("a commit message")); gatewayServer.shutdown(); } }