diff options
author | Matthias Sohn <matthias.sohn@sap.com> | 2021-12-30 23:58:41 +0100 |
---|---|---|
committer | Matthias Sohn <matthias.sohn@sap.com> | 2021-12-30 23:58:41 +0100 |
commit | c6b0ee04e49c96e0beec4154196c416abcf2bcc9 (patch) | |
tree | fbd6c3b2ed5ef0d972b7d63f5c39f1a25142f103 /org.eclipse.jgit.test | |
parent | 95ea1c1123c590733cf3dc06ab571d6e0ce718b5 (diff) | |
parent | 725e77a5176384ff55195a302888cd661440a031 (diff) | |
download | jgit-c6b0ee04e49c96e0beec4154196c416abcf2bcc9.tar.gz jgit-c6b0ee04e49c96e0beec4154196c416abcf2bcc9.zip |
Merge branch 'stable-5.8' into stable-5.9
* stable-5.8:
Use FileSnapshot without using configs for FileBasedConfig
Change-Id: Ic97d38fc85daa00297abbfa186f83b779966e7ef
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/FileBasedConfigTest.java | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/FileBasedConfigTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/FileBasedConfigTest.java index 803ff108f8..1ccacd75e2 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/FileBasedConfigTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/storage/file/FileBasedConfigTest.java @@ -13,6 +13,7 @@ import static java.nio.charset.StandardCharsets.UTF_8; import static org.eclipse.jgit.util.FileUtils.pathToString; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -21,6 +22,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; import java.util.StringTokenizer; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; import org.eclipse.jgit.errors.ConfigInvalidException; import org.eclipse.jgit.junit.MockSystemReader; @@ -57,11 +60,13 @@ public class FileBasedConfigTest { private Path trash; + private MockSystemReader mockSystemReader; + @Before public void setUp() throws Exception { - SystemReader.setInstance(new MockSystemReader()); + mockSystemReader = new MockSystemReader(); + SystemReader.setInstance(mockSystemReader); trash = Files.createTempDirectory("tmp_"); - FS.getFileStoreAttributes(trash.getParent()); } @After @@ -265,6 +270,37 @@ public class FileBasedConfigTest { assertEquals(ALICE_EMAIL, config.getString(USER, null, EMAIL)); } + @Test + public void testSavedConfigFileShouldNotReadUserGitConfig() + throws IOException { + AtomicBoolean userConfigTimeRead = new AtomicBoolean(false); + + Path userConfigFile = createFile(CONTENT1.getBytes(), "home"); + mockSystemReader.setUserGitConfig( + new FileBasedConfig(userConfigFile.toFile(), FS.DETECTED) { + + @Override + public long getTimeUnit(String section, String subsection, + String name, long defaultValue, TimeUnit wantUnit) { + userConfigTimeRead.set(true); + return super.getTimeUnit(section, subsection, name, + defaultValue, wantUnit); + } + }); + + Path file = createFile(CONTENT2.getBytes(), "repo"); + FileBasedConfig fileBasedConfig = new FileBasedConfig(file.toFile(), + FS.DETECTED); + fileBasedConfig.save(); + + // Needed to trigger the read of FileSnapshot filesystem settings + fileBasedConfig.isOutdated(); + assertFalse( + "User config should not be read when accessing config files " + + "for avoiding deadlocks", + userConfigTimeRead.get()); + } + private Path createFile(byte[] content) throws IOException { return createFile(content, null); } |