001: /*
002: * Cobertura - http://cobertura.sourceforge.net/
003: *
004: * Copyright (C) 2005 Grzegorz Lukasik
005: *
006: * Cobertura is free software; you can redistribute it and/or modify
007: * it under the terms of the GNU General Public License as published
008: * by the Free Software Foundation; either version 2 of the License,
009: * or (at your option) any later version.
010: *
011: * Cobertura is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with Cobertura; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: */
021: package net.sourceforge.cobertura.merge;
022:
023: import java.util.List;
024: import java.io.File;
025: import java.io.IOException;
026: import java.util.ArrayList;
027:
028: import junit.framework.TestCase;
029: import net.sourceforge.cobertura.coveragedata.ClassData;
030: import net.sourceforge.cobertura.coveragedata.CoverageDataFileHandler;
031: import net.sourceforge.cobertura.coveragedata.ProjectData;
032:
033: /**
034: * Tests merging feature by launching Main class.
035: */
036: public class MergeMainTest extends TestCase {
037: private ClassData firstClass = new ClassData("test.First");
038: private ClassData secondClass = new ClassData("test.Second");
039: private ClassData seventhClass = new ClassData("Seventh");
040:
041: private ProjectData greenProject = new ProjectData();
042: private ProjectData redProject = new ProjectData();
043: private ProjectData blueProject = new ProjectData();
044:
045: private List filesToRemove = new ArrayList();
046:
047: private File createTempSerFile() throws IOException {
048: File result = File.createTempFile("cobertura", ".ser");
049: result.delete();
050: filesToRemove.add(result);
051: return result;
052: }
053:
054: protected void tearDown() throws Exception {
055: for (int i = 0; i < filesToRemove.size(); i++) {
056: ((File) filesToRemove.get(i)).delete();
057: }
058: }
059:
060: public void testNewDestinationFile() throws IOException {
061: // Create some coverage data
062: greenProject.addClassData(firstClass);
063: redProject.addClassData(secondClass);
064: redProject.addClassData(seventhClass);
065:
066: // Generate filenames for serialized data
067: File greenFile = createTempSerFile();
068: File redFile = createTempSerFile();
069: File dataFile = createTempSerFile();
070:
071: // Save coverage data for created data
072: CoverageDataFileHandler.saveCoverageData(greenProject,
073: greenFile);
074: CoverageDataFileHandler.saveCoverageData(redProject, redFile);
075:
076: // Run merge task
077: String[] args = { "--datafile", dataFile.getAbsolutePath(),
078: greenFile.getAbsolutePath(), redFile.getAbsolutePath() };
079:
080: Main.main(args);
081:
082: // Read merged data
083: ProjectData merged = CoverageDataFileHandler
084: .loadCoverageData(dataFile);
085:
086: // Check if everything is ok
087: assertEquals(3, merged.getNumberOfClasses());
088: assertNotNull(merged.getClassData("test.First"));
089: assertNotNull(merged.getClassData("test.Second"));
090: assertNotNull(merged.getClassData("Seventh"));
091: assertNull(merged.getClassData("test.Third"));
092: }
093:
094: public void testExistingDestinationFile() throws IOException {
095: // Create some coverage data
096: greenProject.addClassData(firstClass);
097: redProject.addClassData(secondClass);
098:
099: // Generate filenames for serialized data
100: File greenFile = createTempSerFile();
101: File dataFile = createTempSerFile();
102:
103: // Save coverage data for created data
104: CoverageDataFileHandler.saveCoverageData(greenProject,
105: greenFile);
106: CoverageDataFileHandler.saveCoverageData(redProject, dataFile);
107:
108: // Run merge task
109: String[] args = { "--datafile", dataFile.getAbsolutePath(),
110: greenFile.getAbsolutePath() };
111:
112: Main.main(args);
113:
114: // Read merged data
115: ProjectData merged = CoverageDataFileHandler
116: .loadCoverageData(dataFile);
117:
118: // Check if everything is ok
119: assertEquals(2, merged.getNumberOfClasses());
120: assertNotNull(merged.getClassData("test.First"));
121: assertNotNull(merged.getClassData("test.Second"));
122: }
123:
124: public void testBaseDir() throws IOException {
125: // Create some coverage data
126: greenProject.addClassData(firstClass);
127: redProject.addClassData(seventhClass);
128: blueProject.addClassData(secondClass);
129:
130: // Generate filenames for serialized data
131: File greenFile = createTempSerFile();
132: File redFile = createTempSerFile();
133: File blueFile = createTempSerFile();
134: File dataFile = createTempSerFile();
135:
136: dataFile.delete();
137:
138: // Save coverage data for created data
139: CoverageDataFileHandler.saveCoverageData(greenProject,
140: greenFile);
141: CoverageDataFileHandler.saveCoverageData(redProject, redFile);
142: CoverageDataFileHandler.saveCoverageData(blueProject, blueFile);
143:
144: // Run merge task
145: String[] args = { "--datafile", dataFile.getAbsolutePath(),
146: greenFile.getAbsolutePath(), "--basedir",
147: redFile.getParent(), redFile.getName(),
148: blueFile.getName() };
149:
150: Main.main(args);
151:
152: // Read merged data
153: ProjectData merged = CoverageDataFileHandler
154: .loadCoverageData(dataFile);
155:
156: // Check if everything is ok
157: assertEquals(3, merged.getNumberOfClasses());
158: assertNotNull(merged.getClassData("test.First"));
159: assertNotNull(merged.getClassData("test.Second"));
160: assertNotNull(merged.getClassData("Seventh"));
161: }
162: }
|