/* * Copyright (C) 2019, Matthias Sohn 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.util; import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.when; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import org.eclipse.jgit.storage.file.FileBasedConfig; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; @RunWith(MockitoJUnitRunner.class) public class SystemReaderTest { private Path trash; private Path mockSystemConfig; private Path mockUserConfig; @Mock private FS fs; @Before public void setup() throws Exception { trash = Files.createTempDirectory("jgit_test"); mockSystemConfig = trash.resolve("systemgitconfig"); Files.write(mockSystemConfig, "[core]\n trustFolderStat = false\n" .getBytes(StandardCharsets.UTF_8)); mockUserConfig = trash.resolve(".gitconfig"); Files.write(mockUserConfig, "[core]\n bare = false\n".getBytes(StandardCharsets.UTF_8)); when(fs.getGitSystemConfig()).thenReturn(mockSystemConfig.toFile()); when(fs.userHome()).thenReturn(trash.toFile()); SystemReader.setInstance(null); } @After public void teardown() throws Exception { FileUtils.delete(trash.toFile(), FileUtils.RECURSIVE | FileUtils.RETRY); } @Test public void openSystemConfigReturnsDifferentInstances() throws Exception { FileBasedConfig system1 = SystemReader.getInstance() .openSystemConfig(null, fs); system1.load(); assertEquals("false", system1.getString("core", null, "trustFolderStat")); FileBasedConfig system2 = SystemReader.getInstance() .openSystemConfig(null, fs); system2.load(); assertEquals("false", system2.getString("core", null, "trustFolderStat")); system1.setString("core", null, "trustFolderStat", "true"); assertEquals("true", system1.getString("core", null, "trustFolderStat")); assertEquals("false", system2.getString("core", null, "trustFolderStat")); } @Test public void openUserConfigReturnsDifferentInstances() throws Exception { FileBasedConfig user1 = SystemReader.getInstance().openUserConfig(null, fs); user1.load(); assertEquals("false", user1.getString("core", null, "bare")); FileBasedConfig user2 = SystemReader.getInstance().openUserConfig(null, fs); user2.load(); assertEquals("false", user2.getString("core", null, "bare")); user1.setString("core", null, "bare", "true"); assertEquals("true", user1.getString("core", null, "bare")); assertEquals("false", user2.getString("core", null, "bare")); } }