/tmp is a symbolic link and some tests break when the path gets canonicalized by JGit or Jetty. Allow Jetty to serve symlinks by setting init parameter "aliases" to true [1]. [1] http://wiki.eclipse.org/Jetty/Howto/How_to_serve_symbolically_linked_files Change-Id: I45359a40435e8a33def6e0bb6784b4d8637793ac Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>tags/v3.0.2.201309041250-rc2
import org.eclipse.jetty.servlet.DefaultServlet; | import org.eclipse.jetty.servlet.DefaultServlet; | ||||
import org.eclipse.jetty.servlet.ServletContextHandler; | import org.eclipse.jetty.servlet.ServletContextHandler; | ||||
import org.eclipse.jetty.servlet.ServletHolder; | |||||
import org.eclipse.jgit.errors.NotSupportedException; | import org.eclipse.jgit.errors.NotSupportedException; | ||||
import org.eclipse.jgit.junit.TestRepository; | import org.eclipse.jgit.junit.TestRepository; | ||||
import org.eclipse.jgit.junit.http.AccessEvent; | import org.eclipse.jgit.junit.http.AccessEvent; | ||||
ServletContextHandler app = server.addContext("/git"); | ServletContextHandler app = server.addContext("/git"); | ||||
app.setResourceBase(base.toString()); | app.setResourceBase(base.toString()); | ||||
app.addServlet(DefaultServlet.class, "/"); | |||||
ServletHolder holder = app.addServlet(DefaultServlet.class, "/"); | |||||
// The tmp directory is symlinked on OS X | |||||
holder.setInitParameter("aliases", "true"); | |||||
server.setUp(); | server.setUp(); | ||||
remoteRepository = src.getRepository(); | remoteRepository = src.getRepository(); |
ServletHolder s = app.addServlet(GitServlet.class, "/git"); | ServletHolder s = app.addServlet(GitServlet.class, "/git"); | ||||
s.setInitOrder(1); | s.setInitOrder(1); | ||||
s.getServletHandler().setStartWithUnavailable(false); | s.getServletHandler().setStartWithUnavailable(false); | ||||
// The tmp directory is symlinked on OS X | |||||
s.setInitParameter("aliases", "true"); | |||||
try { | try { | ||||
server.setUp(); | server.setUp(); | ||||
s.setInitOrder(1); | s.setInitOrder(1); | ||||
s.setInitParameter("base-path", "."); | s.setInitParameter("base-path", "."); | ||||
s.setInitParameter("export-all", "true"); | s.setInitParameter("export-all", "true"); | ||||
// The tmp directory is symlinked on OS X | |||||
s.setInitParameter("aliases", "true"); | |||||
server.setUp(); | server.setUp(); | ||||
assertTrue("no warnings", RecordingLogger.getWarnings().isEmpty()); | assertTrue("no warnings", RecordingLogger.getWarnings().isEmpty()); |
ServletContextHandler ctx = server.addContext(path); | ServletContextHandler ctx = server.addContext(path); | ||||
ctx.setResourceBase(base.toString()); | ctx.setResourceBase(base.toString()); | ||||
ctx.addServlet(DefaultServlet.class, "/"); | |||||
ServletHolder holder = ctx.addServlet(DefaultServlet.class, "/"); | |||||
// The tmp directory is symlinked on OS X | |||||
holder.setInitParameter("aliases", "true"); | |||||
return ctx; | return ctx; | ||||
} | } | ||||
builder.setMustExist(true); | builder.setMustExist(true); | ||||
Repository repo2 = builder.build(); | Repository repo2 = builder.build(); | ||||
assertEquals(repo1.getDirectory(), repo2.getDirectory()); | |||||
// The tmp directory may be a symlink so the actual path | |||||
// may not | |||||
assertEquals(repo1.getDirectory().getCanonicalPath(), repo2 | |||||
.getDirectory().getCanonicalPath()); | |||||
assertEquals(dir, repo2.getWorkTree()); | assertEquals(dir, repo2.getWorkTree()); | ||||
} | } | ||||
builder.setMustExist(true); | builder.setMustExist(true); | ||||
Repository repo2 = builder.build(); | Repository repo2 = builder.build(); | ||||
assertEquals(repo1.getDirectory(), repo2.getDirectory()); | |||||
// The tmp directory may be a symlink | |||||
assertEquals(repo1.getDirectory().getCanonicalPath(), repo2 | |||||
.getDirectory().getCanonicalPath()); | |||||
assertEquals(dir, repo2.getWorkTree()); | assertEquals(dir, repo2.getWorkTree()); | ||||
} | } | ||||
} | } |