Browse Source

Add a cgit interoperability test for LockFile

Change-Id: I30cacd1f50f8f4ff4dd91ad291bf279980e3c4b5
Signed-off-by: Matthias Sohn <matthias.sohn@sap.com>
tags/v5.12.0.202105261145-m3
Matthias Sohn 3 years ago
parent
commit
e6192c56af

+ 57
- 0
org.eclipse.jgit.test/exttst/org/eclipse/jgit/internal/storage/file/CGitLockFileTest.java View File

@@ -0,0 +1,57 @@
/*
* 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.internal.storage.file;

import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.junit.RepositoryTestCase;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.util.FS;
import org.eclipse.jgit.util.FS.ExecutionResult;
import org.junit.Test;

/**
* Unit tests of {@link LockFile} testing interoperability with C git
*/
public class CGitLockFileTest extends RepositoryTestCase {

@Test
public void testLockedTwiceFails() throws Exception {
try (Git git = new Git(db)) {
writeTrashFile("file.txt", "content");
git.add().addFilepattern("file.txt").call();
RevCommit commit1 = git.commit().setMessage("create file").call();

assertNotNull(commit1);
writeTrashFile("file.txt", "content2");
git.add().addFilepattern("file.txt").call();
assertNotNull(git.commit().setMessage("edit file").call());

LockFile lf = new LockFile(db.getIndexFile());
assertTrue(lf.lock());
try {
String[] command = new String[] { "git", "checkout",
commit1.name() };
ProcessBuilder pb = new ProcessBuilder(command);
pb.directory(db.getWorkTree());
ExecutionResult result = FS.DETECTED.execute(pb, null);
assertNotEquals(0, result.getRc());
String err = result.getStderr().toString().split("\\R")[0];
assertTrue(err.matches(
"fatal: Unable to create .*/\\.git/index\\.lock': File exists\\."));
} finally {
lf.unlock();
}
}
}
}

Loading…
Cancel
Save