123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /*
- * 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();
- }
- }
- }
- }
|