Save StoredConfig after modifications

When the Config is changed, it should be saved back to its local
file.  This ensure that a future call to getConfig() won't wipe
out the edits that were just made.

Change-Id: Id46d3f85d1c9b377f63ef861b72824e1aa060eee
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
Shawn O. Pearce 2010-12-13 14:18:42 -08:00
parent 013cb8de38
commit 6f3b4d5d04
8 changed files with 51 additions and 20 deletions

View File

@ -43,6 +43,8 @@
package org.eclipse.jgit.http.test;
import java.io.IOException;
import javax.servlet.http.HttpServletRequestWrapper;
import org.eclipse.jetty.server.Request;
@ -51,6 +53,7 @@
import org.eclipse.jgit.http.server.resolver.ServiceNotEnabledException;
import org.eclipse.jgit.junit.LocalDiskRepositoryTestCase;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.StoredConfig;
public class AsIsServiceTest extends LocalDiskRepositoryTestCase {
private Repository db;
@ -87,8 +90,11 @@ public void testCreate_Default() throws ServiceNotEnabledException,
service.access(new R("bob", "1.2.3.4"), db);
}
public void testCreate_Disabled() throws ServiceNotAuthorizedException {
db.getConfig().setBoolean("http", null, "getanyfile", false);
public void testCreate_Disabled() throws ServiceNotAuthorizedException,
IOException {
final StoredConfig cfg = db.getConfig();
cfg.setBoolean("http", null, "getanyfile", false);
cfg.save();
try {
service.access(new R(null, "1.2.3.4"), db);

View File

@ -43,6 +43,8 @@
package org.eclipse.jgit.http.test;
import java.io.IOException;
import javax.servlet.http.HttpServletRequestWrapper;
import org.eclipse.jetty.server.Request;
@ -53,6 +55,7 @@
import org.eclipse.jgit.junit.LocalDiskRepositoryTestCase;
import org.eclipse.jgit.lib.PersonIdent;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.transport.ReceivePack;
public class DefaultReceivePackFactoryTest extends LocalDiskRepositoryTestCase {
@ -127,8 +130,11 @@ public void testCreate_AuthUser() throws ServiceNotEnabledException,
assertEquals(author.getWhen(), id.getWhen());
}
public void testCreate_Disabled() throws ServiceNotAuthorizedException {
db.getConfig().setBoolean("http", null, "receivepack", false);
public void testCreate_Disabled() throws ServiceNotAuthorizedException,
IOException {
final StoredConfig cfg = db.getConfig();
cfg.setBoolean("http", null, "receivepack", false);
cfg.save();
try {
factory.create(new R(null, "localhost"), db);
@ -153,8 +159,11 @@ public void testCreate_Disabled() throws ServiceNotAuthorizedException {
}
public void testCreate_Enabled() throws ServiceNotEnabledException,
ServiceNotAuthorizedException {
db.getConfig().setBoolean("http", null, "receivepack", true);
ServiceNotAuthorizedException, IOException {
final StoredConfig cfg = db.getConfig();
cfg.setBoolean("http", null, "receivepack", true);
cfg.save();
ReceivePack rp;
rp = factory.create(new R(null, "1.2.3.4"), db);

View File

@ -43,6 +43,8 @@
package org.eclipse.jgit.http.test;
import java.io.IOException;
import javax.servlet.http.HttpServletRequestWrapper;
import org.eclipse.jetty.server.Request;
@ -52,6 +54,7 @@
import org.eclipse.jgit.http.server.resolver.UploadPackFactory;
import org.eclipse.jgit.junit.LocalDiskRepositoryTestCase;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.transport.UploadPack;
public class DefaultUploadPackFactoryTest extends LocalDiskRepositoryTestCase {
@ -104,8 +107,11 @@ public void testCreate_Default() throws ServiceNotEnabledException,
assertSame(db, up.getRepository());
}
public void testCreate_Disabled() throws ServiceNotAuthorizedException {
db.getConfig().setBoolean("http", null, "uploadpack", false);
public void testCreate_Disabled() throws ServiceNotAuthorizedException,
IOException {
final StoredConfig cfg = db.getConfig();
cfg.setBoolean("http", null, "uploadpack", false);
cfg.save();
try {
factory.create(new R(null, "localhost"), db);

View File

@ -68,6 +68,7 @@
import org.eclipse.jgit.lib.RefUpdate;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.storage.file.FileBasedConfig;
import org.eclipse.jgit.storage.file.FileRepository;
import org.eclipse.jgit.transport.FetchConnection;
import org.eclipse.jgit.transport.Transport;
@ -336,8 +337,9 @@ public void testListRemote_Smart_UploadPackNeedsAuth() throws Exception {
public void testListRemote_Smart_UploadPackDisabled() throws Exception {
FileRepository src = remoteRepository.getRepository();
src.getConfig().setBoolean("http", null, "uploadpack", false);
src.getConfig().save();
final FileBasedConfig cfg = src.getConfig();
cfg.setBoolean("http", null, "uploadpack", false);
cfg.save();
Repository dst = createBareRepository();
Transport t = Transport.open(dst, smartAuthNoneURI);

View File

@ -47,9 +47,9 @@
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.JGitInternalException;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.RepositoryTestCase;
import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevTag;
import org.eclipse.jgit.transport.RefSpec;
@ -66,11 +66,12 @@ public void testFetch() throws JGitInternalException, IOException,
Git git2 = new Git(db2);
// setup the first repository to fetch from the second repository
final Config config = db.getConfig();
final StoredConfig config = db.getConfig();
RemoteConfig remoteConfig = new RemoteConfig(config, "test");
URIish uri = new URIish(db2.getDirectory().toURI().toURL());
remoteConfig.addURI(uri);
remoteConfig.update(config);
config.save();
// create some refs via commits and tag
RevCommit commit = git2.commit().setMessage("initial commit").call();

View File

@ -199,8 +199,8 @@ protected void setUp() throws Exception {
.getPath()));
config.addFetchRefSpec(new RefSpec(
"+refs/heads/*:refs/remotes/origin/*"));
targetConfig.save();
config.update(targetConfig);
targetConfig.save();
targetFile = new File(dbTarget.getWorkTree(), "SomeFile.txt");
writeToFile(targetFile, "Hello world");

View File

@ -48,9 +48,9 @@
import org.eclipse.jgit.api.errors.GitAPIException;
import org.eclipse.jgit.api.errors.JGitInternalException;
import org.eclipse.jgit.errors.MissingObjectException;
import org.eclipse.jgit.lib.Config;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.lib.RepositoryTestCase;
import org.eclipse.jgit.lib.StoredConfig;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevTag;
import org.eclipse.jgit.transport.RefSpec;
@ -66,11 +66,12 @@ public void testPush() throws JGitInternalException, IOException,
Repository db2 = createWorkRepository();
// setup the first repository
final Config config = db.getConfig();
final StoredConfig config = db.getConfig();
RemoteConfig remoteConfig = new RemoteConfig(config, "test");
URIish uri = new URIish(db2.getDirectory().toURI().toURL());
remoteConfig.addURI(uri);
remoteConfig.update(config);
config.save();
Git git1 = new Git(db);
// create some refs via commits and tag

View File

@ -47,6 +47,8 @@
import java.io.IOException;
import org.eclipse.jgit.storage.file.FileBasedConfig;
public class ReflogConfigTest extends RepositoryTestCase {
public void testlogAllRefUpdates() throws Exception {
long commitTime = 1154236443000L;
@ -55,7 +57,9 @@ public void testlogAllRefUpdates() throws Exception {
// check that there are no entries in the reflog and turn off writing
// reflogs
assertEquals(0, db.getReflogReader(Constants.HEAD).getReverseEntries().size());
db.getConfig().setBoolean("core", null, "logallrefupdates", false);
final FileBasedConfig cfg = db.getConfig();
cfg.setBoolean("core", null, "logallrefupdates", false);
cfg.save();
// do one commit and check that reflog size is 0: no reflogs should be
// written
@ -69,8 +73,9 @@ public void testlogAllRefUpdates() throws Exception {
db.getReflogReader(Constants.HEAD).getReverseEntries().size() == 0);
// set the logAllRefUpdates parameter to true and check it
db.getConfig().setBoolean("core", null, "logallrefupdates", true);
assertTrue(db.getConfig().get(CoreConfig.KEY).isLogAllRefUpdates());
cfg.setBoolean("core", null, "logallrefupdates", true);
cfg.save();
assertTrue(cfg.get(CoreConfig.KEY).isLogAllRefUpdates());
// do one commit and check that reflog size is increased to 1
addFileToTree(t, "i-am-another-file", "and this is other data in me\n");
@ -82,8 +87,9 @@ public void testlogAllRefUpdates() throws Exception {
db.getReflogReader(Constants.HEAD).getReverseEntries().size() == 1);
// set the logAllRefUpdates parameter to false and check it
db.getConfig().setBoolean("core", null, "logallrefupdates", false);
assertFalse(db.getConfig().get(CoreConfig.KEY).isLogAllRefUpdates());
cfg.setBoolean("core", null, "logallrefupdates", false);
cfg.save();
assertFalse(cfg.get(CoreConfig.KEY).isLogAllRefUpdates());
// do one commit and check that reflog size is 2
addFileToTree(t, "i-am-anotheranother-file",