/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.git.impl; import static org.eclipse.che.git.impl.GitTestUtil.CONTENT; import static org.eclipse.che.git.impl.GitTestUtil.addFile; import static org.eclipse.che.git.impl.GitTestUtil.cleanupTestRepo; import static org.eclipse.che.git.impl.GitTestUtil.connectToInitializedGitRepository; import static org.eclipse.che.git.impl.GitTestUtil.deleteFile; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import com.google.common.collect.ImmutableList; import com.google.common.io.Files; import org.eclipse.che.api.git.GitConnection; import org.eclipse.che.api.git.GitConnectionFactory; import org.eclipse.che.api.git.exception.GitException; import org.eclipse.che.api.git.params.AddParams; import org.eclipse.che.api.git.params.CommitParams; import org.eclipse.che.api.git.params.LsFilesParams; import org.eclipse.che.api.git.shared.AddRequest; import org.eclipse.che.api.git.shared.StatusFormat; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.io.File; import java.io.IOException; import java.util.List; /** * @author Eugene Voevodin * @author Sergii Kabnashniuk. * @author Mykola Morhun */ public class AddTest { public File repository; @BeforeMethod public void setUp() { repository = Files.createTempDir(); } @AfterMethod public void cleanUp() { cleanupTestRepo(repository); } @Test(dataProvider = "GitConnectionFactory", dataProviderClass = org.eclipse.che.git.impl.GitConnectionFactoryProvider.class) public void testSimpleAdd(GitConnectionFactory connectionFactory) throws GitException, IOException { //given GitConnection connection = connectToInitializedGitRepository(connectionFactory, repository); addFile(connection, "testAdd", org.eclipse.che.git.impl.GitTestUtil.CONTENT); //when connection.add(AddParams.create(AddRequest.DEFAULT_PATTERN)); //then //check added files List<String> files = connection.listFiles(LsFilesParams.create()); assertEquals(files.size(), 1); assertTrue(files.contains("testAdd")); } @Test(dataProvider = "GitConnectionFactory", dataProviderClass = GitConnectionFactoryProvider.class) public void testAddUpdate(GitConnectionFactory connectionFactory) throws GitException, IOException { //given GitConnection connection = connectToInitializedGitRepository(connectionFactory, repository); addFile(connection, "README.txt", CONTENT); connection.add(AddParams.create(ImmutableList.of("README.txt"))); connection.commit(CommitParams.create("Initial add")); //when //modify README.txt addFile(connection, "README.txt", "SOME NEW CONTENT"); List<String> listFiles = connection.listFiles(LsFilesParams.create().withModified(true)); //then //modified but not added to stage assertTrue(listFiles.contains("README.txt")); //when connection.add(AddParams.create(AddRequest.DEFAULT_PATTERN).withUpdate(true)); //then listFiles = connection.listFiles(LsFilesParams.create().withStaged(true)); //added to stage assertEquals(listFiles.size(), 1); assertTrue(listFiles.get(0).contains("README.txt")); } @Test(dataProvider = "GitConnectionFactory", dataProviderClass = GitConnectionFactoryProvider.class) public void testAddDeletedFile(GitConnectionFactory connectionFactory) throws GitException, IOException { // given GitConnection connection = connectToInitializedGitRepository(connectionFactory, repository); addFile(connection, "README.txt", CONTENT); addFile(connection, "CHANGELOG.txt", "WE'VE FIXED ALL BUGS"); connection.add(AddParams.create(ImmutableList.of("README.txt", "CHANGELOG.txt"))); connection.commit(CommitParams.create("Initial add")); // when // remove file from disk deleteFile(connection, "CHANGELOG.txt"); // add all files to index connection.add(AddParams.create(AddRequest.DEFAULT_PATTERN)); // then // the deleted file is added to index, so it becomes removed for git List<String> stagedDeletedFiles = connection.status(StatusFormat.SHORT).getRemoved(); assertEquals(stagedDeletedFiles.size(), 1); assertEquals(stagedDeletedFiles.get(0), "CHANGELOG.txt"); } }