/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package hudson.plugins.perforce; import com.tek42.perforce.model.Changelist; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import org.jvnet.hudson.test.HudsonTestCase; /** * * @author rpetti */ public class PerforceChangeLogParserTest extends HudsonTestCase { public void testSaveAndLoadChangeLogSet() throws Exception { PerforceChangeLogParser parser = new PerforceChangeLogParser(); List<PerforceChangeLogEntry> entries = new ArrayList<PerforceChangeLogEntry>(); PerforceChangeLogSet originalSet = new PerforceChangeLogSet(null,entries); List<Changelist> changes = new ArrayList<Changelist>(); Changelist cl = new Changelist(); cl.setChangeNumber(1000); cl.setDescription("test change <this is broken XML&>"); cl.setUser("test.user"); cl.setWorkspace("test_workspace"); List<Changelist.FileEntry> files = new ArrayList<Changelist.FileEntry>(); Changelist.FileEntry fileEntry = new Changelist.FileEntry(); fileEntry.setAction(Changelist.FileEntry.Action.ADD); fileEntry.setChangenumber("1000"); fileEntry.setRevision("1"); fileEntry.setWorkspacePath("some/workspace/path"); fileEntry.setFilename("file"); files.add(fileEntry); fileEntry = new Changelist.FileEntry(); fileEntry.setAction(Changelist.FileEntry.Action.ADD); fileEntry.setChangenumber("1001"); fileEntry.setRevision("3"); fileEntry.setWorkspacePath("some/workspace/path2"); fileEntry.setFilename("file2"); files.add(fileEntry); cl.setFiles(files); List<Changelist.JobEntry> jobs = new ArrayList<Changelist.JobEntry>(); Changelist.JobEntry jobEntry = new Changelist.JobEntry(); jobEntry.setDescription("test job"); jobEntry.setJob("test-job"); jobEntry.setStatus("submitted"); jobs.add(jobEntry); jobEntry = new Changelist.JobEntry(); jobEntry.setDescription("test job2 <!--Contains some nonsense-->\n<[[ like, really broken ]]>\n"); jobEntry.setJob("test-job2"); jobEntry.setStatus("rejected"); jobs.add(jobEntry); cl.setJobs(jobs); changes.add(cl); PerforceChangeLogEntry entry = new PerforceChangeLogEntry(originalSet); entry.setChange(cl); entries.add(entry); cl = new Changelist(); cl.setChangeNumber(1003); cl.setDescription("test change2"); cl.setUser("test.user2"); cl.setWorkspace("test_workspace2"); files = new ArrayList<Changelist.FileEntry>(); fileEntry = new Changelist.FileEntry(); fileEntry.setAction(Changelist.FileEntry.Action.ADD); fileEntry.setChangenumber("1003"); fileEntry.setRevision("1"); fileEntry.setWorkspacePath("some/workspace/path5"); fileEntry.setFilename("file5"); files.add(fileEntry); fileEntry = new Changelist.FileEntry(); fileEntry.setAction(Changelist.FileEntry.Action.ADD); fileEntry.setChangenumber("1003"); fileEntry.setRevision("3"); fileEntry.setWorkspacePath("some/workspace/path3"); fileEntry.setFilename("file3"); files.add(fileEntry); cl.setFiles(files); jobs = new ArrayList<Changelist.JobEntry>(); jobEntry = new Changelist.JobEntry(); jobEntry.setDescription("test job3"); jobEntry.setJob("test-job3"); jobEntry.setStatus("submitted"); jobs.add(jobEntry); jobEntry = new Changelist.JobEntry(); jobEntry.setDescription("test job4"); jobEntry.setJob("test-job4"); jobEntry.setStatus("rejected"); jobs.add(jobEntry); cl.setJobs(jobs); changes.add(cl); entry = new PerforceChangeLogEntry(originalSet); entry.setChange(cl); entries.add(entry); File tempFile = File.createTempFile(getClass().getName(),".tmp"); BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(tempFile)); PerforceChangeLogSet.saveToChangeLog(out, changes); out.flush(); out.close(); PerforceChangeLogSet reloadedSet = (PerforceChangeLogSet)parser.parse(null, tempFile); assertEquals( originalSet.getHistory().get(0).getChange().toString(), reloadedSet.getHistory().get(0).getChange().toString()); assertEquals( originalSet.getHistory().get(1).getChange().toString(), reloadedSet.getHistory().get(1).getChange().toString()); assertEquals( originalSet.getHistory().get(0).getChange().getFiles().get(0).toString(), reloadedSet.getHistory().get(0).getChange().getFiles().get(0).toString()); assertEquals( originalSet.getHistory().get(0).getChange().getUser(), reloadedSet.getHistory().get(0).getChange().getUser()); assertEquals( originalSet.getHistory().get(0).getChange().getJobs().get(0).toString(), reloadedSet.getHistory().get(0).getChange().getJobs().get(0).toString()); } }