diff --git a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/WebAppProviderTest.java b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/WebAppProviderTest.java index 7eedb809a76..5184598d62b 100644 --- a/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/WebAppProviderTest.java +++ b/jetty-deploy/src/test/java/org/eclipse/jetty/deploy/providers/WebAppProviderTest.java @@ -18,23 +18,33 @@ package org.eclipse.jetty.deploy.providers; +import static org.junit.Assert.assertTrue; +import static org.junit.Assume.assumeTrue; + import java.io.File; +import java.nio.file.FileSystemException; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.Arrays; import org.eclipse.jetty.deploy.test.XmlConfiguredJetty; +import org.eclipse.jetty.toolchain.test.MavenTestingUtils; import org.eclipse.jetty.toolchain.test.TestingDir; import org.junit.After; import org.junit.Assert; import org.junit.Before; +import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; +@Ignore("See issue #1200") public class WebAppProviderTest { @Rule public TestingDir testdir = new TestingDir(); private static XmlConfiguredJetty jetty; - + private boolean symlinkSupported = false; + @Before public void setupEnvironment() throws Exception { @@ -45,6 +55,20 @@ public class WebAppProviderTest // Setup initial context jetty.copyWebapp("foo-webapp-1.war","foo.war"); + + // Make symlink + Path pathWar3 = MavenTestingUtils.getTestResourcePathFile("webapps/foo-webapp-3.war"); + Path pathBar = jetty.getJettyDir("webapps/bar.war").toPath(); + try + { + Files.createSymbolicLink(pathBar, pathWar3); + symlinkSupported = true; + } catch (UnsupportedOperationException | FileSystemException e) + { + // if unable to create symlink, no point testing that feature + // this is the path that Microsoft Windows takes. + symlinkSupported = false; + } // Should not throw an Exception jetty.load(); @@ -64,18 +88,34 @@ public class WebAppProviderTest public void testStartupContext() { // Check Server for Handlers - jetty.assertWebAppContextsExists("/foo"); + jetty.assertWebAppContextsExists("/bar", "/foo"); File workDir = jetty.getJettyDir("workish"); - System.err.println("workDir="+workDir); - // Test for regressions assertDirNotExists("root of work directory",workDir,"webinf"); assertDirNotExists("root of work directory",workDir,"jsp"); // Test for correct behaviour - Assert.assertTrue("Should have generated directory in work directory: " + workDir,hasJettyGeneratedPath(workDir,"foo.war")); + assertTrue("Should have generated directory in work directory: " + workDir,hasJettyGeneratedPath(workDir,"foo.war")); + } + + @Test + public void testStartupSymlinkContext() + { + assumeTrue(symlinkSupported); + + // Check for path + File barLink = jetty.getJettyDir("webapps/bar.war"); + assertTrue("bar.war link exists: " + barLink.toString(), barLink.exists()); + assertTrue("bar.war link isFile: " + barLink.toString(), barLink.isFile()); + + // Check Server for expected Handlers + jetty.assertWebAppContextsExists("/bar", "/foo"); + + // Test for expected work/temp directory behaviour + File workDir = jetty.getJettyDir("workish"); + assertTrue("Should have generated directory in work directory: " + workDir,hasJettyGeneratedPath(workDir,"bar.war")); } private static boolean hasJettyGeneratedPath(File basedir, String expectedWarFilename)