/* * Cobertura - http://cobertura.sourceforge.net/ * * Copyright (C) 2005 Grzegorz Lukasik * * Cobertura is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * * Cobertura is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Cobertura; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA */ package net.sourceforge.cobertura.merge; import junit.framework.TestCase; import net.sourceforge.cobertura.coveragedata.ClassData; import net.sourceforge.cobertura.coveragedata.CoverageDataFileHandler; import net.sourceforge.cobertura.coveragedata.ProjectData; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * Tests merging feature by launching Main class. */ public class MergeMainTest extends TestCase { private ClassData firstClass = new ClassData("test.First"); private ClassData secondClass = new ClassData("test.Second"); private ClassData seventhClass = new ClassData("Seventh"); private ProjectData greenProject = new ProjectData(); private ProjectData redProject = new ProjectData(); private ProjectData blueProject = new ProjectData(); private List filesToRemove = new ArrayList(); private File createTempSerFile() throws IOException { File result = File.createTempFile("cobertura", ".ser"); result.delete(); filesToRemove.add(result); return result; } protected void tearDown() throws Exception { for (int i = 0; i < filesToRemove.size(); i++) { ((File) filesToRemove.get(i)).delete(); } } public void testNewDestinationFile() throws IOException { // Create some coverage data greenProject.addClassData(firstClass); redProject.addClassData(secondClass); redProject.addClassData(seventhClass); // Generate filenames for serialized data File greenFile = createTempSerFile(); File redFile = createTempSerFile(); File dataFile = createTempSerFile(); // Save coverage data for created data CoverageDataFileHandler.saveCoverageData(greenProject, greenFile); CoverageDataFileHandler.saveCoverageData(redProject, redFile); // Run merge task String[] args = {"--datafile", dataFile.getAbsolutePath(), greenFile.getAbsolutePath(), redFile.getAbsolutePath()}; Main.main(args); // Read merged data ProjectData merged = CoverageDataFileHandler.loadCoverageData(dataFile); // Check if everything is ok assertEquals(3, merged.getNumberOfClasses()); assertNotNull(merged.getClassData("test.First")); assertNotNull(merged.getClassData("test.Second")); assertNotNull(merged.getClassData("Seventh")); assertNull(merged.getClassData("test.Third")); } public void testExistingDestinationFile() throws IOException { // Create some coverage data greenProject.addClassData(firstClass); redProject.addClassData(secondClass); // Generate filenames for serialized data File greenFile = createTempSerFile(); File dataFile = createTempSerFile(); // Save coverage data for created data CoverageDataFileHandler.saveCoverageData(greenProject, greenFile); CoverageDataFileHandler.saveCoverageData(redProject, dataFile); // Run merge task String[] args = {"--datafile", dataFile.getAbsolutePath(), greenFile.getAbsolutePath()}; Main.main(args); // Read merged data ProjectData merged = CoverageDataFileHandler.loadCoverageData(dataFile); // Check if everything is ok assertEquals(2, merged.getNumberOfClasses()); assertNotNull(merged.getClassData("test.First")); assertNotNull(merged.getClassData("test.Second")); } public void testBaseDir() throws IOException { // Create some coverage data greenProject.addClassData(firstClass); redProject.addClassData(seventhClass); blueProject.addClassData(secondClass); // Generate filenames for serialized data File greenFile = createTempSerFile(); File redFile = createTempSerFile(); File blueFile = createTempSerFile(); File dataFile = createTempSerFile(); dataFile.delete(); // Save coverage data for created data CoverageDataFileHandler.saveCoverageData(greenProject, greenFile); CoverageDataFileHandler.saveCoverageData(redProject, redFile); CoverageDataFileHandler.saveCoverageData(blueProject, blueFile); // Run merge task String[] args = {"--datafile", dataFile.getAbsolutePath(), greenFile.getAbsolutePath(), "--basedir", redFile.getParent(), redFile.getName(), blueFile.getName()}; Main.main(args); // Read merged data ProjectData merged = CoverageDataFileHandler.loadCoverageData(dataFile); // Check if everything is ok assertEquals(3, merged.getNumberOfClasses()); assertNotNull(merged.getClassData("test.First")); assertNotNull(merged.getClassData("test.Second")); assertNotNull(merged.getClassData("Seventh")); } }