001: /*
002: * DiffTest.java
003: *
004: * Created on July 3, 2006, 3:18 PM
005: *
006: * To change this template, choose Tools | Template Manager
007: * and open the template in the editor.
008: */
009:
010: package org.netbeans.test.subversion.main.diff;
011:
012: import java.io.File;
013: import java.io.PrintStream;
014: import junit.textui.TestRunner;
015: import org.netbeans.jellytools.EditorOperator;
016: import org.netbeans.jellytools.JellyTestCase;
017: import org.netbeans.jellytools.NbDialogOperator;
018: import org.netbeans.jellytools.OutputTabOperator;
019: import org.netbeans.jellytools.nodes.Node;
020: import org.netbeans.jellytools.nodes.SourcePackagesNode;
021: import org.netbeans.jemmy.JemmyProperties;
022: import org.netbeans.jemmy.QueueTool;
023: import org.netbeans.jemmy.TimeoutExpiredException;
024: import org.netbeans.jemmy.operators.JButtonOperator;
025: import org.netbeans.junit.NbTestSuite;
026: import org.netbeans.test.subversion.operators.CheckoutWizardOperator;
027: import org.netbeans.test.subversion.operators.RepositoryStepOperator;
028: import org.netbeans.test.subversion.operators.VersioningOperator;
029: import org.netbeans.test.subversion.operators.WorkDirStepOperator;
030: import org.netbeans.test.subversion.utils.RepositoryMaintenance;
031: import org.netbeans.test.subversion.utils.TestKit;
032: import org.netbeans.junit.ide.ProjectSupport;
033: import org.netbeans.test.subversion.operators.DiffOperator;
034:
035: /**
036: *
037: * @author pvcs
038: */
039: public class DiffTest extends JellyTestCase {
040:
041: public static final String TMP_PATH = "/tmp";
042: public static final String REPO_PATH = "repo";
043: public static final String WORK_PATH = "work";
044: public static final String PROJECT_NAME = "JavaApp";
045: public File projectPath;
046: public PrintStream stream;
047: String os_name;
048:
049: /** Creates a new instance of DiffTest */
050: public DiffTest(String name) {
051: super (name);
052: }
053:
054: protected void setUp() throws Exception {
055: os_name = System.getProperty("os.name");
056: //System.out.println(os_name);
057: System.out.println("### " + getName() + " ###");
058:
059: }
060:
061: protected boolean isUnix() {
062: boolean unix = false;
063: if (os_name.indexOf("Windows") == -1) {
064: unix = true;
065: }
066: return unix;
067: }
068:
069: public static void main(String[] args) {
070: // TODO code application logic here
071: TestRunner.run(suite());
072: }
073:
074: public static NbTestSuite suite() {
075: NbTestSuite suite = new NbTestSuite();
076: suite.addTest(new DiffTest("testDiffFile"));
077: return suite;
078: }
079:
080: public void testDiffFile() throws Exception {
081: //JemmyProperties.setCurrentTimeout("ComponentOperator.WaitComponentTimeout", 30000);
082: //JemmyProperties.setCurrentTimeout("DialogWaiter.WaitDialogTimeout", 30000);
083: try {
084: TestKit.closeProject(PROJECT_NAME);
085:
086: stream = new PrintStream(new File(getWorkDir(), getName()
087: + ".log"));
088: VersioningOperator vo = VersioningOperator.invoke();
089: CheckoutWizardOperator co = CheckoutWizardOperator.invoke();
090: RepositoryStepOperator rso = new RepositoryStepOperator();
091:
092: //create repository...
093: File work = new File(TMP_PATH + File.separator + WORK_PATH
094: + File.separator + "w" + System.currentTimeMillis());
095: new File(TMP_PATH).mkdirs();
096: work.mkdirs();
097: RepositoryMaintenance.deleteFolder(new File(TMP_PATH
098: + File.separator + REPO_PATH));
099: //RepositoryMaintenance.deleteFolder(new File(TMP_PATH + File.separator + WORK_PATH));
100: RepositoryMaintenance.createRepository(TMP_PATH
101: + File.separator + REPO_PATH);
102: RepositoryMaintenance.loadRepositoryFromFile(TMP_PATH
103: + File.separator + REPO_PATH, getDataDir()
104: .getCanonicalPath()
105: + File.separator + "repo_dump");
106: rso.setRepositoryURL(RepositoryStepOperator.ITEM_FILE
107: + RepositoryMaintenance.changeFileSeparator(
108: TMP_PATH + File.separator + REPO_PATH,
109: false));
110:
111: rso.next();
112: WorkDirStepOperator wdso = new WorkDirStepOperator();
113: wdso.setRepositoryFolder("trunk/" + PROJECT_NAME);
114: wdso.setLocalFolder(work.getCanonicalPath());
115: wdso.checkCheckoutContentOnly(false);
116: wdso.finish();
117: //open project
118: OutputTabOperator oto = new OutputTabOperator(
119: "file:///tmp/repo");
120: oto.getTimeouts().setTimeout(
121: "ComponentOperator.WaitStateTimeout", 30000);
122: // oto.clear();
123: oto.waitText("Checking out... finished.");
124: NbDialogOperator nbdialog = new NbDialogOperator(
125: "Checkout Completed");
126: JButtonOperator open = new JButtonOperator(nbdialog,
127: "Open Project");
128: open.push();
129:
130: TestKit.waitForScanFinishedAndQueueEmpty();
131:
132: //modify, save file and invoke Diff
133: oto = new OutputTabOperator("file:///tmp/repo");
134: oto.getTimeouts().setTimeout(
135: "ComponentOperator.WaitStateTimeout", 30000);
136: oto.clear();
137: Node node = new Node(new SourcePackagesNode(PROJECT_NAME),
138: "javaapp|Main.java");
139: node.performPopupAction("Open");
140: EditorOperator eo = new EditorOperator("Main.java");
141: eo.deleteLine(2);
142: eo.insert(" insert", 5, 1);
143: eo.insert("\tSystem.out.println(\"\");\n", 19, 1);
144: eo.save();
145: node.performPopupAction("Subversion|Show Changes");
146: Thread.sleep(1000);
147: vo = VersioningOperator.invoke();
148: //Save action should change the file annotations
149: org.openide.nodes.Node nodeIDE = (org.openide.nodes.Node) node
150: .getOpenideNode();
151: String color = TestKit.getColor(nodeIDE
152: .getHtmlDisplayName());
153: String status = TestKit.getStatus(nodeIDE
154: .getHtmlDisplayName());
155: assertEquals(
156: "Wrong color of node - file color should be new!!!",
157: TestKit.MODIFIED_COLOR, color);
158: assertEquals(
159: "Wrong annotation of node - file status should be new!!!",
160: TestKit.MODIFIED_STATUS, status);
161: assertEquals(
162: "Wrong number of records in Versioning view!!!", 1,
163: vo.tabFiles().getRowCount());
164:
165: node.performPopupAction("Subversion|Diff");
166: System.out
167: .println("DIFF action doesn't print information into OUTPUT!!!");
168: //oto.waitText("Annotating... finished.");
169: Thread.sleep(2000);
170:
171: DiffOperator diffOp = new DiffOperator("Main.java");
172: //
173: try {
174: TimeoutExpiredException afee = null;
175: diffOp.next();
176: diffOp.next();
177: try {
178: diffOp.next();
179: } catch (TimeoutExpiredException e) {
180: afee = e;
181: }
182: assertNotNull("TimeoutExpiredException was expected.",
183: afee);
184:
185: //verify previous button
186: afee = null;
187: diffOp.previous();
188: diffOp.previous();
189: try {
190: diffOp.previous();
191: } catch (TimeoutExpiredException e) {
192: afee = e;
193: }
194: assertNotNull("TimeoutExpiredException was expected.",
195: afee);
196: } catch (Exception e) {
197: System.out
198: .println("Problem with buttons of differences");
199: }
200:
201: //TestKit.removeAllData(PROJECT_NAME);
202: stream.flush();
203: stream.close();
204:
205: } catch (Exception e) {
206: throw new Exception("Test failed: " + e);
207: } finally {
208: TestKit.closeProject(PROJECT_NAME);
209: }
210: }
211: }
|