blob: e992765892406a6f74897e0320ceab40175501f3 [file] [log] [blame]
//
// ========================================================================
// Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
//
// The Eclipse Public License is available at
// http://www.eclipse.org/legal/epl-v10.html
//
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
//
// You may elect to redistribute this code under either of these licenses.
// ========================================================================
//
package org.eclipse.jetty.start;
import static org.hamcrest.Matchers.is;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jetty.toolchain.test.OS;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameter;
import org.junit.runners.Parameterized.Parameters;
@RunWith(Parameterized.class)
public class PathMatchersSearchRootTest
{
@Parameters(name="{0}")
public static List<String[]> data()
{
List<String[]> cases = new ArrayList<>();
if (OS.IS_UNIX)
{
// absolute first
cases.add(new String[]{"/opt/app/*.jar","/opt/app"});
cases.add(new String[]{"/lib/jvm/**/jre/lib/*.jar","/lib/jvm"});
cases.add(new String[]{"glob:/var/lib/*.xml","/var/lib"});
cases.add(new String[]{"glob:/var/lib/*.{xml,java}","/var/lib"});
cases.add(new String[]{"glob:/opt/corporate/lib-{dev,prod}/*.ini","/opt/corporate"});
cases.add(new String[]{"regex:/opt/jetty/.*/lib-(dev|prod)/*.ini","/opt/jetty"});
cases.add(new String[]{"/*.ini","/"});
cases.add(new String[]{"/etc/jetty.conf","/etc"});
cases.add(new String[]{"/common.conf","/"});
}
if (OS.IS_WINDOWS)
{
// absolute declaration
cases.add(new String[]{"D:\\code\\jetty\\jetty-start\\src\\test\\resources\\extra-libs\\example.jar",
"D:\\code\\jetty\\jetty-start\\src\\test\\resources\\extra-libs"});
// escaped declaration
// absolute patterns (complete with required windows slash escaping)
cases.add(new String[]{"C:\\\\corp\\\\lib\\\\*.jar","C:\\corp\\lib"});
cases.add(new String[]{"D:\\\\lib\\\\**\\\\jre\\\\lib\\\\*.jar","D:\\lib"});
}
// some relative paths
cases.add(new String[]{"lib/*.jar","lib"});
cases.add(new String[]{"etc/jetty.xml","etc"});
cases.add(new String[]{"start.ini","."});
cases.add(new String[]{"start.d/","start.d"});
return cases;
}
@Parameter(value=0)
public String pattern;
@Parameter(value=1)
public String expectedSearchRoot;
@Test
public void testSearchRoot()
{
Path actual = PathMatchers.getSearchRoot(pattern);
String expectedNormal = FS.separators(expectedSearchRoot);
Assert.assertThat(".getSearchRoot(\"" + pattern + "\")",actual.toString(),is(expectedNormal));
}
}