| <html><head><title>Team/CVS Test Plan</title><style type='text/css'>h1 {color: white;background-color: #0080C0;padding-left: 1ex;padding-right: 1ex;}h1 {font-weight: bold;padding-top: 0.5ex;padding-bottom: 0.5ex;margin-top: 0;}</style></head><body> | |
| <!-- KEEP START --> | |
| <h1>Eclipse Team and CVS 3.3 Test Plan</h1> | |
| This plan contains a detailed listing of the features available in the | |
| Eclipse CVS plug-in. There are some items that don't have many steps | |
| but are meant as a reminder that the features exist and should be | |
| tested. If you want to help, please feel free to hammer away on some | |
| bits of functionality.<br> | |
| <br> | |
| For a more verbose explanation of the CVS plug-in please refer to our | |
| documentation.<br> | |
| <h2>CVS Server Versions</h2> | |
| We focus our testing on the latest stable *nix server version. We will | |
| however sniff test the latest developer *nix server and the cvsnt | |
| server. In addition, we will run our automated tests on all three | |
| flavours. The current server lineup is:<br> | |
| <br> | |
| Latest Stable: <span style="font-weight: bold;">1.11.22</span><br> | |
| Latest Development: <span style="font-weight: bold;">1.12.13</span><br> | |
| CVS NT: <strong>2.5.03.2382</strong> | |
| <h2>Testing Tips</h2> | |
| <ul> | |
| <li><font color="#000000">test corner cases</font></li> | |
| <li>test setups which we typically don't use during development (for | |
| example no Plug-in developement)</li> | |
| <li><font color="#000000">handling of error situations</font> | |
| <ul> | |
| <li><font color="#000000">watch log</font></li> | |
| <li><font color="#000000">error messages</font></li> | |
| </ul> | |
| </li> | |
| </ul> | |
| <ul> | |
| <li>Whenever you have to fill in data in dialogs try to foul the | |
| dialog by providing incomplete or bogus input</li> | |
| <li>Watch for view updating (package explorer, browsing perspective, | |
| outliner) when source content gets changed</li> | |
| </ul> | |
| <ul> | |
| <li>change font for text editor and dialogs to different font</li> | |
| <li>check that dialogs are rendered correctly | |
| <ul> | |
| <li>specified dialog font is used</li> | |
| <li>no buttons and labels clipped</li> | |
| </ul> | |
| </li> | |
| </ul> | |
| <ul> | |
| <li>detached views</li> | |
| <li>dialogs pop up on correct monitor</li> | |
| </ul> | |
| <h2>Platforms</h2> | |
| <table border="1" width="821"> | |
| <tbody> | |
| <tr bgcolor="#cccccc"> | |
| <th colspan="4"> | |
| <div align="center"> <b><font size="+1">Eclipse Reference | |
| Platforms</font></b> </div> | |
| </th> | |
| </tr> | |
| <tr> | |
| <td width="205"><b>Operating system</b></td> | |
| <td width="76"><b>Processor architecture</b></td> | |
| <td width="59"><b>Window system</b></td> | |
| <td width="453"><b>Tester</b></td> | |
| </tr> | |
| <tr> | |
| <td width="205">Microsoft Windows XP</td> | |
| <td width="76">Intel x86</td> | |
| <td width="59">Win32</td> | |
| <td width="453"><br> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td width="205">Red Hat Enterprise Linux WS 3</td> | |
| <td width="76">Intel x86</td> | |
| <td width="59">GTK</td> | |
| <td width="453"><br> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <h2>Tests</h2> | |
| <!-- KEEP END --> | |
| <ul> | |
| <li><a href="#00004.html">Repositories View</a> | |
| <ul> | |
| <li><a href="#repoview_basics00001.html">Basics</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00007.html">Check Out - prompts</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#checkoutwizard00001.html">Check Out Wizard</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#datetags_repoview00001.html">Tags</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#00026.html">Sharing</a> | |
| <ul> | |
| <li><a href="#00027.html">Sharing as a subfolder</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#sharingbasics00001.html">Basics</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00028.html">Reconnecting an existing project</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00050.html">Sharing a new project</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#project_sets00001.html">Project Sets</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#00044.html">Replacing</a> | |
| <ul> | |
| <li><a href="#00045.html">With latest</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00046.html">With another branch of version</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00047.html">With file revision</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#update_command00001.html">Updating</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#00008.html">Comparing</a> | |
| <ul> | |
| <li><a href="#00009.html">Remote resources</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00039.html">Compare with another branch or version</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00040.html">Reverting deleted resources</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00041.html">File Revisions</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#quickdiff00001.html">Quick Diff</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#00010.html">Synchronizing</a> | |
| <ul> | |
| <li><a href="#00048.html">Performing a Synchronize</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00011.html">Synchronize View</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00049.html">Decorations</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#change_sets00001.html">Change Sets</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#sync00001.html">Scenarios</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#syncRestart00001.html">Restart Behavior</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#commit00001.html">Commit</a> | |
| <ul> | |
| <li><a href="#commit00002.html">Committing Changes</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#tags00001.html">Tags</a> | |
| <ul> | |
| <li><a href="#tags00002.html">Tag Selection in Dialogs</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#tags00003.html">Tag Caching</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#00012.html">Branch/Merge</a> | |
| <ul> | |
| <li><a href="#00022.html">Performing a Merge</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00013.html">Synchronize View</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#branch00001.html">Branching</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#00029.html">Patching</a> | |
| <ul> | |
| <li><a href="#00030.html">Importing a zip over a shared project</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#00014.html">History View</a> | |
| <ul> | |
| <li><a href="#00018.html">Editor Linking</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#toolbarButtonsUMFile00001.html">Common Toolbar Buttons</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#groupByDateUMFile00001.html">Group Revisions by Date</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#localHistoryUnsharedFiles00001.html">Local History for Unshared Files</a> | |
| <ul> | |
| <li><a href="#DNDUMFile00001.html">Drag and Drop Unmapped File</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#showHistoryUMFile00001.html">Show History Unmapped File</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#cvsHistory00001.html">CVS History</a> | |
| <ul> | |
| <li><a href="#DNDCFile00001.html">Drag and Drop CVS File</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00024.html">Annotate</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#modeSwitching00001.html">Mode Switching</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#pinHistoryView00001.html">Pin History View</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#refreshHistory00002.html">Refresh</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#00020.html">Concurrency</a> | |
| <ul> | |
| <li><a href="#00021.html">Close and disconnect</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#00023.html">Restarting Workbench</a> | |
| <ul> | |
| <li><a href="#00019.html">Crash Recovery</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00025.html">Synchronize View Settings</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#00028a.html">SSH2</a> | |
| <ul> | |
| <li><a href="#00029a.html">Server version compatibiliity</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00030a.html">Proxies</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00031.html">Generating keys</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00032.html">General use</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#00033.html">Annotate</a> | |
| <ul> | |
| <li><a href="#00034.html">Show Annotation Action</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#00035.html">Label Decorations</a> | |
| <ul> | |
| <li><a href="#00036.html">Enablement at startup</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00037.html">Customizations</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#00038.html">Decorations in the Synchronize pages</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#watch_edit00001.html">Watch/Edit</a> | |
| <ul> | |
| <li><a href="#watch_edit_basic00001.html">Basic scenarios</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#watch_edit_editorsview00001.html">Editors View</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#perf00001.html">Performance</a> | |
| <ul> | |
| <li><a href="#perf00002.html">Timings</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#perf00004.html">Resource Data Structures</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#perf00005.html">Looking For Leaks</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#perf00006.html">Team Data Structures</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#perf00007.html">Scalability</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#failures00001.html">Failure Cases</a> | |
| <ul> | |
| <li><a href="#connections00001.html">Connections</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#auth_problems00001.html">Authentication Problems</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#misc00001.html">Misc</a> | |
| <ul> | |
| <li><a href="#00042.html">CVS Console</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#encoding00001.html">Encoding Support</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#passwords00001.html">Password Management</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#ext_connection_method00001.html">EXT</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#keys00001.html">Key Bindings</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#validate_edit00001.html">Validate Edit</a> | |
| <ul> | |
| <li><a href="#validate_edit_editing_files00001.html">Editing Files</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#validate_edit_refactoring00001.html">Refactoring</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| <li><a href="#logical00001.html">Logical Resource Support</a> | |
| <ul> | |
| <li><a href="#logical00002.html">Java Packages</a> | |
| <ul> | |
| </ul> | |
| <li><a href="#logical00003.html">Working Sets</a> | |
| <ul> | |
| </ul> | |
| </ul> | |
| </ul> | |
| <h1>Repositories View</h1> | |
| <a name="repoview_basics00001.html"> | |
| <h2>Basics</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2005/05/10 18:44:21 $</p> | |
| <h3>Adding and Discarding Locations</h3> | |
| <p>You should be able to create a repository location from the toolbar of the view or via the context menu. | |
| Try expanding the location, the HEAD, Versions and Branches categories. Also, | |
| try the failures cases from <a href="connections00001.html">Connections</a>. | |
| Things to try: | |
| <ul> | |
| <li>Create repo locations for different connection types: ext, pserver, extssh. | |
| <li>Create a repo location ny pasting a location string into the host field (e.g. | |
| :pserver:anonymous@dev.eclipse.org:/home/eclipse). | |
| <li>Expanding project nodes should process the children in the background and the | |
| view should remain responsive while this is happening. When children nodes are added to the | |
| tree the tree shouldn't be too jumpy. | |
| <li>Discard a location and ensure it is removed. Also ensure that discarding is not permitted when | |
| projects in the local workspace are shared with the location. | |
| </ul> | |
| </p> | |
| <h3>Repository Location Properties</h3> | |
| View a location's properties page and ensure that information is correct and can be changed. | |
| Ensure that the sharing information for any projects mapped to the location are also changed. | |
| <h3>Modules</h3> | |
| <h3>Working with modules</h3> | |
| <ul> | |
| <li>Expanding HEAD or the Versions category should display the modules defined in the CVSROOT/modules file</li> | |
| <li>Check Out and Checkout As should be availabel on modules and should work as expected</li> | |
| <li>Performing a "Configure Branches and Versions" on the module allows the user to set the autorefresh file and add some tags. | |
| Ensure that the module now appears properly in association with those tags.</li> | |
| </ol> | |
| <a name="00007.html"> | |
| <h2>Check Out - prompts</h2> | |
| <p>Since: 3.0 M5<br> | |
| Last Modified: $Date: 2004/06/01 19:14:48 $</p> | |
| <h3>Scenario 1</h3> | |
| <ol> | |
| <li>Select a project in HEAD</li> | |
| <li>Perform a Checkout</li> | |
| <li>Ensure project was checked out properly</li> | |
| <li>Select the same project and choose Checkout As</li> | |
| <li>Use the same name and specify a custom location</li> | |
| <li>Ensure that the user is prompted to overwrite</li> | |
| <li>Ensure OK and Cancel have proper behavior</li> | |
| </ol> | |
| <h3>Scenario 2</h3> | |
| <ol> | |
| <li>Select a project in HEAD</li> | |
| <li>Perform a Checkout</li> | |
| <li>Ensure project was checked out properly</li> | |
| <li>Delete the project but leave the contents on disk</li> | |
| <li>Perform a Checkout of the same project again</li> | |
| <li>Ensure that the user is prompted to overwrite</li> | |
| <li>Ensure OK and Cancel have proper behavior</li> | |
| </ol> | |
| <h3>Scenario 3</h3> | |
| <ol> | |
| <li>Select a project in HEAD</li> | |
| <li>Perform a Checkout As</li> | |
| <li>Use the same name and specify a custom location</li> | |
| <li>Ensure project was checked out properly</li> | |
| <li>Delete the project but leave the contents on disk</li> | |
| <li>Perform a Checkout As of the same project to the same location as in step 3</li> | |
| <li>Ensure that the user is prompted to overwrite</li> | |
| <li>Ensure OK and Cancel have proper behavior</li> | |
| </ol> | |
| <h3>Scenario 4</h3> | |
| <ol> | |
| <li>Select a project in HEAD</li> | |
| <li>Perform a Checkout As</li> | |
| <li>Use the same name and specify a custom location</li> | |
| <li>Ensure project was checked out properly</li> | |
| <li>Delete the project but leave the contents on disk</li> | |
| <li>Perform a Checkout on the project</li> | |
| <li>Ensure project was checked out properly</li> | |
| <li>Perform a Checkout As of the same project to the same location as in step 3</li> | |
| <li>Ensure that the user is prompted twice: once to overwrite project and once to overwrite custom location</li> | |
| <li>Ensure OK and Cancel have proper behavior</li> | |
| </ol> | |
| <a name="checkoutwizard00001.html"> | |
| <h2>Checkout Wizard</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/01 19:14:48 $</p><body> | |
| <p>The checkout wizard should be available from the following parts of the workbench: | |
| import, new project, empty workspace CVS synchronize action, toolbar in CVS perspective. | |
| The checkout wiard is also available from the context menu of the repositories view | |
| as the Checkout As menu item.</p> | |
| <p>The following variants should be tested: | |
| <ul> | |
| <li>Create a new repository location and checkout a project entirely from the wizard. | |
| <li>Check out a tag | |
| <li>Check out a project that does not contain a .project file. This should result in | |
| a second wizard that allows projct configuration (e.g. Java project). | |
| </ul> | |
| <h3>Repositories View Checkout Variants</h3> | |
| These test require an existing repository which contains projects, at least one of which | |
| does not contain a .project file. | |
| <ol> | |
| <li>Perform "Check Out" on a single project. Ensure that repeating results in overwrite prompt.</li> | |
| <li>Perform "Check Out" on multiple projects.</li> | |
| <li>Perform "Check Out As..." on a single project (that contains a .project file) and enter custom name and/or custom location.</li> | |
| <li>Perform "Check Out As..." on a single remote project that does not have a .project file and | |
| ensure that the user is prompted for the project type to create.</li> | |
| <li>Perform "Check Out As..." on multipe projects and enter a custom parent location.</li> | |
| <li>Perform "Check Out As..." and specify a tag.</li> | |
| </ol> | |
| <a name="datetags_repoview00001.html"> | |
| <h2>Tags</h2> | |
| <p>Since: 3.0<br> | |
| Last Modified: $Date: 2004/06/01 19:14:48 $</p><body> | |
| <h3>Refresh Branches and Versions</h3> | |
| <ol> | |
| <li>Select a repository location and perform "Refresh Branches and Versions...". | |
| <li>Select one or more projects that contain a .project file and have been tagged with branch and version tags and click finish.</li> | |
| <li>Expand the respository entry to view ... | |
| <ul> | |
| <li>projects in HEAD,</li> | |
| <li>branches and projects in BRANCHES,</li> | |
| <li>projects and versions in VERSIONS.</li> | |
| </ul> | |
| </ol> | |
| <h3>Configure Branches and Versions</h3> | |
| <ol> | |
| <li>Select a project in the repositories view and perform "Configure Branches and Versions...". | |
| <li>Select some branch and version tags to be remembered.</li> | |
| <li>Expand the respository entry to view ... | |
| <ul> | |
| <li>projects in HEAD,</li> | |
| <li>branches and projects in BRANCHES,</li> | |
| <li>projects and versions in VERSIONS.</li> | |
| </ul> | |
| </ol> | |
| <h3>Date Tags</h3> | |
| The ability to create Date tags should be available from the following locations: | |
| <ul> | |
| <li>Repositories view</li> | |
| <li>Configure Branches and Versions dialog | |
| <li>Tag selection dialogs (Compare with and Replace with Branch or Version) | |
| </ul> | |
| <h1>Sharing</h1> | |
| <a name="00027.html"> | |
| <h2>Sharing as a subfolder</h2> | |
| <p>Since: 3.0 M6<br> | |
| Last Modified: $Date: 2004/02/25 20:34:42 $</p> | |
| <p>Perform the following steps:</p> | |
| <ol> | |
| <li>Create a new project</li> | |
| <li>Select Team>Share</li> | |
| <li>Select a repository and click next</li> | |
| <li>Enter a path with at least two segments as the remote module name</li> | |
| <li>Click Finish</li> | |
| </ol> | |
| <p>Ensure that the project was shared properly (i.e. remote folders were created). | |
| <a name="sharingbasics00001.html"> | |
| <h2>Basics</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/01 19:14:48 $</p> | |
| <p>Single select a project and select share.</p> | |
| <ul> | |
| <li>Should only be available if the project is not shared. | |
| <li>Menu item should be available from the Project top level menu. | |
| <li>Wizard should allow you to cancel at any time and un-map the project. Note that some resources may of been committed via the wizard that will remain committed. | |
| <li>Should be able to share as a repository root {".") or a folder at any level (i.e. a folder name with one or more paths). | |
| </ul> | |
| <a name="00028.html"> | |
| <h2>Reconnecting an existing project</h2> | |
| <p>Since: 3.0 M6<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <p> | |
| The following scenario represents how a user would reconnect a project that does | |
| not contain CVS meta-data to it's remote counterpart. It is assumed that the local project | |
| was derived from a previous version of the remote project but both the local project and | |
| the remote may have been modified since then. | |
| </p> | |
| <h3>Scenario 1: Existing location using project name</h3> | |
| <p>Perform the following steps:</p> | |
| <ol> | |
| <li>Load an existing project (using Checkout or you could import a plug-in project from the target area)</li> | |
| <li>Disconnect the project and indicate that CVS meta-data is to be deleted</li> | |
| <li>Modify some local resources</li> | |
| <li>Optionally, modify the remote contents of some resources using a separate checkout</li> | |
| <li>Perform a Team>Share Project and select CVS (if there is more than one | |
| repository provider available).</li> | |
| <li>Select the repository the project was loaded from and click Next.</li> | |
| <li>Use the project name as the module name. Click Next.</li> | |
| <li>In the tag page, select HEAD as the branch to share with and click Next</li> | |
| <li>In the sharing page, only the files that do not have the same contents | |
| as the server should appear. Perform a Mark as Merged or Commit on these | |
| files. | |
| <li>Click Finish.</li> | |
| </ol> | |
| <h3>Scenario 1: New location using curstom module name</h3> | |
| <p>Perform the following steps:</p> | |
| <ol> | |
| <li>Load an existing project using Checkout As and a different name</li> | |
| <li>Disconnect the project and indicate that CVS meta-data is to be deleted</li> | |
| <li>Discard the repository location<li> | |
| <li>Modify some local resources</li> | |
| <li>Optionally, modify the remote contents of some resources using a separate checkout</li> | |
| <li>Perform a Team>Share Project and select CVS (if there is more than one | |
| repository provider available).</li> | |
| <li>Select to create a new repository and click Next</li> | |
| <li>Enter the repository information for the repository and click Next</li> | |
| <li>Enter the name of the module that the project was loaded from. Click Next.</li> | |
| <li>In the tag page, select HEAD as the branch to share with and click Next</li> | |
| <li>In the sharing page, only the files that do not have the same contents | |
| as the server should appear. Perform a Mark as Merged or Commit on these | |
| files. | |
| <li>Click Finish.</li> | |
| </ol> | |
| <a name="00050.html"> | |
| <h2>Sharing a new project</h2> | |
| <p>Since: 3.0 M8<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <h3>Scenario 1: Existing location using project name</h3> | |
| <p>Perform the following steps:</p> | |
| <ol> | |
| <li>Create a new project that does not exist in the repository</li> | |
| <li>Select Team>Share and select CVS (if there is more than one | |
| repository provider available).</li> | |
| <li>Select a repository and click Next</li> | |
| <li>Use the project name as the module name. Click Next.</li> | |
| <li>After a time, the last page should show the outgoing changes in the project. | |
| Commit the changes from the synchronize pane.</li> | |
| <li>Click Finish</li> | |
| </ol> | |
| <h3>Scenario 2: New location using different name</h3> | |
| <p>Perform the following steps:</p> | |
| <ol> | |
| <li>Create a new project</li> | |
| <li>Select Team>Share and select CVS (if there is more than one | |
| repository provider available).</li> | |
| <li>Select to create a new repository and click Next</li> | |
| <li>Enter the repository information for a new repository and click Next</li> | |
| <li>Enter a single segment module name that does not exist in the repository and click Next.</li> | |
| <li>After a time, the last page should show the outgoing changes in the project. | |
| Commit the changes from the synchronize pane.</li> | |
| <li>Click Finish</li> | |
| </ol> | |
| <a name="project_sets00001.html"> | |
| <h2>Project Sets</h2> | |
| <p>Since: 2.1 <br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <ul> | |
| <li>Create a project set from a workspace with multiple projects shared with CVS. The shared projects in the workspace should include projects shared with the following: branch, version, date, and HEAD. | |
| <li>Start with an empty workspace and import the projects using the import projects sets wizard. | |
| <li>You should be prompted for a password and username for the locations. | |
| <li>Ensure that the projects are checked out correctly and against the correct tag. | |
| </ul> | |
| <h1>Replacing</h1> | |
| <a name="00045.html"> | |
| <h2>With latest</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <p>Ensure that replace srubs the local resources leaving to outgoing changes. And verify the following: | |
| <ul> | |
| <li> | |
| </ul> | |
| <a name="00046.html"> | |
| <h2>With another branch of version</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2005/05/10 16:16:42 $</p> | |
| <p>Check the following for all cases of replace: | |
| <ul> | |
| <li>decorators are updated in the navigator/packages view and synchronize view. | |
| <li>if a version is loaded that you can't commit to it | |
| <li>if a branch is loaded, that you can commit to it. | |
| </ul> | |
| <p> | |
| Also ensure that the tag filtering in the dialog works properly. | |
| <a name="00047.html"> | |
| <h2>With file revision</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <ul> | |
| <li>If the file isn't managed the action should no appear. | |
| <li>If the file doesn't have any revisions you should be prompted | |
| <li>If the file has revisions you should be prompted with the list of revisions in a compare dialog | |
| <li>In the compare dialog you can select any revision and compare changes but merging isn't supported | |
| <li>If a revision is selected the Replace button should be enabled. Otherwise it should be disabled | |
| <li>If you selected the replace button the file should contain the contents of the revision selected. The dialog will also close. | |
| <li>Ensure that the titles are ok (e.g. dialog title, structure pane title...) | |
| </ul> | |
| <a name="update_command00001.html"> | |
| <h2>Updating</h2> | |
| <p>Since: 2.0 <br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <p>You can run an update and open the console to see the files that are being updated.</p> | |
| <p>You can run the update and switch to another branch, this should keep your outgoing changes and update all other non-changed files.</p> | |
| <h1>Comparing</h1> | |
| <a name="00009.html"> | |
| <h2>Remote resources</h2> | |
| <p>Since: 3.0 M5<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <h4>Compare With... in Repositories view </h4> | |
| <p>Perform the following steps:</p> | |
| <ol> | |
| <li>Select a project in HEAD and choose Compare With... from context menu</li> | |
| <li>Select a branch tag</li> | |
| <li>Ensure result of comparison is correct</li> | |
| <li>Repeat and in step 2) use a version tag</li> | |
| </ol> | |
| <p>Repeat the above steps for a project in a branch and a project version.</p> | |
| <p>Repeat the above steps for a selected folder and a selected file.</p> | |
| <h4>Compare on two selections in Repositories view</h4> | |
| <p>Perform the following steps:</p> | |
| <ol> | |
| <li>Select a project in HEAD</li> | |
| <li>CTRL-select a project in a branch</li> | |
| <li>Choose Compare from context menu</li> | |
| <li>Ensure result of comparison is correct</li> | |
| </ol> | |
| <p>Repeat the above for various conbinations (branch + version, version + branch, | |
| branch + branch, version + version).</p> | |
| <p>Repeat the above steps for a selected folder and a selected file.</p> | |
| <h4>Compare on two selections in Resource History view.</h4> | |
| <p>Perform the following steps:</p> | |
| <ul> | |
| <li>Open Resource History view on a file with multiple revisions</li> | |
| <li>Select 2 and choose Compare from the context menu</li> | |
| <li>Ensure result of comparison is correct</li> | |
| </ul> | |
| <a name="00039.html"> | |
| <h2>Compare with another branch or version</h2> | |
| <p>Since: M8<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <p> | |
| You should be able to select a project/folder/resource and compare againts | |
| another branch or version. Multi-select should work across projects in | |
| different repositories. Once the comparison is shown it should be possible to | |
| merge changes into the local workspace. It should also be possible to remember | |
| the comparison, which will cause it to appear in the synchronize view.</p> | |
| <p> | |
| We should support multi-selection of files, but I'm not sure what should be | |
| shown to the user in those cases.</p> | |
| <h3>On file selected</h3> | |
| <ul> | |
| <li>If the file has differences open a compare editor and show otherwise a message is shown to indicate that the file is the same. | |
| <li>should be able to open the history view and link in to the opened compare editor | |
| <li>the compare editor should update when changes are made to the local file in some other context (e.g other editor, refactoring). | |
| </ul> | |
| <h3>Multiple selection</h3> | |
| <p>Entire contents of the folder are compared deep. If changes are found the user is notified and they are | |
| shown in a dialog. If no changes are found the user is notified. The dialog should allow the user to browse | |
| the changes and merge anything into his workspace. If the user wants to keep the comparison non-model, he | |
| can add it to the synchronize view. There is a button to do so on the compare dialog.</p> | |
| <h3>Merging changes</h3> | |
| <p> | |
| When the compare dialog is showing several changes you should be able to selectively merge anything into the local workspace. Specific attention should | |
| be made to the following cases: | |
| </p> | |
| <ul> | |
| <li>Edit the local then press ok. You should be prompted to save the changes and the changes should be correctly updated in the corresponding resource. | |
| <li>Edit the local and browse to another file. You should be prompted to save the changes. | |
| <li>Press the cancel button with changes, you should be prompted. | |
| </ul> | |
| <a name="00040.html"> | |
| <h2>Reverting deleted resources</h2> | |
| <p>Since: M8<br> | |
| Last Modified: $Date: 2004/06/01 19:14:48 $</p> | |
| You should be able to restore a deleted revision from the CVS server Team>Restore from Repository | |
| <a name="quickdiff00001.html"> | |
| <h2>Quick Diff</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <p>Enable CVS quick diff for text and java files via the Workbench > Editors > QuickDiff preference. Then try the following | |
| scenarios.</p> | |
| <ol> | |
| <li>Open a file and make changes to it. You will see the quickdiff annotations | |
| marking the changes. Next, run Team > Replace with latest. The annotations are | |
| removed and the file is clean. | |
| <li>same as 1 but this time instead commit the file. The quickdiff annotations | |
| are removed and the file is clean. | |
| <li>checkout two copies of the same project. Open file1 from both projects. Make | |
| changes to file1 in project1 and commit the change. Synchronize project2 and | |
| file1 from project1 will show the quickdiff annotations for the new incoming | |
| changes. | |
| <li> same as previous but this time actually update the file. The files quickdiff | |
| annotations are removed and the file is clean. | |
| </ol> | |
| <h1>Synchronizing</h1> | |
| <a name="00048.html"> | |
| <h2>Performing a Synchronize</h2> | |
| <p>Since: 3.0<br> | |
| Last Modified: $Date: 2006/04/25 17:34:55 $</p> | |
| <p> | |
| Synchronizing means to compare your local workspace contents with the contents | |
| in another location with the goal that the two locations should contain the | |
| same contents at some point. | |
| </p> | |
| <h3>Performing a Synchronize operation</h3> | |
| <p> | |
| There are a few ways of launching a synchronize operation. They all open the same dialog but the initial | |
| selection is affected by where the operation is launched. Here is the list of ways to start a | |
| synchronize along with the expected initial selection. | |
| <ul> | |
| <li><b>Using the global synchronize action (via toolbar or keybinding)</b>: The | |
| selection should be obtained from the active view. If no view is active, all | |
| projects should be selected. | |
| <li><b>Using the Synchronize button in toolbar of the Synchronize view</b>: | |
| All projects should be selected. | |
| <li><b>Selecting Synchronize from the context menu of resources in the synchronize view</b>: | |
| The selection should match what was selected when the menu was selected. | |
| <li><b>Selecting Team > Synchronize with Repository from the context menu of any resource based view</b>: | |
| The selection should match what was selected when the menu was selected. | |
| </ul> | |
| </p> | |
| <p> | |
| Once launched, a synchronize will run in the background. Currently, the user is prompted to | |
| switch perspectives when the synchronize is launched. When a synchronize completes, the user is prompted either with a dialog stating there is no changes | |
| or one that contains a details area that shows the incoming changes. The user | |
| is given the option to supress the post-synchronize dialog. | |
| <h3>Notice a file is out-of-sync in another view (e.g. packages explorer, types) and want to see the changes</h3> | |
| <p>In case you can select a file, it will be refreshed with the server, and if changes are found the compare editor is opened | |
| that will allow browsing the changes. If no changes are found, you will be prompted.</p> | |
| <h3>From another view would like to browse the outgoing/incoming changes for several resources</h3> | |
| <p>Select a folder or group of files and Team > Synchronize will open the sync view and automatically refresh with | |
| the remote repository.</p> | |
| <h3>In the sync view and would like to refresh to see if there are new changes from the server</h3> | |
| <p> | |
| </p> | |
| Assumption, the sync view may or may not be open when the synchronize is performed. Maybe we need a different prompt | |
| each case. One for Team > Sync and another for refresh from the sync view. | |
| <a name="00011.html"> | |
| <h2>Synchronize View</h2> | |
| <p>Since: 3.0<br> | |
| Last Modified: $Date: 2006/04/25 17:34:55 $</p> | |
| <h3>Synchronize View Modes</h3> | |
| <p> | |
| Ensure that choosing direction modes result in proper filtering. | |
| <ul> | |
| <li>Incoming mode contains incoming changes and conflicts.</li> | |
| <li>Outgoing mode contains outgoing changes and conflicts.</li> | |
| <li>Both mode contains all change types.</li> | |
| <li>Conflict mode contains only conflicts.</li> | |
| </ul> | |
| </p> | |
| <p> | |
| Also ensure that there are no empty containers (e.g folders or projects) | |
| in any of the modes.</p> | |
| <h3>Synchronize View Models</h3> | |
| <p> | |
| Ensure that each model contains the appropriate output. Models to test include: | |
| <ul> | |
| <li>All Models: Projects should contain content from the highest level model | |
| (e.g. Java projects contains Java content like packages while non-Java projects | |
| contains folders).</li> | |
| <li>Workspace: All projects are shown and contain folders. For this model, also test | |
| the presentation types (Flat, Hierarchical and Compressed Folders).</li> | |
| <li>Java: Only Java projects are present and contain Jva content (e.g. packages). Also | |
| ensure that any resource content is present (e.g. non-source folders).</li> | |
| <li>Change Sets: All changes are grouped by change set.</li> | |
| </ul> | |
| </p> | |
| <p> | |
| Also ensure that mode switching works properly for each model type. | |
| </p> | |
| <h3>Synchronize View Operations</h3> | |
| <p>Ensure Commit and Update buttons:</p> | |
| <ul> | |
| <li>operate on all applicable changes</li> | |
| <li>prompt in some form before executing</li> | |
| </ul> | |
| <p>Ensure Update menu action:</p> | |
| <ul> | |
| <li>is enabled when selection contains incoming or conflicting changes</li> | |
| <li>operates only on selected changes</li> | |
| <li>silently handles mergable conflicts</li> | |
| <li>will prompt if conflicts are not mergable</li> | |
| </ul> | |
| <p>Ensure Commit menu action</p> | |
| <ul> | |
| <li>is enable when selection contains outgoing changes</li> | |
| <li>prompts for unadded resources</li> | |
| <li>operates only on selected changes</li> | |
| </ul> | |
| <p>Ensure Override and Update</p> | |
| <ul> | |
| <li>is enabled for outgoing and conflicting changes</li> | |
| <li>prompts to confirm</li> | |
| <li>operates only on selected changes</li> | |
| </ul> | |
| <p>Ensure Override and Update</p> | |
| <ul> | |
| <li>is enabled for outgoing and conflicting changes</li> | |
| <li>prompts to confirm</li> | |
| <li>operates only on selected changes</li> | |
| </ul> | |
| <p>Ensure Mark as Merged</p> | |
| <ul> | |
| <li>is enabled for incoming and conflicting changes</li> | |
| <li>operates only on selected changes</li> | |
| </ul> | |
| <p>Ensure Refresh button refreshes all projects regardless of mode, selection | |
| or working set.</p> | |
| <p>Ensure Refresh menu action refreshes only the selection</p> | |
| <p>All actions on large sets</p> | |
| The following table can be used to determine what operations are appropriate and what result to expect. | |
| <table height="124" border="1" width="99%"> | |
| <tbody> | |
| <tr> | |
| <td width="25%"><b>Change Type</b></td> | |
| <td width="25%"><b>Action</b></td> | |
| <td width="50%"><b>Result</b></td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Incoming File Change</b></td> | |
| <td width="25%">Update</td> | |
| <td width="50%">Remote contents become local. Try with both Text and | |
| Binary files.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Incoming File Change</b></td> | |
| <td width="25%">Mark as Merged</td> | |
| <td width="50%">File becomes an outgoing change.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Incoming File Addition</b></td> | |
| <td width="25%">Update</td> | |
| <td width="50%">Remote contents become local. Try with both Text and | |
| Binary files.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Incoming File Addition</b></td> | |
| <td width="25%">Mark as Merged</td> | |
| <td width="50%">File becomes an outgoing deletion.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Incoming File Deletion</b></td> | |
| <td width="25%">Update</td> | |
| <td width="50%">Local file is deleted.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Incoming File Deletion</b></td> | |
| <td width="25%">Mark as Merged</td> | |
| <td width="50%">File bcomes an outgoing addition.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Outgoing File Change</b></td> | |
| <td width="25%">Commit</td> | |
| <td width="50%">Prompt for release comment. Cancel aborts, OK commits | |
| local file to server.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Outgoing File Change</b></td> | |
| <td width="25%">Override and Update</td> | |
| <td width="50%">Remote contents become local. Try | |
| with both Text and Binary files.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Outgoing File Addition</b></td> | |
| <td width="25%">Add to Version Control</td> | |
| <td width="50%">Adds the file to version control. The icon should change | |
| in the sync view, and Commit should now be enabled.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Outgoing File Addition</b></td> | |
| <td width="25%">Add to .cvsignore</td> | |
| <td width="50%">Adds the file to .cvsignore. The file should disappear | |
| from the sync view. The .cvsignore file should appear (if it wasn't visible | |
| already). The file should not appear in subsequent syncs.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Outgoing File Addition</b></td> | |
| <td width="25%">Commit</td> | |
| <td width="50%">Prompt for release comment shoudl also include prompt for file | |
| type if the type of the new file is not known. Cancel | |
| aborts, OK commits local file to server.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Outgoing File Addition</b></td> | |
| <td width="25%">Override and Update</td> | |
| <td width="50%">Local file is deleted.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Outgoing File Deletion</b></td> | |
| <td width="25%">Commit</td> | |
| <td width="50%">Prompt for release comment. Cancel aborts, OK commits | |
| deletion to server.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Outgoing File Deletion</b></td> | |
| <td width="25%">Override and Update</td> | |
| <td width="50%">File is re-created, remote contents | |
| become local.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Conflicting File Change</b></td> | |
| <td width="25%">Update</td> | |
| <td width="50%">If the change is auto-mergable, the file becomes | |
| an outgoing change and includes the remote changes and the local changes. | |
| Otherwise, the user is prompted to indicate that a merge was not possible.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Conflicting File Change</b></td> | |
| <td width="25%">Mark As Merged</td> | |
| <td width="50%">File becomes an outgoing change.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Conflicting File Change</b></td> | |
| <td width="25%">Override and Update</td> | |
| <td width="50%">Dialog prompts user to replace local changes. If user | |
| cancels nothing happens. If user chooses OK, then local changes are discarded | |
| and remote contents replace local. No .# files created, no CVS markup, and | |
| the file is not dirty as a result.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Conflicting File Addition</b></td> | |
| <td width="25%">Mark as Merged</td> | |
| <td width="50%">File becomes an outgoing change.</td> | |
| </tr> | |
| <tr> | |
| <td width="25%"><b>Conflicting File Addition</b></td> | |
| <td width="25%">Override and Update</td> | |
| <td width="50%">Remote contents become local.</td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <a name="00049.html"> | |
| <h2>Decorations</h2> | |
| <p>Since: M8<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| There are many standard decorations in the sync view. Most significant are the propagated flags. | |
| <h3>Conflicts</h3> | |
| <p> | |
| Conflicting changes should be propagated to parent resources such that you can easily see, when the tree | |
| is collapsed that there are conflicts. When the conflict is resolved, the parent conflict markers should be | |
| removed. | |
| </p> | |
| <h3>Error and Warning problem markers</h3> | |
| <p> | |
| Error and warning makers are shown on resources and propagated to parent resources such that you can | |
| easily see if you are releasing errors or warnings. | |
| </p> | |
| <h3>Branch changes</h3> | |
| <p> | |
| Changes to branches, revisions, should be updated automatically in the views decorators. For example, if you branch | |
| from the sync view the branch name should appear. | |
| </p> | |
| <a name="change_sets00001.html"> | |
| <h2>Change Sets Layout</h2> | |
| <p>Since: 3.1 M2<br> | |
| Last Modified: $Date$</p> | |
| <h3>Change Sets for incoming changes</h3> | |
| To perform these scenarios you will need to get one or more projects | |
| in your workspace that have many incoming changes. Perferably | |
| all the changes will have commit comments and some files will share | |
| a comment. Once you have this setup, you can perform the following sub-scenarios. | |
| <h4>Enabling/disabling Change Sets</h4> | |
| <ol> | |
| <li>Synchronize the projects with HEAD, enable change set mode and | |
| ensure that the files appear in the proper change sets. Also ensure that | |
| the proper sub-layout is used by expanding some of the nodes in the tree. | |
| <p> | |
| <li>With some nodes expanded and additionally one or more selected, | |
| disable Change Sets. The same nodes should remain expanded and selected. | |
| <p> | |
| <li>With the same nodes selected and expanded, re-enable change sets. | |
| The expansion should remain. There may be more expanded if the same | |
| expanded project or folder appears in multiple change sets. The selection | |
| will remain unless there are two entries for the same resource (i.e. if a project | |
| was selected and it apears in multiple sets, it will no longer be expanded). | |
| </ol> | |
| You should also confirm that markers and conflicts are properly propogated to | |
| parent nodes. | |
| <h4>Change Set Layouts</h4> | |
| Now try the various sub-layouts (Flat, Tree and Compressed) and ensure that switching | |
| is performant and that the resulting tree nodes are correct. | |
| <h4>Change Set Modes</h4> | |
| <ol> | |
| <li>Switch between the various modes and ensure that the displayed nodes are correct. | |
| Also ensure that expansion and seleciton is maintained. | |
| <li>Only Incomign and Outgoing mode shw change sets. | |
| </ol> | |
| <h4>Updating</h4> | |
| With several nodes expanded, perform an update on one or more files | |
| that are incoming changes. | |
| Ensure that the updated files are removed from the view and that | |
| other expanded nodes remain expanded. | |
| <h3>Outgoing Sets</h3> | |
| The following aspects of outgoing change sets should be tested. | |
| <ol> | |
| <li>Modified files can be added to a new or existing change set. Ensure that | |
| when they are added, he file remains visible in the Sync view. | |
| <li>Files in a change set can be transfered to another change set | |
| <li>If there is a default change set, any modified file that is not already | |
| part of a change set is placed in the default set. Files that are already | |
| in a set should stay in that set if more changes are made to the files. | |
| <li>The title and comment of a change set can be changed. | |
| <li>Layout and modes changes work properly for outgoing change sets in the | |
| Synchronize view. | |
| <li>ing one or more files in a change set will result in a commit | |
| dialog that is primed with the comment from the set. | |
| <li>change sets (including which is the default), are preserved accross restarts. | |
| </ol> | |
| <a name="sync00001.html"> | |
| <h2>Scenarios</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/01 19:14:48 $</p> | |
| <h3>Making Manual Changes</h3> | |
| <p>Create a conflicting file change. Manually edit the left source pane in | |
| the sync view. Hit "Save" on the popup menu. The file should remain a Conflict. Choose | |
| Mark as Merged in the popup menu of the tree. The file should change to | |
| an outgoing change. Commit the outgoing change.</p> | |
| <h3>Merging Conflicts</h3> | |
| <p>Try Override and Update with different combinations of Auto-Mergeable | |
| and Non-Mergeable conflicts in the selection. If all conflicts are Non-Mergeable, | |
| then the only choice is to replace with remote or cancel. If one or more | |
| conflicts are Auto-Mergeable, the choices are (a) Auto-Merge any applicable | |
| files, and replace the rest with remote, (b) Replace all files with remote | |
| or (c) Cancel.</p> | |
| <h3>Removing from View</h3> | |
| <p>Choose Remove from View. Selected nodes should disappear. Refresh the | |
| view. The nodes should reappear.</p> | |
| <h3>Working with Branches</h3> | |
| <p>Try any and all of the above, but use a branch instead of HEAD. Behaviour | |
| should be identical. The sync view decorator should show you the name of | |
| the branch.</p> | |
| <h3>Using Mixed Tags</h3> | |
| <p>Using Team->Branch, Replace With->Branch or Version, and Team->Tag | |
| as Version, you can create a project which has different tags mixed into | |
| it. For example, one folder may be shared as V2_0, a single file may be attached | |
| to the branch NEW_FEATURE_BRANCH, and the root of the project may be attached | |
| to HEAD. We need to test usage of these projects in the sync view. For example, | |
| if developer 1 has project P shared with HEAD, and folder P/F is shared | |
| with branch B, have developer 2 release a change to folder F in HEAD, and | |
| have developer 1 perform a sync. In this case developer 1 should not see | |
| the incoming change.</p> | |
| <a name="syncRestart00001.html"> | |
| <h2>Restart Behavior</h2> | |
| <p>Since: 3.3<br> | |
| Last Modified: $Date$</p> | |
| <h1>Synchronization Restart Behavior</h1> | |
| CVS Synchronizations can be configured to populate or synchronize | |
| after a restart. To test this, do the following. | |
| <ol> | |
| <li>Create a CVS synchronization of each persisted type (Workspace and Merge).</li> | |
| <li>Restart and see the page that allwos you to populat or restart.</li> | |
| <li>Choose to remember the operation</li> | |
| <li>Pick an operation and ensure that the behavior is respected | |
| </li> | |
| </ol> | |
| You will want to repeat these steps for both operations | |
| (Synchronize and Populate) and you shoudl also repeat them | |
| using the preference page available from the view menu in the | |
| Synchronize view. | |
| <h1>Commit</h1> | |
| <a name="commit00002.html"> | |
| <h2>Committing Changes</h2> | |
| <p>Since: 3.1 M4<br> | |
| Last Modified: $Date: 2005/02/04 21:58:25 $</p> | |
| <h3>Commiting changes to existing files</h3> | |
| <ol> | |
| <li>Edit some existing files in a CVS project | |
| <li>Choose Team>Commit on the project from the Navigator | |
| <li>The commit dialog should show a preview of the files that are to be committed and allow a commit comment to be entered. | |
| </ol> | |
| <p> | |
| Some things to try: | |
| <ul> | |
| <li>Committing a project (or selected resources) that contain no changes will prompt to indicate this. | |
| <li>Files can be removed from the preview area and these will be excluded from the commit. | |
| <li>Clicking OK without entering a comment should prompt. | |
| <li>Emptying the preview area will disable the Finish and show a "no changes" message. | |
| <li>Try different page layouts (compressed, tree and flat) | |
| </ul> | |
| <h3>Commiting new files</h3> | |
| <ol> | |
| <li>Add a few new files to a project including some with unknown extensions and some with no extensions. | |
| <li>Choose Team>Commit on the project from the Navigator | |
| <li>The first page of the commit wizard will allow you to configure the file types for any new files whose content type | |
| cannot be determined. | |
| <ul> | |
| <li>Configure some to be remembered and others to be only applied to this commit (verify after that this was done properly) | |
| </ul> | |
| <li>Click Next and verify that the content type was determined properly. | |
| <li>Choose to ignore one of the files and verify that the file is removed and the .cvsignore appears. | |
| </ol> | |
| <h3>Commiting files contained in a Change Set</h3> | |
| <ol> | |
| <li>From the Synchronize view, select all the changes from the same Change Set. | |
| <li>Choose Commit and verify that the comment in the commit dialog is the one from the change Set. | |
| </ol> | |
| <h1>Tags</h1> | |
| <a name="tags00002.html"> | |
| <h2>Tag Selection in Dialogs</h2> | |
| <p>Since: 3.1 M4<br> | |
| Last Modified: $Date: 2005/02/04 21:58:25 $</p> | |
| Tag lists appear in many dialogs: | |
| <ul> | |
| <li>Replace with Branch or Version | |
| <li>Compare with Branch or Version | |
| <li>Share of existing project | |
| <li>Switch to Another Branch or Versions | |
| <li>Tag with Existing | |
| <li>Tag as Version | |
| </ul> | |
| <p> | |
| In each of these places, typing in the tag text field will filter the list of shown tags. | |
| The option to Refresh and Configure tags should also be present. Refreshing behavior should be as follows: | |
| <ol> | |
| <li>If an auto-refresh file (.project by default) exists and has tags, the tags are obtained from the file. | |
| <li>If there is no auto-refresh file, the log command is used to determine if there are any tags in the files | |
| that are direct children of the remote folder. | |
| <li>If no tags are found, the user is prompted to either perform a deep log to find any tags or configure the | |
| tags manually. | |
| </ol> | |
| <a name="tags00003.html"> | |
| <h2>Tag Caching</h2> | |
| <p>Since: 3.1 M4<br> | |
| Last Modified: $Date: 2005/02/04 21:58:25 $</p> | |
| Discovered tags are cached locally to improve performance. Caching is done in the following ways: | |
| <ol> | |
| <li>Tags discovered for local resources are cached with the rmeote folder that the resource's project is mapped to. | |
| <li>Tags discovered for remote resources are cached with the resource if it is a folder or the resource's parent if it is a file. | |
| </ol> | |
| To test this, you can try one or more of the following: | |
| <ol> | |
| <li>Perform Compare With on folders and subfolders in the repositories view. The first time, you will need to perform a Refresh \ | |
| but subsequent times, the tags should be cached. | |
| <li>Load non-root folders as projects and ensure tags are cached and obtained properly. | |
| <li>Perform Tag with Existing in the History view and ensure that tags are obtained from the file | |
| </ol> | |
| <h1>Branch/Merge</h1> | |
| <a name="00022.html"> | |
| <h2>Performing a Merge</h2> | |
| <p>Since: 3.1<br> | |
| Last Modified: $Date: 2005/05/10 16:16:42 $</p> | |
| <h3>Scenario 1: One Time Merge</h3> | |
| <p> | |
| Using Team>Merge, merge the changes from a branch into HEAD. Once completed, in the synchronize view, | |
| update the incoming changes, resolve any conflicts and ensure they worked, After updating, | |
| redo the same merge. A no-changes dialog should be | |
| presented since the local contents match the end-point. | |
| <p> | |
| Things to try: | |
| <ul> | |
| <li>Use content assist to select an existing branch for the end tag. A root versions should ne automatically found if it exists. | |
| <li>Choose to perform the merge into the local workspace. Ensure it works with and without a start tag. | |
| </ul> | |
| <h3>Scenario 2: Ongoing Merge</h3> | |
| After performing a one-time merge, pin the entry in the synchronize view. | |
| Release changes to the end point (branch) and synchronize the merge. | |
| The new changes should appear in the synchronize view. Update to these | |
| changes as appropriate. | |
| <h3>Scenario 3: Direct Merge</h3> | |
| Perform a Team>Merge and choose to merge directly intro the workspace. Try both the | |
| case with a base tag and without it. | |
| <h3>Removing a Merge</h3> | |
| <p>Delete the merge from the synchronize view using the remove toolbar button. The merge subscriber should be removed from the view. | |
| <a name="00013.html"> | |
| <h2>Synchronize View</h2> | |
| <p>Since: 3.0 M5<br> | |
| Last Modified: $Date: 2004/06/01 19:14:48 $</p> | |
| <ul> | |
| <li>Same scenarios as <a href="00011.html">CVS Synchronize View</a> except you can't commit. | |
| <li>Test mark as merged (ensure that it can work on large data sets) | |
| </ul> | |
| <a name="branch00001.html"> | |
| <h2>Branching</h2> | |
| <p>Since: 3.1 M4<br> | |
| Last Modified: $Date: 2005/02/04 21:58:25 $</p> | |
| <ol> | |
| <li>Choose Team>Branch from the context menu of the Navigator. | |
| <li>Enter a branch tag. | |
| <li>Verify that a version tag is proposed for the branch | |
| <li>Click OK and verify that the tags are applied and the local project is mapped to the branch | |
| </ol> | |
| <p> | |
| Some things to try: | |
| <ul> | |
| <li>Uncheck the "start working on branch" option and verify that the local project is not moved to the branch. | |
| <li>Branch a loaded version and verify that the tag from the project is used as the root. | |
| <li>Ensure that the content assist on the branch text widget shows branches from other projects in the workspace | |
| that do not exist on the project being branched. | |
| <li>Branch with local changes and ensurethat they remain and can be committed to the branch | |
| </ul> | |
| <h1>Patching</h1> | |
| <a name="00030.html"> | |
| <h2>Importing a zip over a shared project</h2> | |
| <p>Since: 3.0 M6<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <p>This scenario captures one means of patching. It assumes that a zip file contains | |
| a previous version of a project that has been modified in some way and added to | |
| a zip archive (without CVS directories).</p> | |
| <p>Perform the following steps:</p> | |
| <ol> | |
| <li>Load the project from CVS (using Checkout or some other means)</li> | |
| <li>Import the zip over the loaded project.</li> | |
| <li>Ensure that the sync states are Outgoing for all resources from the zip file.</li> | |
| <li>Ensure that all folders from the zip file (except new ones) | |
| are marked as in-sync and all files (except new ones) are outgoing changes. | |
| <li>Changing the comparison criteria to compare contents should not contact the server | |
| and should leave only the resources that differ in the sync view. Perform a | |
| Mark As Merged and a Commit on these resources.</li> | |
| <li>Changing the comparison criteria back to revision number will reveal all the files | |
| whose content did not change, perform a Mark as merged on these resources followed by | |
| a Team>Update on the project in the Navigator (Note: This could be handled better).</li> | |
| <li>After the update, ensure the project has no out-of-sync resources.</li> | |
| </ol> | |
| <h1>History View</h1> | |
| <a name="00018.html"> | |
| <h2>Editor Linking</h2> | |
| <p>Since: 3.0 M5<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <ol> | |
| <li>Open the Resource History view and enable editor linking</li> | |
| <li>Open a compare editor from the sync view (on a resource that exists remotely) | |
| and ensure that the history view updates.</li> | |
| <li>Open an editor from the Repositories vew and ensure that the history view | |
| updates.</li> | |
| <li>Open an editoron a local file and ensure that the history view updates.</li> | |
| </ol> | |
| <p>Repeat the above with the Resource History view hidden and ensure that no revision | |
| history is fetched (i.e. no jobs appear in progress view).</p> | |
| <a name="toolbarButtonsUMFile00001.html"> | |
| <h2>Common Toolbar Buttons</h2> | |
| <p>Since: 3.2 RC2 <br> | |
| Last Modified: $Date: 2006/04/25 20:40:39 $</p> | |
| <p><b>Purpose:</b> Test the functionality of the various buttons common to both the Local File History page and the CVS History page</p> | |
| Note: Even though the functionality is the same for both pages, the tests should be conducted on both an unmanaged file and a CVS file as each history page has its own respective implementation for the following actions. | |
| <hr></hr> | |
| <h3>Compare Mode</h3> | |
| <p> | |
| <ol> | |
| <li>With a file history in the History View and the Compare Mode button <b>off</b>, click on any revision and | |
| verify that it opens that revision.</li> | |
| <li>Click the Compare Mode button <b>on</b> and verify that clicking on any local file revision will now bring up the compare editor.</li> | |
| <li>Verify that turning the Compare Mode button off again switches back to Open mode.</li> | |
| </ol> | |
| </p> | |
| <hr></hr> | |
| <h3>Collapse All</h3> | |
| <p> | |
| <ol> | |
| <li>With a file history in the History View, and the Group by Date button <b>on</b>, click the Collapse All button.</li> | |
| <li>Verify that all of the items in the tree are collapsed.</li> | |
| </ol> | |
| </p> | |
| <hr></hr> | |
| <h3>Group Revisions By Date</h3> | |
| <p>See <a href="groupByDateUMFile00001.html">Group Revisions By Date</a></p> | |
| <hr></hr> | |
| <h3>Pin History View</h3> | |
| <p>See <a href="pinHistoryView00001.html">Pin History View</a></p> | |
| <hr></hr> | |
| <h3>Link With Editor</h3> | |
| <p>See <a href="00018.html">Link With Editor</a></p> | |
| <hr></hr> | |
| <h3>Refresh</h3> | |
| <p>See <a href="refreshHistory00002.html">Refresh</a></p> | |
| <a name="groupByDateUMFile00001.html"> | |
| <h2>Group Revisions by Date</h2> | |
| <p>Since: 3.2 RC2 <br> | |
| Last Modified: $Date: 2006/04/25 20:40:39 $</p> | |
| <p><b>Purpose:</b> Test the group by date mechanism for both local history and cvs history.</p> | |
| <ol> | |
| <li>Open the History view.</li> | |
| <li>Roll back your system clock 1 day, make a change to your local unmapped file and save it.</li> | |
| <li>Roll back your system clock to the beginning of the month and make some changes to the local unmapped file and save it.</li> | |
| <li>Roll back your system clock to anywhere before the beginning of the current month, make a change to the local unmapped file and save it.</li> | |
| <li>Reset your clock to the current date and show the file's history (DND or [Team>Show Local History]/[Team>Show History] for local and CVS files respectively).</li> | |
| <li>Verify that the revisions appear in the appropriate categories: Today, Yesterday, This Month and Previous.</li> | |
| <li>Click the Group by Revisions Date button and make sure that the categories toggle on and off.</li> | |
| </ol> | |
| <p>The above should be tested with history from both an unmanaged file and a CVS file.</p> | |
| <h1>Local History for Unshared Files</h1> | |
| <a name="DNDUMFile00001.html"> | |
| <h2>Drag and Drop Unmapped File</h2> | |
| <p>Since: 3.2 RC2 <br> | |
| Last Modified: $Date: 2006/04/25 20:40:39 $</p> | |
| <p><b>Purpose:</b> Test the DND mechanism for unmapped files.</p> | |
| <ol> | |
| <li>Open the History view.</li> | |
| <li>Drag the local file over to it.</li> | |
| <li>Ensure the the history view shows the appropriate history (i.e. all revisions | |
| present and proper filename in the title bar).</li> | |
| </ol> | |
| <p>Drag another file over to the History View from a project that is <i>shared with a CVS repository.</i> Repeat the above | |
| and make sure that the View updates.</p> | |
| <a name="showHistoryUMFile00001.html"> | |
| <h2>Show History Unmapped File</h2> | |
| <p>Since: 3.2 RC2 <br> | |
| Last Modified: $Date: 2006/04/25 20:40:39 $</p> | |
| <p><b>Purpose:</b> Test the page activation mechanism for unmapped files.</p> | |
| <ol> | |
| <li>Open the History view.</li> | |
| <li>Select the local file, right click and select Team>Show Local History.</li> | |
| <li>Ensure the the history view shows the appropriate history (i.e. all revisions | |
| present and proper filename in the title bar).</li> | |
| </ol> | |
| <p>Populate the History View with another file from a project that is <i>shared with a CVS repository.</i> Repeat the above | |
| and make sure that the View updates.</p> | |
| <h1>CVS History</h1> | |
| <a name="DNDCFile00001.html"> | |
| <h2>Drag and Drop CVS File</h2> | |
| <p>Since: 3.2 RC2 <br> | |
| Last Modified: $Date: 2006/04/25 20:40:39 $</p> | |
| <p><b>Purpose:</b> Test the DND mechanism for CVS files.</p> | |
| <ol> | |
| <li>Open the History view.</li> | |
| <li>Drag the CVS file over to it.</li> | |
| <li>Ensure the the history view shows the appropriate history (i.e. all revisions | |
| present and proper filename in the title bar).</li> | |
| </ol> | |
| <p>Drag another file over to the History View from a project that is <b>not</b> shared with a CVS repository. Repeat the above | |
| and make sure that the View updates.</p> | |
| <a name="00024.html"> | |
| <h2>Annotate</h2> | |
| <p>Since: 3.0 M6<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <h4>Annotate action should be available from</h4> | |
| <ul> | |
| <li>history view, repo explorer, resource/packages view | |
| </ul> | |
| <h4>Annotate java files</h4> | |
| <ul> | |
| <li>should show the java editor | |
| <li>you should be able to step through changes in the annotate view and the java editor should | |
| stay in sync (e.g. highlight) the changes associated with the selected change in the annotate view. | |
| <li>you should also be able to select a line in the java file and the annotate view should | |
| select the change that is associated with that line. | |
| <li>the history view should show the history for the opened file and highlight the revision | |
| of the currently selected change in the annotate view. | |
| </ul> | |
| <h4>Annotate non-text editor files</h4> | |
| <ul> | |
| <li>annotate plugin.xml file | |
| <li>the default text editor should be shown | |
| <li>you should also be able to select a line in the text file and the annotate view should | |
| select the change that is associated with that line. | |
| <li>the history view should show the history for the opened file and highlight the revision | |
| of the currently selected change in the annotate view. | |
| </ul> | |
| <h4>Annotate binary files</h4> | |
| <ul> | |
| <li>annotate a file marked as binary | |
| <li>the server should report an error that annotations cannot be shown for binary files. | |
| </ul> | |
| <a name="modeSwitching00001.html"> | |
| <h2>Mode Switching</h2> | |
| <p>Since: 3.2 RC2 <br> | |
| Last Modified: $Date: 2006/04/25 21:31:43 $</p> | |
| <p><b>Purpose:</b> Test the mode switching for the CVS History Page.</p> | |
| <h3>Basic Mode Testing</h3> | |
| <p> | |
| <ol> | |
| <li>Open the History view.</li> | |
| <li>Open any file that is being managed by CVS.</li> | |
| <li>Edit the file and save.</li> | |
| <li>Show the history for the file.</li> | |
| <li>Click on the Local and Remote Revisions button. Verify that you can see both remote revisions and local revisions.</li> | |
| <li>Click on the Local Revisions button. Verify that you can see only local revisions. Note: <i>No background fetching should occur when you switch modes!</i></li> | |
| <li>Click on the Remote Revisions button. Verify that you can see only remote revisions. Note: <i>No background fetching should occur when you switch modes!</i></li></li> | |
| </ol> | |
| </p> | |
| <h3>Mode Persistence Testing</h3> | |
| <p> | |
| <ol> | |
| <li>Open the History view.</li> | |
| <li>Show the history for the file.</li> | |
| <li>Click on one of the modes, remember it and close the history view.</li> | |
| <li>Show the history for a file again and verify that it is in fact the same mode that you had set prior to closing the history view.</li> | |
| </ol> | |
| </p> | |
| <a name="pinHistoryView00001.html"> | |
| <h2>Pin History View</h2> | |
| <p>Since: 3.2 RC2<br> | |
| Last Modified: $Date: 2006/04/25 20:40:39 $</p> | |
| <p><b>Purpose:</b> Test the pinning behaviour of the history view.</p> | |
| <h3>Simple Pinning</h3> | |
| <p> | |
| <ol> | |
| <li>With a file history in the History View, hit the Pin button.</li> | |
| <li>DND a file onto the pinned history view.</li> | |
| <li>Verify that a new history view instance opens with the history of the new file displayed.</li> | |
| <li>Drag another file onto the pinned instance and verify that it too goes to the new unpinned view.</li> | |
| </ol> | |
| Repeat the above using both a CVS file and an unmanaged file. | |
| </p> | |
| <h3>More Pinning</h3> | |
| <p>If a one of the views already contains a file, that file should always update the pinned | |
| view. | |
| <ol> | |
| <li>With a file history in the History View, hit the Pin button.</li> | |
| <li>DND a file onto the pinned history view.</li> | |
| <li>Verify that a new history view instance opens with the history of the new file displayed.</li> | |
| <li>Now show the history for the original file in the pinned view. The pin view should come to the fore front.</li> | |
| </ol> | |
| </p> | |
| <a name="refreshHistory00002.html"> | |
| <h2>Refresh</h2> | |
| <p>Since: 3.2 RC2<br> | |
| Last Modified: $Date: 2006/04/25 20:40:39 $</p> | |
| <p><b>Purpose:</b> Test the two types of refresh behaviour available in the history view</p> | |
| <h3>Automatic Refresh</h3> | |
| <p> When a local file is modified and saved, a refresh event is sent out and the history view should show the newest revision. This | |
| will work for both local history and CVS history files. (CVS files need to have the history view in the appropriate viewing mode: either | |
| "Remote and Local Revisions" or "Local Revisions".) | |
| <ol> | |
| <li>With a file history in the History View, and the viewer in an appropriate mode if a CVS file, open an editor on the workspace | |
| copy of the file in the history view.</li> | |
| <li>Edit the file and save.</li> | |
| <li>Verify that a new local revision gets added to the history view which reflects your change.</li> | |
| </ol> | |
| </p> | |
| <h3>Manual Refresh</h3> | |
| <p> There is also a Refresh button on the toolbar. This is mainly useful for CVS file histories if you want to check if any revisions have been committed. | |
| Note that its not really of any use for local revisions as they are updated automatically. | |
| <ol> | |
| <li>With a CVS file history in the History View, make a change to the file and save. (You should see the local version updated in the history view.)</li> | |
| <li>Commit the file.</li> | |
| <li>Hit the Refresh toolbar button and verify that the new revision gets displayed in the history view,</li> | |
| </ol> | |
| </p> | |
| <h1>Concurrency</h1> | |
| <a name="00021.html"> | |
| <h2>Close and disconnect</h2> | |
| <p>Since: 3.0 M5<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <h4>Background refresh and disconnect</h4> | |
| <ol> | |
| <li>Load several projects from the repository</li> | |
| <li>Ensure that several have outgoing and incoming changes</li> | |
| <li>Choose one project to disconnect. The project should have incoming and outgoing | |
| changes and be one of the later ones in the refresh order (alphebetical).</li> | |
| <li>Perform a refresh on all the projects</li> | |
| <li>While the refresh is occuring, disconnect the project chosen in step 3) | |
| and leave CVS folders.</li> | |
| <li>Ensure that the project is removed from the sync view and no errors occur</li> | |
| </ol> | |
| <p>Repeat the steps and purge the CVS meta-data in step 5).</p> | |
| <p>Repeat the above steps but change the operation in step 5) to the following:</p> | |
| <ul> | |
| <li>close project</li> | |
| <li>project where server is unreachable</li> | |
| <li>delete project</li> | |
| <li>binary project import over source project with outgoing changes</li> | |
| </ul> | |
| <h4>Decoration and disconnect</h4> | |
| <ul> | |
| <li>Load several projects from the repository</li> | |
| <li>Ensure that several have outgoing and incoming changes</li> | |
| <li>Choose one project to disconnect. The project should have incoming and outgoing | |
| changes and be one of the later ones in the refresh order (alphebetical).</li> | |
| <li>Turn on CVS decorators</li> | |
| <li>As the decorations are being calculated, disconnect all projects from CVS | |
| control.</li> | |
| <li>Ensure that the project is removed from the sync view and no errors occur</li> | |
| </ul> | |
| <p>Repeat the above steps but change the operation in step 5) to the following:</p> | |
| <ul> | |
| <li>close project</li> | |
| <li>project where server is unreachable</li> | |
| <li>delete project</li> | |
| <li>binary project import over source project with outgoing changes</li> | |
| <li>delete or move files and folders (to test move/delete hook)</li> | |
| </ul> | |
| <h1>Restarting Workbench</h1> | |
| <a name="00019.html"> | |
| <h2>Crash Recovery</h2> | |
| <p>Since: 3.0 M5<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <p>Scenario 1</p> | |
| <ol> | |
| <li>Turn on deep dirty decoration</li> | |
| <li>Dirty a file and ensure that the file and it's parents are dirty</li> | |
| <li>Quit Eclipse so dirty state is persisted</li> | |
| <li>Restart and perform an override and update or commit and ensure file and | |
| parents are clean</li> | |
| <li>Kill Eclipse</li> | |
| <li>Restart and ensure parents and file are clean</li> | |
| </ol> | |
| <p>Scenario 2</p> | |
| <ol> | |
| <li>Check out two copies of the same project</li> | |
| <li>Dirty the same file in both projects, commit one and refresh the other in | |
| the sync view so a conflict is visible</li> | |
| <li>Quit Eclipse so that the sync state is persisted</li> | |
| <li>Restart Eclipse and perform an Override and Commit on the conflict</li> | |
| <li>Kill Eclipse</li> | |
| <li>Restart Eclipse and ensure that the sync view doesn't show the file (i.e | |
| the file is in-sync).</li> | |
| </ol> | |
| <a name="00025.html"> | |
| <h2>Synchronize View Settings</h2> | |
| <p>Since: 3.0 M6<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <h4>Saved between sessions</h4> | |
| <p>The following GUI preferences in the Synchronize View are persisted between workbench | |
| sessions. Also they are persisted for each participant. You should be able to create | |
| a merge and workspace participant, then change the settings on each. Restart Eclipse and the settings | |
| should be maintained for each participant. The persisted settings are:</p> | |
| <ul> | |
| <li>mode | |
| <li>layout | |
| <li>working set | |
| </ul> | |
| <h1>SSH2</h1> | |
| <a name="00029a.html"> | |
| <h2>Server version compatibiliity</h2> | |
| <p>Since: M6<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| This test is to ensure that the ssh2 connection method properly delagates to ssh1 | |
| when the server only supports ssh1. | |
| <a name="00030a.html"> | |
| <h2>Proxies</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| Using HTTP and SOCKS5 proxies. | |
| <a name="00031.html"> | |
| <h2>Key Generation</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| You should be able to generate private/public keys in the SSH2 preference | |
| page. Here are some scenarios for testing: | |
| <ul> | |
| <li>Generate keys and save private key without password. You should be prompted. | |
| <li>Generate keys and save private key with password. You shouldn't be prompted. | |
| <li>Generate keys and install using the sftp button. | |
| </ul> | |
| <a name="00032.html"> | |
| <h2>General use</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| This tests the prompting and usage of the SSH2 connection method: | |
| <ul> | |
| <li>Delete all files in your SSH_HOME directory. You can find this directory by opening the SSH2 preference page | |
| <li>Create a CVS repository connection of type 'extssh'. You will be prompting about the server id not being in | |
| your known_hosts file. | |
| <li>Select cancel, and error should be shown indicating that the location was not validated do you want to keep it. | |
| </ul> | |
| <h1>Annotate</h1> | |
| <a name="00034.html"> | |
| <h2>Show Annotation Action</h2> | |
| <p>Since: 3.0 M3<br> | |
| Last Modified: $Date: 2004/06/02 18:01:36 $</p> | |
| <p>Annotate a non-managed file, binary file, plugin.xml file... Be creative.</p> | |
| <p>Ensure that the annotate view, editor, and history view stay synched.</p> | |
| <h1>Label Decorations</h1> | |
| <a name="00036.html"> | |
| <h2>Enablement at startup</h2> | |
| <p>Since: 3.0 M7<br> | |
| Last Modified: $Date: 2004/06/02 18:01:36 $</p> | |
| <p>The CVS decorators should not be enabled at start-up. Verify the label decorator preference page.</p> | |
| <p>When sharing or checking out a project, the decorators will be enabled automatically.</p> | |
| <p>Disabling after they have been enabled and restarting. The decorators should be disabled. Checkout should not enable them again.</p> | |
| <p>Enable the decorations again, then disconnecting a project should clear the decorators on the project.</p> | |
| <a name="00037.html"> | |
| <h2>Customizations</h2> | |
| <p>Since: 3.1 <br> | |
| Last Modified: $Date: 2005/05/10 16:16:42 $</p> | |
| <p>You can customize the label decorations via the preference page. | |
| The customizations will | |
| take effect when apply is pressed. Resetting the defaults should work. | |
| </p> | |
| <p> | |
| You can also configure the font and color used for various resources states. | |
| There should be a link from the CVs label decorations preference page to the | |
| general colors and fonts preference page. | |
| <a name="00038.html"> | |
| <h2>Decorations in the Synchronize pages</h2> | |
| <p>Since: 3.0 M8<br> | |
| Last Modified: $Date: 2004/06/02 18:01:36 $</p> | |
| <p> | |
| CVS text label decorations should be visible in the CVS synchronize participants. We don't bother to show | |
| the images because the sync view already shows the state images. The labels should also update if the | |
| 'show change in label' preference is changed. | |
| </p> | |
| <p> | |
| Also, in the CVS synchronize view the revisions shown are the <local> - <remote>. So ensure that the correct | |
| remote is shown.</p> | |
| <p> | |
| Ensure that when the local tag changes the decorators in the sync view and navigator get updated.</p> | |
| <p>Ensure that there is no flicker in packages view when cvs decorator updated on commit, update.</p> | |
| <h1>Watch/Edit</h1> | |
| <a name="watch_edit_basic00001.html"> | |
| <h2>Basic scenarios</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/02 16:07:33 $</p> | |
| <p>To setup, goto the CVS preference page and enable watch edit for all projects checked out from CVS. And then set the prompt option to always prompt.</p> | |
| <ol> | |
| <li>Check out a project from CVS and verify that the files are marked as read-only. | |
| <li>Open a file and edit it. You should be prompted to edit it. Say yes. There should be a brief pause, then you can edit the file. | |
| <li>Open another file and start editing it. You should be prompted to edit it. Say no. The file will remain read-only and you won't be allowed to edit it. | |
| <li>Open a file and edit it. Say yes to the prompt. commit the file and edit again. You should be prompted a second time. | |
| <li>Open a file and edit it. Say yes to the prompt. Replace the file from the repository and edit again. You should be prompted to edit again. | |
| <li>Open a file and edit it. Un-plug your network connection. Say yes to the prompt to send a notification. There should be a pause, then the file should be editable. | |
| <li>Checkout another copy of the project. Edit a file, then try to edit the same file in the another project copy. You should be notified that the file is currently being edited by someone else. | |
| </ol> | |
| <p>Saving files - setup is the same as previous</p> | |
| <ol> | |
| <li>Check out a project from CVS and verify that the files are marked as read-only. | |
| <li>Open a file and edit it. You should be prompted to edit it. Say yes. There should be a brief pause, then you can edit the file. | |
| <li>Edit the file but don't save it. | |
| <li>Edit the file in a system editor outside of Eclipse, then in the resource navigator, commit the file. The resource's decorator will change. Ignore all the prompts | |
| about saving the un-saved file. | |
| <li>Return to the unsaved editor and try typing. You should be prompted to call validate edit again. | |
| </ol> | |
| <p>validateEdit fails</p> | |
| <ol> | |
| <li>Check out a project from CVS and verify that the files are marked as read-only. | |
| <li>Disconnect from network so that the validateEdit would fail. | |
| <li>Open a file and edit it. You should be prompted to edit it. Say yes. There should be a pause then the error should be reported in the | |
| editor pane showing the exception that occured. | |
| </ol> | |
| <p>Refactoring</p> | |
| <ol> | |
| <li>Check out a project from CVS and verify that the files are marked as read-only. | |
| </ol> | |
| <a name="watch_edit_editorsview00001.html"> | |
| <h2>Editors View</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/01 20:28:37 $</p> | |
| <p>Test that you can properly show the editors on a file.</p> | |
| <h1>Performance</h1> | |
| <a name="perf00002.html"> | |
| <h2>Timings</h2> | |
| <p>Since: 3.0<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| This section contains various timing results and comparisons. | |
| <h3>Overview</h3> | |
| The purpose of this section is to provide a small set of tests that can | |
| be used to benchmark the Eclipse CVS client. The areas tested are: | |
| <ol> | |
| <li>Checkout | |
| <li>Synchronizing | |
| <li>Updating | |
| </ol> | |
| <h3>Setup</h3> | |
| The following should be considered when obtaining timings: | |
| <ul> | |
| <li>The Progress view in verbose mode can add 20% or more to times. | |
| In regular mode, it can still add a bit to the time. For these timings, | |
| the view was open but hidden. | |
| <li>The Console view can add as much as 20% to times. For these tests, | |
| the console was turned off entirely. | |
| <li>Running an eclipse operation several times will "warm-up" the code path | |
| due to JIT. The timings for Eclipse were usually the secodn or third | |
| timing obtained. | |
| </ul> | |
| The following numbers were obtained on a 2.8GHz PC running GTK, Sun 14.2 | |
| with autobuild off and operations run in the forground. The project used was | |
| org.eclipse.jdt.tests.refactoring. It has a large number of folders and files | |
| which give interesting times. The date the timings were obtained were May 31st, 2004 | |
| so similar numbers can be obtained for comparison using the project snapshot at that time | |
| (which can be obtained using a Date tag). | |
| <h3>Checkout</h3> | |
| Checkout of org.eclipse.jdt.tests.refactoring as of 2004/05/31. The timings are | |
| in "mm:ss" and were obtained by obervation (i.e. stopwatch). | |
| <ul> | |
| <li>Eclipse 3.0 over pserver: 3:00 to 3:30 (several timings) | |
| <ul> | |
| <li>Timings increased slightly with progress view visible and considerably | |
| with progress view in verbose mode. | |
| </ul> | |
| <li>CLI over pserver: 3:00 (1 timing) | |
| </ul> | |
| <h3>Synchronize</h3> | |
| Synchronizing of org.eclipse.jdt.tests.refactoring as of 2004/05/31. The timings are | |
| in "mm:ss" and were obtained by obervation (i.e. stopwatch). | |
| <h4>Synchronize with no changes</h4> | |
| <ul> | |
| <li>Eclipse 3.0 over pserver: 0:45 | |
| <li>CLI over pserver: 0:42 ("cvs -n update") | |
| </ul> | |
| <h4>Synchronize with all outgoing, no incoming</h4> | |
| <ul> | |
| <li>Eclipse 3.0 over pserver: 1:00 | |
| <li>CLI over pserver: 2:20 ("cvs -n update") | |
| </ul> | |
| <h4>Synchronize with incoming changes</h4> | |
| Incoming changes were simulated by loading version v20040106 and | |
| then removing the tag (using a special utility action). This resulted | |
| in 393 incoming changes. | |
| <ul> | |
| <li>Eclipse 3.0 over pserver: 0:55 | |
| <li>CLI over pserver: 0:45 ("cvs -n update") | |
| </ul> | |
| The timing for Eclipse also includes the status command to fetch the revisions for the 393 incoming changes. | |
| <h3>Update</h3> | |
| These timings were obtained using Team>Update for Eclipse and "cvs update ." for the CLI. | |
| <h4>Update with no changes</h4> | |
| <ul> | |
| <li>Eclipse 3.0 over pserver: 1:15, 1:25 (2 timings) | |
| <li>CLI over pserver: 1:15 ("cvs update") | |
| </ul> | |
| <h4>Update with all false outgoing changes (using touch) </h4> | |
| <ul> | |
| <li>Eclipse 3.0 over pserver: 2:20 | |
| <li>CLI over pserver: 2:20 | |
| </ul> | |
| <h4>Update with incoming changes</h4> | |
| Incoming changes were simulated by loading version v20040106 and | |
| then removing the tag (using a special utility action). This resulted | |
| in 393 incoming changes. | |
| <ul> | |
| <li>Eclipse 3.0 over pserver: 1:55 | |
| <li>CLI over pserver: 1:55 ("cvs -n update") | |
| </ul> | |
| <a name="perf00004.html"> | |
| <h2>Resource Data Structures</h2> | |
| <p>Since: 3.0<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| This section contains results on memory footprint of CVS in the Core resource | |
| plugin data structures. More specifically, CVS uses the session and persistant property | |
| caches along with the synchronizer. | |
| <h3>CVS Workspace Sync info caches</h3> | |
| Checking of the cahce usage requires the use of the Core spy tools. To | |
| obtain the memory footprint, perform the following steps. | |
| <ol> | |
| <li>Install the Core Spy Tools | |
| <li>Launch Eclipse | |
| <li>Checkout several projects | |
| <li>Open the Element Tree Spy to get the memory footprint. At the | |
| time of writting, CVS is the main user of these structures. In future | |
| test, ensure that others are not contributing to the tally. | |
| <li>Disconnect all the projects | |
| <li>The Element Tree Spy memory footprint should be reduced accordingly | |
| </ol> | |
| The following snapshot of the resource element tree was taken after checking out all of the projects | |
| (294 as of 2004/05/31) in dev.eclipse.org. | |
| <pre> | |
| Total resource count: 89,466 | |
| Team private: 10,186 | |
| Phantom: 4,055 | |
| Markers: 0 | |
| SyncInfo: 10,432 | |
| Number of layers: 15 | |
| Number of nodes: 89,514 | |
| Number of non-identical strings: 48,456 | |
| Total memory used by nodes: 23,141,343 | |
| Nodes and ResourceInfo: 8,586,108 | |
| Strings: 3,584,724 | |
| Markers: 0 | |
| Sync info: 1,447,861 | |
| Session properties: 9,522,650 | |
| class [B: 2,618,076 | |
| class [Ljava.lang.Object;: 2,564,448 | |
| class org.eclipse.core.internal.utils.ObjectMap: 1,700,240 | |
| class [C: 1,454,994 | |
| class java.lang.Long: 610,800 | |
| class java.lang.String: 286,580 | |
| class org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo: 285,292 | |
| class java.util.ArrayList: 768 | |
| class org.eclipse.team.internal.ccvs.core.util.StringMatcher: 660 | |
| class org.eclipse.team.internal.ccvs.core.util.FileNameMatcher: 320 | |
| class [Ljava.lang.String;: 300 | |
| class org.eclipse.core.runtime.QualifiedName: 160 | |
| class java.lang.Object: 12 | |
| The top 20 equal but non-identical strings are: | |
| A.java->2,002 | |
| in->1,219 | |
| plugin.xml->913 | |
| out->794 | |
| A_out.java->489 | |
| A_in.java->487 | |
| eclipse->431 | |
| org->421 | |
| Test.java->412 | |
| B.java->345 | |
| build.properties->297 | |
| I.java->269 | |
| internal->256 | |
| about.html->253 | |
| plugin.properties->243 | |
| .cvsignore->227 | |
| .classpath->209 | |
| ui->185 | |
| src->184 | |
| package.html->165 | |
| </pre> | |
| <h3>CVS Merge memory usage</h3> | |
| Merging in CVS makes use of the Core synchronizer. Perform the following steps | |
| with the Core Spy Tool installed to | |
| ensure proper memory management. | |
| <ol> | |
| <li>Checkout one or more projects | |
| <li>Open the Element Tree Spy to get the memory footprint. | |
| <li>Perform a merge | |
| <li>Open the Element Tree Spy to get the memory footprint. The only increase | |
| should be in the synchronizer. | |
| <li>Remove the merge from the sync view | |
| <li>The Element Tree Spy memory footprint should be reduced accordingly | |
| </ol> | |
| <a name="perf00005.html"> | |
| <h2>Looking For Leaks</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <h3>Removing synchronize view entries</h3> | |
| <ol> | |
| <li>Start with an empty synchronize view | |
| <li>Create an entry in the Synchronize view for each of the following cases: | |
| <ul> | |
| <li>Team>Synchronize | |
| <li>Compare with>Branch or Version | |
| <li>Team>Merge | |
| </ul> | |
| <li>Open the context menu | |
| <li>Select all mode and layout combinations | |
| <li>Remove the entry (making the sync view empty). | |
| <li>Select an item in another view | |
| <li>Using a memory profiler, look for instances of the following classes: | |
| <ul> | |
| <li>ISynchronizeParticipant | |
| <li>SynchronizeModelElement | |
| <li>SyncInfo/SyncInfoSet | |
| </ul> | |
| </ol> | |
| <h3>Closing the Synchronize view</h3> | |
| Close all instances of the Synchronize view and ensure that no instances | |
| of ISynchronizeView remain. | |
| <a name="perf00006.html"> | |
| <h2>Team Data Structures</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| The Team component provides several data strucutures that can be used to | |
| cache resource synchronization state and resource variants for improved | |
| performance. The plan is to provide tools to interogate these caches in the 3.1 timeframe. | |
| These caches include: | |
| <ul> | |
| <li>Resource Variant cache | |
| <li>SubsciberParticipant/SyncInfoSet | |
| </ul> | |
| <h3>CVS Specific data structures</h3> | |
| CVS uses several caches to improve performance. Tools should be provided to query the | |
| size of these caches as well. | |
| <ul> | |
| <li>Console (caches contents while not visible) | |
| <li>Resource History View log entry cache | |
| <li>Commit Sets log entry cache | |
| </ul> | |
| <a name="perf00007.html"> | |
| <h2>Scalability</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/04 19:44:24 $</p> | |
| The following scenario can be used to test a large number of incoming additions. | |
| <ol> | |
| <li>load org.eclipse.jdt.core.tests.model from dev.eclipse.org | |
| <li>Disconnect Formatter folder and delete it | |
| <li>Synchronize and the contents show up as incoming additions | |
| <li>Peform an Update in the project in the sync view. | |
| </ol> | |
| <h1>Failure Cases</h1> | |
| <a name="connections00001.html"> | |
| <h2>Connections</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/01 20:28:37 $</p> | |
| <p>Test that authentication, connection errors result in appropriate error messages and that these don't pollute the log file or console. to setup for these tests | |
| ensure there are a couple of shared projects in your workspace.</p> | |
| <ul> | |
| <li>Clear you log file before starting the tests and turn on the CVS quick diff provider. | |
| <li>Perform an update, a synchronize, and open a file. The log should be empty and the operations should succeed. | |
| <li>Disconnect from the network. | |
| <li>Open a file. The CVS quick diff will fail and an error should be in the log. | |
| <li>Synchronize all the shared projects. One error explaining the failures should be returned. | |
| <li>Change the connection properties of one of the projects to point to an non-existing location. Then synchronize again, the error message should indicate that some succeeded and | |
| others failed. But the user should no that the operation did complete and skipped the failed projects. | |
| <li>Expand the invalid location in the CVS repositories view. An appropriate error should be shown. | |
| </ul> | |
| <a name="auth_problems00001.html"> | |
| <h2>Authentication Problems</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/01 20:28:37 $</p> | |
| <p> | |
| Test the error reporting when authentication fails due to either, invalid username, password, hostname. This should be | |
| tried with each CVS connection method: pserver, extssh, ext. | |
| </p> | |
| <h1>Misc</h1> | |
| <a name="00042.html"> | |
| <h2>CVS Console</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2006/05/02 18:55:07 $</p> | |
| There are a couple of preferences that controls the behavior and presentation of the console. | |
| To enable this testing, you must first enable font and label decorations. This can be done | |
| by going to <i>Window/Preferences/Team/CVS/Label Decorations</i> and checking off <b>"Enable font | |
| and color decorations"</b>. | |
| <p> | |
| These are: | |
| <ul> | |
| <li>font: changing the font should immediately update the sync view as well as all other views decorated by CVS (ie. Package Explorer). | |
| <li>font color: message color, error color, command line. Changing these should immediatly update the console view. | |
| </ul> | |
| </p> | |
| <a name="encoding00001.html"> | |
| <h2>Encoding Support</h2> | |
| <p>Since: 3.0 M9<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| Answer comes here. | |
| <a name="passwords00001.html"> | |
| <h2>Password Management</h2> | |
| <p>Since: 3.0 M9<br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <h3>Password Management</h3> | |
| <a name="ext_connection_method00001.html"> | |
| <h2>EXT</h2> | |
| <p>Since: 2.0 <br> | |
| Last Modified: $Date: 2004/06/01 15:23:56 $</p> | |
| <h3>Ext connection method</h3> | |
| <a name="keys00001.html"> | |
| <h2>Key Bindings</h2> | |
| <p>Since: 3.1<br> | |
| Last Modified: $Date$</p> | |
| <p>Activate the CVS menu and assign keybindings to the various CVS commands. | |
| Ensure that they work as expected. | |
| <h1>Validate Edit</h1> | |
| <a name="validate_edit_editing_files00001.html"> | |
| <h2>Editing Files</h2> | |
| <p>Since: <br> | |
| Last Modified: $Date: 2004/06/14 20:44:55 $</p> | |
| <p> | |
| These tests are to sanity check editors behavior relating to calling validateEdit. The tests will | |
| try to cover all cases where files are changed by the validateEdit handler and changes are made | |
| to the read-only bit. | |
| </p><p> | |
| These test cases outline the expected behavior of single file editors in terms | |
| of calling validateEdit and handling of error conditions. All scenarios assume | |
| that a repository provider is mapped to a project and has created a sandbox | |
| with files that are marked read-only. | |
| </p><p> | |
| The | |
| <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.team.examples.filesystem/"> | |
| org.eclipse.team.example.filesystem</a> plugin is a repository provider | |
| that simulates a pessimistic workflow. You can use it to run these tests and validate (no pun intended) your validateEdit | |
| editor support. To use the pessimistic provider, share a project with the repository provider called "File | |
| System Pessimistic Example" and then you can add to control the files and | |
| checkin/checkout will toggle the read-only bit and touch the file. You can | |
| change the behavior of the validateEdit call via the pessimistic preference | |
| page. For example, you can force the operation to fail and update contents of the file | |
| when checked out. | |
| </p> | |
| <p> | |
| These tests should be run against the following combinations of tools: | |
| <ul> | |
| <li>Different repository providers | |
| <li>Single file editors (java, text) | |
| <li>Multiple file editors (manifest editor, ...) | |
| </ul> | |
| <!-- ------------------------------------------------------------------------------ --> | |
| <h3>S1: Repository provider enabled and files are readable</h3> | |
| <ol> | |
| <li>Open a file that is not marked read-only in a project configured with a repository provider. | |
| <li>Start editing the file, validate edit should not be called. | |
| </ol> | |
| <!-- ------------------------------------------------------------------------------ --> | |
| <h3>S2: Validate edit called on first edit</h3> | |
| <ol> | |
| <li>Open a file that has been checked out as read-only from a repository provider. | |
| <li>Start editing the file, validateEdit should be called. | |
| <li>validateEdit returns OK, the users edit is accepted and shows up in the editor, and the file can be edited normally. | |
| <li>The user saves the file, and then can continue editing without validateEdit being called. | |
| </ol> | |
| <!-- ------------------------------------------------------------------------------ --> | |
| <h3>S2b: Validate edit cancelled</h3> | |
| <ol> | |
| <li>Open a file that has been checked out as read-only from a repository provider. | |
| <li>Start editing the file, validateEdit should be called. | |
| <li>validateEdit is cancelled, the users edit is not accepted and the file cannot be edited. | |
| <li>The user should still be able to browse the contents of the file and trying to edit it again | |
| </ol> | |
| <!-- ------------------------------------------------------------------------------ --> | |
| <h3>S2b: Validate edit fails with an error</h3> | |
| <ol> | |
| <li>Open a file that has been checked out as read-only from a repository provider. | |
| <li>Start editing the file, validateEdit should be called. | |
| <li>validateEdit is cancelled, the users edit is not accepted and the file cannot be edited. User should | |
| be shown the error returned from the validateEdit provider. | |
| <li>The user should still be able to browse the contents of the file and trying to edit it again | |
| </ol> | |
| <!-- ------------------------------------------------------------------------------ --> | |
| <h3>S3: Validate edit called on subsequent edits if file changes state</h3> | |
| <ol> | |
| <li>Open a file that has been checked out as read-only from a repository provider. | |
| <li>Start editing the file, validateEdit should be called. | |
| <li>validateEdit returns OK, the user's edit is accepted and the file can be edited normally. | |
| <li>The user saves the file, and then can continue editing without validateEdit being called. | |
| <li>The user saves the file and then checks in the file while the editor is still open. | |
| <li>After the checkin completes the user continues editing the file. | |
| <li>Validate edit should be called again. | |
| </ol> | |
| <!-- ------------------------------------------------------------------------------ --> | |
| <h3>S4: Validate edit not called after contents changed</h3> | |
| <ol> | |
| <li>Open a file that has been checked out as read-only from a repository provider. | |
| <li>Start editing the file, validateEdit should be called. | |
| <li>validateEdit returns OK, the user's edit is accepted and the file can be edited normally. | |
| <li>The user saves the file, and then can continue editing without validateEdit being called. | |
| <li>The user saves the file and keeps the editor opened. | |
| <li>The user then un-checks out the file and new file contents are retreived from the server. | |
| <li>The new file contents are loaded into the editor and validateEdit is not called. | |
| <li> | |
| </ol> | |
| <!-- ------------------------------------------------------------------------------ --> | |
| <h3>S5: Validate edit changes file contents editor not-dirty</h3> | |
| <ol> | |
| <li>Open a file that has been checked out as read-only from a repository provider. | |
| <li>Start editing the file, validateEdit should be called. | |
| <li>validateEdit returns OK and brings in new content from the server. | |
| <li>The new content is loaded automatically because the editor isn't dirty yet. | |
| </ol> | |
| <!-- ------------------------------------------------------------------------------ --> | |
| <h3>S6: Validate edit changes file contents editor dirty</h3> | |
| <ol> | |
| <li>Open a file that has been checked out as read-only from a repository provider. | |
| <li>Start editing the file, validateEdit should be called. | |
| <li>validateEdit returns OK and the file on disk doesn't change. | |
| <li>The user continues editing the file and then checks it in. | |
| <li>The editor remains open and dirty, the user continues editing. | |
| <li>validateEdit is called because the file is now read-only and returns OK and brings in new content from the server. | |
| <li>The editor detects the timestamp change and prompts about the conflict and provides | |
| <a href="#reload_options">options</a> to the user. | |
| <li>After the user selects his option and the user continues editing, the editor | |
| will call validateEdit. | |
| </ol> | |
| <!-- ------------------------------------------------------------------------------ --> | |
| <h3>S7: Read-only editors refreshing on checkout</h3> | |
| <ol> | |
| <li>Open a file that has been checked out as read-only from a repository provider. | |
| <li>Checkout the file that brings in new content from the server. | |
| <li>The editor should update with the new content from the server. | |
| </ol> | |
| <!-- ------------------------------------------------------------------------------ --> | |
| <h3>S8: validate called on editor save</h3> | |
| <ol> | |
| <li>Open a file that has been checked out as read-only from a repository provider. | |
| <li>Start editing the file, validateEdit should be called. | |
| <li>validateEdit returns OK and the file on disk doesn't change. | |
| <li>The editor remains open and dirty, the user continues editing. | |
| <li>The user checks-n the file and then closes the editor. | |
| <li>The user is prompted to save the file, then validate edit is called, and | |
| the file is checked-out then saved. | |
| </ol> | |
| <!-- ------------------------------------------------------------------------------ --> | |
| <h3>S9: validate called on editor save with new contents</h3> | |
| <ol> | |
| <li>Open a file that has been checked out as read-only from a repository provider. | |
| <li>Start editing the file, validateEdit should be called. | |
| <li>validateEdit returns OK and the file on disk doesn't change. | |
| <li>The editor remains open and dirty, the user continues editing. | |
| <li>The user checks-n the file and then closes the editor. | |
| <li>The user is prompted to save the file, then validate edit is called, and | |
| the file is checked-out then saved. | |
| </ol> | |
| </p> | |
| <!-- | |
| <hr> | |
| <a name="reload_options"><h3>Conflict Resolution Options for Editors</h3> | |
| <pre> | |
| Assumptions: | |
| 1. Editors currently maintain a "dirty bit" indicating that the in-memory | |
| buffer has been modified and not yet written to disk. Editors call | |
| validateEdit() the if the file is read-only and the dirty bit is going | |
| from the clean state to the dirty state. | |
| 2. Editors can detect when the timestamp of the file has changed on disk | |
| and prompt the user for the appropriate action. | |
| Suggestion: | |
| Editors should maintain a separate bit, "must call validateEdit()". Any | |
| modification of the buffer calls validateEdit() first if this bit is set. | |
| It is initially set when the file is opened if the file is read-only. It | |
| is cleared after a successful call to validateEdit(). It is set again | |
| when the editor notices that a file has gone from read/write to read-only. | |
| If the "must call validateEdit()" bit ever goes from the cleared state to | |
| the set state (except for when the file is initially opened), a later | |
| successful call to validateEdit(), should should result in the following | |
| actions: | |
| +-----------+------------------+----------------------------------------+ | |
| | Dirty Bit | Timestamp Change | Editor Action | | |
| | State | Detected | | | |
| +-----------+------------------+----------------------------------------+ | |
| | 0 | no | No action required | | |
| +-----------+------------------+----------------------------------------+ | |
| | 1 | no | No action required | | |
| +-----------+------------------+----------------------------------------+ | |
| | 0 | yes | Prompt user for reload/no-reload/merge | | |
| +-----------+------------------+----------------------------------------+ | |
| | 1 | yes | Prompt user for reload/no-reload/merge | | |
| +-----------+------------------+----------------------------------------+ | |
| </pre> | |
| --> | |
| <a name="validate_edit_refactoring00001.html"> | |
| These tests are a sanity check that workbench, JDT and other tools refactorings behave | |
| properly with respect to validate Edit. For a repository providers that supports | |
| a pessimistic workflow, the following scenarios should result in the invocation | |
| of the validate edit callback and should include a UI context which allows prompting. | |
| <p> | |
| The following scenarios are stated in terms of the Navigator view and JDT. Other tools | |
| should translate them to a set of scenarios that make sense for the tool. | |
| <!-- ------------------------------------------------------------------------------ --> | |
| <h3>S1: Search and Replace</h3> | |
| <ol> | |
| <li>Select one or more projects or folders and choose Search/File. | |
| <li>Enter a string known to exist in multiple files and click Replace | |
| <li>Enter a new string that differs from the one searched for. | |
| </ol> | |
| <!-- ------------------------------------------------------------------------------ --> | |
| <h3>S2: Single file content modification</h3> | |
| <ol> | |
| <li>Open a Java file that is read-only | |
| <li>Perform any of the Java Source operations (e.g. toggle comment) | |
| <li>Ensure that validate edit is invoked | |
| </ol> | |
| <!-- ------------------------------------------------------------------------------ --> | |
| <h3>S3: Multiple file content modification</h3> | |
| <ol> | |
| <li>Ensure all files in your workspace are read-only | |
| <li>Perform a Java/Refactoring such as a method or class rename. | |
| <li>Ensure that validate edit is invoked at most once per project involved. | |
| </ol> | |
| <h1>Logical Resource Support</h1> | |
| <a name="logical00002.html"> | |
| <h2>Java Packages</h2> | |
| <p>Since: 3.1<br> | |
| Last Modified: $Date$</p> | |
| <p>Ensure that CVS operations such as Update and Commit are performed only | |
| on the files in a Java package and not on the subpackages when the operations | |
| are launched from the Java Packages Explorer. | |
| <a name="logical00003.html"> | |
| <h2>Working Sets</h2> | |
| <p>Since: 3.1<br> | |
| Last Modified: $Date$</p> | |
| <p> | |
| Configure the Java Packages Explorer to show Working Sets. Populate the | |
| working sets with various combinations of shared and unshared projects and | |
| ensure that CVS operations can be performed directly on the working sets if they | |
| contain at least one shared project. | |
| </body></html> |