001 package org.hackystat.sensor.ant.svn; 002 003 import java.util.Date; 004 005 import junit.framework.TestCase; 006 007 /** 008 * Test suite for everything in this package. 009 * 010 * @author (Cedric) Qin ZHANG 011 * @version $Id$ 012 */ 013 public class TestAll extends TestCase { 014 015 //private String svnRepositoryUrl = "svn://localhost:9999/test"; 016 private SVNCommitProcessor p = null; 017 private boolean runTest = false; 018 019 /** 020 * Test case set up. 021 * 022 * @throws Exception If we cannot set up this test case. 023 */ 024 @Override 025 protected void setUp() throws Exception { 026 //we only run test in a environment we can access a testing svn server. 027 //To bad, JavaSVN does not support file protocol in verions 1.0 release. 028 //Otherwise, we can always run the test through file protocol. 029 String url = System.getProperty("hackySensor_Svn.TestingRepositoryUrl"); 030 if (url == null) { 031 System.out.println("WARNING: Test cases in org.hackystat.sensor.svn.core.TestAll not run " 032 + "because environment variable hackySensor_Svn.TestingRepositoryUrl not set " 033 + "(i.e. Testing SVN server not available)."); 034 this.runTest = false; 035 } 036 else { 037 this.p = new SVNCommitProcessor(url, null, null); 038 this.runTest = true; 039 } 040 } 041 042 /** 043 * Tests get svn revision number. 044 * 045 * @throws Exception If test fails. 046 */ 047 public void testGetRevisionNumberWithOutliers() throws Exception { 048 if (!runTest) { 049 return; 050 } 051 assertEquals("The revision number is not 0.", 0, p.getRevisionNumber(new Date(0))); 052 assertEquals("The revision number is not 0.", 0, p.getRevisionNumber(new Date( 053 Long.MIN_VALUE))); 054 assertEquals("The revision number is not 0", 9, p.getRevisionNumber(new Date( 055 Long.MAX_VALUE))); 056 } 057 // 058 // /** 059 // * Tests everything in this package. 060 // * 061 // * @throws Exception If test fails. 062 // */ 063 // public void testAll() throws Exception { 064 // if (!runTest) { 065 // return; 066 // } 067 // 068 // SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 069 // assertEquals(0, this.p.getRevisionNumber(dateFormat.parse("2000-01-01"))); 070 // assertEquals(9, this.p.getRevisionNumber(dateFormat.parse("2005-12-12"))); 071 // 072 // //revision 0, non-existent. JavaSVN should throw exception here, but it did 073 // not. 074 // CommitRecord commitRecord = this.p.getCommitRecord(0); 075 // if (commitRecord != null) { 076 // assertEquals(0, commitRecord.getCommitRecordEntries().size()); 077 // } 078 // 079 // //revision 1 - 9 080 // for (int i = 1; i <= 9; i++) { 081 // assertNotNull(this.p.getCommitRecord(i)); 082 // } 083 // 084 // //revision 10, non-existent 085 // try { 086 // this.p.getCommitRecord(10); 087 // fail("Revision 10 does not exist."); 088 // } 089 // catch (Exception ex) { 090 // //ignore 091 // } 092 // 093 // //revision 1 094 // commitRecord = this.p.getCommitRecord(1); 095 // assertEquals(1L, commitRecord.getRevision()); 096 // assertEquals(null, commitRecord.getAuthor()); 097 // assertEquals("", commitRecord.getMessage()); 098 // assertEquals(1131014866409L, commitRecord.getCommitTime().getTime()); 099 // Collection<CommitRecordEntry> entries = 100 // commitRecord.getCommitRecordEntries(); 101 // assertEquals(1, entries.size()); 102 // //adding new file 103 // CommitRecordEntry entry = entries.iterator().next(); 104 // assertEquals(null, entry.getFromPath()); 105 // assertEquals(-1, entry.getFromRevision()); 106 // assertEquals("/test.txt", entry.getToPath()); 107 // assertEquals(1, entry.getToRevision()); 108 // assertEquals(true, entry.isFile()); 109 // assertEquals(true, entry.isTextFile()); 110 // assertEquals(1, entry.getTotalLines()); 111 // assertEquals(1, entry.getLinesAdded()); 112 // assertEquals(0, entry.getLinesDeleted()); 113 // 114 // //revision 2 115 // commitRecord = this.p.getCommitRecord(2); 116 // assertEquals(2L, commitRecord.getRevision()); 117 // assertEquals(null, commitRecord.getAuthor()); 118 // assertEquals("", commitRecord.getMessage()); 119 // assertEquals(1131014902982L, commitRecord.getCommitTime().getTime()); 120 // entries = commitRecord.getCommitRecordEntries(); 121 // assertEquals(1, entries.size()); 122 // //file rename 123 // entry = entries.iterator().next(); 124 // assertEquals("/test.txt", entry.getFromPath()); 125 // assertEquals(1, entry.getFromRevision()); 126 // assertEquals("/test1.txt", entry.getToPath()); 127 // assertEquals(2, entry.getToRevision()); 128 // assertEquals(true, entry.isFile()); 129 // assertEquals(true, entry.isTextFile()); 130 // assertEquals(1, entry.getTotalLines()); 131 // assertEquals(0, entry.getLinesAdded()); 132 // assertEquals(0, entry.getLinesDeleted()); 133 // 134 // //revision 4 135 // commitRecord = this.p.getCommitRecord(4); 136 // assertEquals(4L, commitRecord.getRevision()); 137 // assertEquals(null, commitRecord.getAuthor()); 138 // assertEquals("", commitRecord.getMessage()); 139 // assertEquals(1131015460273L, commitRecord.getCommitTime().getTime()); 140 // entries = commitRecord.getCommitRecordEntries(); 141 // assertEquals(2, entries.size()); 142 // //add a directory, and rename a file. 143 // boolean directoryChecked = false; 144 // boolean fileChecked = false; 145 // for (Iterator i = entries.iterator(); i.hasNext(); ) { 146 // entry = (CommitRecordEntry) i.next(); 147 // if (entry.getToPath().equals("/d")) { 148 // assertEquals(null, entry.getFromPath()); 149 // assertEquals(-1, entry.getFromRevision()); 150 // assertEquals("/d", entry.getToPath()); 151 // assertEquals(4, entry.getToRevision()); 152 // assertEquals(false, entry.isFile()); 153 // assertEquals(false, entry.isTextFile()); 154 // directoryChecked = true; 155 // } 156 // else if (entry.getToPath().equals("/d/test1.txt")) { 157 // assertEquals("/test1.txt", entry.getFromPath()); 158 // assertEquals(2, entry.getFromRevision()); 159 // assertEquals("/d/test1.txt", entry.getToPath()); 160 // assertEquals(4, entry.getToRevision()); 161 // assertEquals(true, entry.isFile()); 162 // assertEquals(true, entry.isTextFile()); 163 // fileChecked = true; 164 // } 165 // else { 166 // fail("Unexpected entry."); 167 // } 168 // } 169 // if (!directoryChecked || !fileChecked) { 170 // fail("Error in rev 4"); 171 // } 172 // 173 // //revision 5 174 // commitRecord = this.p.getCommitRecord(5); 175 // assertEquals(5L, commitRecord.getRevision()); 176 // assertEquals(null, commitRecord.getAuthor()); 177 // assertEquals("", commitRecord.getMessage()); 178 // assertEquals(1131015935056L, commitRecord.getCommitTime().getTime()); 179 // entries = commitRecord.getCommitRecordEntries(); 180 // assertEquals(1, entries.size()); 181 // //file modification 182 // entry = entries.iterator().next(); 183 // assertEquals("/d/test1.txt", entry.getFromPath()); 184 // assertEquals(4, entry.getFromRevision()); 185 // assertEquals("/d/test1.txt", entry.getToPath()); 186 // assertEquals(5, entry.getToRevision()); 187 // assertEquals(true, entry.isFile()); 188 // assertEquals(true, entry.isTextFile()); 189 // assertEquals(2, entry.getTotalLines()); 190 // assertEquals(1, entry.getLinesAdded()); 191 // assertEquals(0, entry.getLinesDeleted()); 192 // 193 // //revision 6 194 // commitRecord = this.p.getCommitRecord(6); 195 // assertEquals(6L, commitRecord.getRevision()); 196 // assertEquals(null, commitRecord.getAuthor()); 197 // assertEquals("", commitRecord.getMessage()); 198 // assertEquals(1131016379795L, commitRecord.getCommitTime().getTime()); 199 // entries = commitRecord.getCommitRecordEntries(); 200 // assertEquals(1, entries.size()); 201 // //file deletion 202 // entry = entries.iterator().next(); 203 // assertEquals("/t.txt", entry.getFromPath()); 204 // assertEquals(5, entry.getFromRevision()); //added in rev 3, not touched in 205 // rev 4 and 5 206 // assertEquals(null, entry.getToPath()); 207 // assertEquals(6, entry.getToRevision()); 208 // assertEquals(true, entry.isFile()); 209 // assertEquals(true, entry.isTextFile()); 210 // assertEquals(0, entry.getTotalLines()); 211 // assertEquals(0, entry.getLinesAdded()); 212 // assertEquals(3, entry.getLinesDeleted()); 213 // 214 // //revision 9 215 // commitRecord = this.p.getCommitRecord(9); 216 // assertEquals(9L, commitRecord.getRevision()); 217 // assertEquals(null, commitRecord.getAuthor()); 218 // assertEquals("", commitRecord.getMessage()); 219 // assertEquals(1131204918532L, commitRecord.getCommitTime().getTime()); 220 // entries = commitRecord.getCommitRecordEntries(); 221 // assertEquals(1, entries.size()); 222 // //binary file addition 223 // entry = entries.iterator().next(); 224 // assertEquals(null, entry.getFromPath()); 225 // assertEquals(-1, entry.getFromRevision()); 226 // assertEquals("/d/text2binary.dat", entry.getToPath()); 227 // assertEquals(9, entry.getToRevision()); 228 // assertEquals(true, entry.isFile()); 229 // assertEquals(false, entry.isTextFile()); 230 // } 231 }