[bazel] Skip ConfigTest#testCommitTemplatePathInHomeDirecory

Move this test to another class and skip it when running tests with
bazel since the bazel test runner does not allow to create files in the
home directory.

FS#userHome retrieves the home directory on the first call and caches it
for subsequent calls to avoid overhead in case path translation is
required (currently on cygwin). This prevents that the test can mock the
home directory using MockSystemReader like SshTestHarness does.

Change-Id: I6a22f37f4a19eb4b4935509eae508a23e56db7aa
This commit is contained in:
Matthias Sohn 2022-01-12 23:45:34 +01:00
parent a268faf729
commit b33133497f
3 changed files with 62 additions and 26 deletions

View File

@ -42,6 +42,7 @@ DATA = [
EXCLUDED = [
PKG + "api/SecurityManagerTest.java",
PKG + "api/SecurityManagerMissingPermissionsTest.java",
PKG + "lib/CommitTemplateConfigTest.java",
]
tests(tests = glob(

View File

@ -0,0 +1,60 @@
/*
* Copyright (C) 2021 SAP SE and others
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0 which is available at
* https://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
package org.eclipse.jgit.lib;
import static org.junit.Assert.assertEquals;
import java.io.File;
import java.io.IOException;
import org.eclipse.jgit.errors.ConfigInvalidException;
import org.eclipse.jgit.junit.JGitTestUtil;
import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
/*
* This test was moved from ConfigTest to allow skipping it when running the
* test using bazel which doesn't allow tests to create files in the home
* directory
*/
public class CommitTemplateConfigTest {
@Rule
public TemporaryFolder tmp = new TemporaryFolder();
@Test
public void testCommitTemplatePathInHomeDirecory()
throws ConfigInvalidException, IOException {
Config config = new Config(null);
File tempFile = tmp.newFile("testCommitTemplate-");
File workTree = tmp.newFolder("dummy-worktree");
Repository repo = FileRepositoryBuilder.create(workTree);
String templateContent = "content of the template";
JGitTestUtil.write(tempFile, templateContent);
// proper evaluation of the ~/ directory
String homeDir = System.getProperty("user.home");
File tempFileInHomeDirectory = File.createTempFile("fileInHomeFolder",
".tmp", new File(homeDir));
tempFileInHomeDirectory.deleteOnExit();
JGitTestUtil.write(tempFileInHomeDirectory, templateContent);
String expectedTemplatePath = tempFileInHomeDirectory.getPath()
.replace(homeDir, "~");
config = ConfigTest
.parse("[commit]\n\ttemplate = " + expectedTemplatePath + "\n");
String templatePath = config.get(CommitConfig.KEY)
.getCommitTemplatePath();
assertEquals(expectedTemplatePath, templatePath);
assertEquals(templateContent,
config.get(CommitConfig.KEY).getCommitTemplateContent(repo));
}
}

View File

@ -1177,7 +1177,7 @@ private static void assertReadLong(long exp, String act)
assertEquals(exp, c.getLong("s", null, "a", 0L));
}
private static Config parse(String content)
static Config parse(String content)
throws ConfigInvalidException {
return parse(content, null);
}
@ -1546,31 +1546,6 @@ public void testCommitTemplateEncoding()
"utf-8", commitEncoding);
}
@Test
public void testCommitTemplatePathInHomeDirecory()
throws ConfigInvalidException, IOException {
Config config = new Config(null);
File tempFile = tmp.newFile("testCommitTemplate-");
File workTree = tmp.newFolder("dummy-worktree");
Repository repo = FileRepositoryBuilder.create(workTree);
String templateContent = "content of the template";
JGitTestUtil.write(tempFile, templateContent);
// proper evaluation of the ~/ directory
String homeDir = System.getProperty("user.home");
File tempFileInHomeDirectory = File.createTempFile("fileInHomeFolder",
".tmp", new File(homeDir));
tempFileInHomeDirectory.deleteOnExit();
JGitTestUtil.write(tempFileInHomeDirectory, templateContent);
String expectedTemplatePath = tempFileInHomeDirectory.getPath()
.replace(homeDir, "~");
config = parse("[commit]\n\ttemplate = " + expectedTemplatePath + "\n");
String templatePath = config.get(CommitConfig.KEY)
.getCommitTemplatePath();
assertEquals(expectedTemplatePath, templatePath);
assertEquals(templateContent,
config.get(CommitConfig.KEY).getCommitTemplateContent(repo));
}
@Test(expected = ConfigInvalidException.class)
public void testCommitTemplateWithInvalidEncoding()
throws ConfigInvalidException, IOException {