Merge branch 'stable-4.9'
* stable-4.9: Avoid bad rounding "1 year, 12 months" in date formatter Ensure that ~ in ssh config is replaced before Jsch sees it Change-Id: If6ca55f9447aaea3d7c2d36c03520d5e6dd5193e Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
This commit is contained in:
commit
f89101105e
|
@ -323,11 +323,12 @@ public void testListValueSingle() throws Exception {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testListValueMultiple() throws Exception {
|
public void testListValueMultiple() throws Exception {
|
||||||
// Tilde expansion doesn't occur within the parser
|
// Tilde expansion occurs within the parser
|
||||||
config("Host orcz\nUserKnownHostsFile \"~/foo/ba z\" /foo/bar \n");
|
config("Host orcz\nUserKnownHostsFile \"~/foo/ba z\" /foo/bar \n");
|
||||||
final ConfigRepository.Config c = osc.getConfig("orcz");
|
final ConfigRepository.Config c = osc.getConfig("orcz");
|
||||||
assertNotNull(c);
|
assertNotNull(c);
|
||||||
assertArrayEquals(new Object[] { "~/foo/ba z", "/foo/bar" },
|
assertArrayEquals(new Object[] { new File(home, "foo/ba z").getPath(),
|
||||||
|
"/foo/bar" },
|
||||||
c.getValues("UserKnownHostsFile"));
|
c.getValues("UserKnownHostsFile"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,8 +372,9 @@ public void testIdentityFile() throws Exception {
|
||||||
// Host does tilde replacement
|
// Host does tilde replacement
|
||||||
assertEquals(new File(home, "foo/ba z"), f);
|
assertEquals(new File(home, "foo/ba z"), f);
|
||||||
final ConfigRepository.Config c = h.getConfig();
|
final ConfigRepository.Config c = h.getConfig();
|
||||||
// Config doesn't
|
// Config does tilde replacement, too
|
||||||
assertArrayEquals(new Object[] { "~/foo/ba z", "/foo/bar" },
|
assertArrayEquals(new Object[] { new File(home, "foo/ba z").getPath(),
|
||||||
|
"/foo/bar" },
|
||||||
c.getValues("IdentityFile"));
|
c.getValues("IdentityFile"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -386,8 +388,9 @@ public void testMultiIdentityFile() throws Exception {
|
||||||
// Host does tilde replacement
|
// Host does tilde replacement
|
||||||
assertEquals(new File(home, "foo/ba z"), f);
|
assertEquals(new File(home, "foo/ba z"), f);
|
||||||
final ConfigRepository.Config c = h.getConfig();
|
final ConfigRepository.Config c = h.getConfig();
|
||||||
// Config doesn't
|
// Config does tilde replacement, too
|
||||||
assertArrayEquals(new Object[] { "~/foo/ba z", "/foo/bar", "/foo/baz" },
|
assertArrayEquals(new Object[] { new File(home, "foo/ba z").getPath(),
|
||||||
|
"/foo/bar", "/foo/baz" },
|
||||||
c.getValues("IdentityFile"));
|
c.getValues("IdentityFile"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -397,7 +400,7 @@ public void testNegatedPattern() throws Exception {
|
||||||
final Host h = osc.lookup("repo.or.cz");
|
final Host h = osc.lookup("repo.or.cz");
|
||||||
assertNotNull(h);
|
assertNotNull(h);
|
||||||
assertEquals(new File(home, "foo/bar"), h.getIdentityFile());
|
assertEquals(new File(home, "foo/bar"), h.getIdentityFile());
|
||||||
assertArrayEquals(new Object[] { "~/foo/bar" },
|
assertArrayEquals(new Object[] { new File(home, "foo/bar").getPath() },
|
||||||
h.getConfig().getValues("IdentityFile"));
|
h.getConfig().getValues("IdentityFile"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -407,7 +410,8 @@ public void testPattern() throws Exception {
|
||||||
final Host h = osc.lookup("repo.or.cz");
|
final Host h = osc.lookup("repo.or.cz");
|
||||||
assertNotNull(h);
|
assertNotNull(h);
|
||||||
assertEquals(new File(home, "foo/bar"), h.getIdentityFile());
|
assertEquals(new File(home, "foo/bar"), h.getIdentityFile());
|
||||||
assertArrayEquals(new Object[] { "~/foo/bar", "/foo/baz" },
|
assertArrayEquals(new Object[] { new File(home, "foo/bar").getPath(),
|
||||||
|
"/foo/baz" },
|
||||||
h.getConfig().getValues("IdentityFile"));
|
h.getConfig().getValues("IdentityFile"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -417,12 +421,13 @@ public void testMultiHost() throws Exception {
|
||||||
final Host h1 = osc.lookup("repo.or.cz");
|
final Host h1 = osc.lookup("repo.or.cz");
|
||||||
assertNotNull(h1);
|
assertNotNull(h1);
|
||||||
assertEquals(new File(home, "foo/bar"), h1.getIdentityFile());
|
assertEquals(new File(home, "foo/bar"), h1.getIdentityFile());
|
||||||
assertArrayEquals(new Object[] { "~/foo/bar", "/foo/baz" },
|
assertArrayEquals(new Object[] { new File(home, "foo/bar").getPath(),
|
||||||
|
"/foo/baz" },
|
||||||
h1.getConfig().getValues("IdentityFile"));
|
h1.getConfig().getValues("IdentityFile"));
|
||||||
final Host h2 = osc.lookup("orcz");
|
final Host h2 = osc.lookup("orcz");
|
||||||
assertNotNull(h2);
|
assertNotNull(h2);
|
||||||
assertEquals(new File(home, "foo/bar"), h2.getIdentityFile());
|
assertEquals(new File(home, "foo/bar"), h2.getIdentityFile());
|
||||||
assertArrayEquals(new Object[] { "~/foo/bar" },
|
assertArrayEquals(new Object[] { new File(home, "foo/bar").getPath() },
|
||||||
h2.getConfig().getValues("IdentityFile"));
|
h2.getConfig().getValues("IdentityFile"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -352,6 +352,17 @@ private static Boolean yesno(final String value) {
|
||||||
return Boolean.FALSE;
|
return Boolean.FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static File toFile(String path, File home) {
|
||||||
|
if (path.startsWith("~/")) { //$NON-NLS-1$
|
||||||
|
return new File(home, path.substring(2));
|
||||||
|
}
|
||||||
|
File ret = new File(path);
|
||||||
|
if (ret.isAbsolute()) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
return new File(home, path);
|
||||||
|
}
|
||||||
|
|
||||||
private static int positive(final String value) {
|
private static int positive(final String value) {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
try {
|
try {
|
||||||
|
@ -730,25 +741,48 @@ private List<String> substitute(List<String> values, String allowed,
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private List<String> replaceTilde(List<String> values, File home) {
|
||||||
|
List<String> result = new ArrayList<>(values.size());
|
||||||
|
for (String value : values) {
|
||||||
|
result.add(toFile(value, home).getPath());
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
protected void substitute(String originalHostName, File home) {
|
protected void substitute(String originalHostName, File home) {
|
||||||
Replacer r = new Replacer(originalHostName, home);
|
Replacer r = new Replacer(originalHostName, home);
|
||||||
if (multiOptions != null) {
|
if (multiOptions != null) {
|
||||||
List<String> values = multiOptions.get("IDENTITYFILE"); //$NON-NLS-1$
|
List<String> values = multiOptions.get("IDENTITYFILE"); //$NON-NLS-1$
|
||||||
if (values != null) {
|
if (values != null) {
|
||||||
values = substitute(values, "dhlru", r); //$NON-NLS-1$
|
values = substitute(values, "dhlru", r); //$NON-NLS-1$
|
||||||
|
values = replaceTilde(values, home);
|
||||||
multiOptions.put("IDENTITYFILE", values); //$NON-NLS-1$
|
multiOptions.put("IDENTITYFILE", values); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
values = multiOptions.get("CERTIFICATEFILE"); //$NON-NLS-1$
|
values = multiOptions.get("CERTIFICATEFILE"); //$NON-NLS-1$
|
||||||
if (values != null) {
|
if (values != null) {
|
||||||
values = substitute(values, "dhlru", r); //$NON-NLS-1$
|
values = substitute(values, "dhlru", r); //$NON-NLS-1$
|
||||||
|
values = replaceTilde(values, home);
|
||||||
multiOptions.put("CERTIFICATEFILE", values); //$NON-NLS-1$
|
multiOptions.put("CERTIFICATEFILE", values); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (listOptions != null) {
|
||||||
|
List<String> values = listOptions.get("GLOBALKNOWNHOSTSFILE"); //$NON-NLS-1$
|
||||||
|
if (values != null) {
|
||||||
|
values = replaceTilde(values, home);
|
||||||
|
listOptions.put("GLOBALKNOWNHOSTSFILE", values); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
values = listOptions.get("USERKNOWNHOSTSFILE"); //$NON-NLS-1$
|
||||||
|
if (values != null) {
|
||||||
|
values = replaceTilde(values, home);
|
||||||
|
listOptions.put("USERKNOWNHOSTSFILE", values); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
}
|
||||||
if (options != null) {
|
if (options != null) {
|
||||||
// HOSTNAME already done in Replacer constructor
|
// HOSTNAME already done in Replacer constructor
|
||||||
String value = options.get("IDENTITYAGENT"); //$NON-NLS-1$
|
String value = options.get("IDENTITYAGENT"); //$NON-NLS-1$
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
value = r.substitute(value, "dhlru"); //$NON-NLS-1$
|
value = r.substitute(value, "dhlru"); //$NON-NLS-1$
|
||||||
|
value = toFile(value, home).getPath();
|
||||||
options.put("IDENTITYAGENT", value); //$NON-NLS-1$
|
options.put("IDENTITYAGENT", value); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -909,17 +943,6 @@ private void complete(String initialHostName, File homeDir) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private File toFile(String path, File home) {
|
|
||||||
if (path.startsWith("~/")) { //$NON-NLS-1$
|
|
||||||
return new File(home, path.substring(2));
|
|
||||||
}
|
|
||||||
File ret = new File(path);
|
|
||||||
if (ret.isAbsolute()) {
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
return new File(home, path);
|
|
||||||
}
|
|
||||||
|
|
||||||
Config getConfig() {
|
Config getConfig() {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue