/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* See LICENSE.txt included in this distribution for the specific
* language governing permissions and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at LICENSE.txt.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
*/
package org.opensolaris.opengrok.history;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/**
*
* @author michailf
*/
public class SSCMHistoryParserTest {
SSCMHistoryParser instance;
public SSCMHistoryParserTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Before
public void setUp() {
instance = new SSCMHistoryParser(new SSCMRepository());
}
@After
public void tearDown() {
instance = null;
}
/**
* Test of parse method, of class GitHistoryParser.
*
* @throws java.io.IOException
*/
@Test
public void parseEmpty() throws IOException {
History result = instance.parse("");
assertNotNull(result);
assertTrue("Should not contain any history entries", 0 == result.getHistoryEntries().size());
}
/**
* Test of parsing output similar to that in Surround SCM own repository.
*
* @throws java.io.IOException
*/
@Test
public void ParseALaSSCM() throws IOException {
// This is the new line that is generated by sscm (2011) history command
String newLine = "\r\r\n";
String author1 = "Michailf";
String author3 = "Joec";
String author4 = "user4";
String author5 = "user5";
String date1 = "9/7/2013 1:10 PM";
String date2 = "10/8/2013 1:13 PM";
String date3 = "10/8/2013 1:14 PM";
String date4 = "10/8/2013 1:15 PM";
String date5 = "10/18/2013 11:16 PM";
String comment3 = "Change with check in." + newLine
+ "" + newLine
+ "Third comment line";
String comment5 = "Comment with promote";
String output
= "Full file path: Branch1/Repo with spaces/readme.txt" + newLine
+ "Branch: Branch1" + newLine
+ "Working directory: C:\\scm\\Branch1\\Repo with spaces" + newLine
+ "Action: User: Version: Date:" + newLine
+ "add Michailf 1 " + date1 + newLine
+ "add to branch[Bug#00000008 - Branch to work on changes.]" + newLine
+ " Joec 1 " + date2 + newLine
+ "checkin Joec 2 " + date3 + newLine
+ " Comments - " + comment3 + newLine
+ "promote from[Bug#00000008 - Branch to work on changes. v. 2]" + newLine
+ " user4 3 " + date4 + newLine
+ "promote from[Bug#00000008 - Branch to work on changes. v. 3]" + newLine
+ " user5 4 " + date5 + newLine
+ " Comments - " + comment5 + newLine;
History result = instance.parse(output);
assertNotNull(result);
// History entries that do not increment version number are not included
// (no file changes)
assertTrue("Should contain four history entries", 4 == result.getHistoryEntries().size());
// History entries are reversed (newest first)
{
HistoryEntry e0 = result.getHistoryEntries().get(0);
assertEquals("4", e0.getRevision());
assertEquals(author5, e0.getAuthor());
assertTrue(!e0.getMessage().isEmpty());
assertEquals(0, e0.getFiles().size());
}
{
HistoryEntry e1 = result.getHistoryEntries().get(1);
assertEquals("3", e1.getRevision());
assertEquals(author4, e1.getAuthor());
assertTrue(!e1.getMessage().isEmpty());
assertEquals(0, e1.getFiles().size());
}
{
HistoryEntry e2 = result.getHistoryEntries().get(2);
assertEquals("2", e2.getRevision());
assertEquals(author3, e2.getAuthor());
assertTrue(!e2.getMessage().isEmpty());
assertEquals(0, e2.getFiles().size());
}
{
HistoryEntry e3 = result.getHistoryEntries().get(3);
assertEquals("1", e3.getRevision());
assertEquals(author1, e3.getAuthor());
assertTrue(e3.getMessage().isEmpty());
assertEquals(0, e3.getFiles().size());
}
}
}