<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.4 Test Plan</h1>

<p>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.</p>

<p>For a more verbose explanation of the CVS plug-in please refer to
our documentation.</p>

<h2>CVS Server Versions</h2>

<p>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
flavors. The current server lineup is:</p>

<p>Latest Stable: <span style="font-weight: bold;">1.11.22</span></p>

<p>Latest Development: <span style="font-weight: bold;">1.12.13</span>
</p>

<p>CVS NT: <span style="font-weight: bold;">2.5.03.2382</span></p>

<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 development)</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>Areas assignments</h2>

<ul>
	<li><a href="mailto:Szymon.Brandys@pl.ibm.com">Szymon Brandys</a>
	<ul>
		<li><a href="#00004.html">Repositories View</a></li>
		<li><a href="#00008.html">Comparing</a></li>
		<li><a href="#commit00001.html">Commit</a></li>
		<li><a href="#tags00001.html">Tags</a></li>
		<li><a href="#00012.html">Branch/Merge</a></li>
		<li><a href="#watch_edit00001.html">Watch/Edit</a></li>
		<li><a href="#00014.html">History View</a></li>
	</ul>
	</li>
	
	<li><a href="mailto:Tomasz.Zarna@pl.ibm.com">Tomasz.Zarna</a>
	<ul>
		<li><a href="#00033.html">Annotate</a></li>
		<li><a href="#00035.html">Label Decorations</a></li>
		<li><a href="#failures00001.html">Failure Cases</a></li>
		<li><a href="#validate_edit00001.html">Validate Edit</a></li>
		<li><a href="#logical00001.html">Logical Resource Support</a></li>
	</ul>
	</li>

	<li>Unassigned (the team members and other contributors can choose from the below areas at will)
	<ul>
		<li><a href="#00026.html">Sharing</a></li>
		<li><a href="#00044.html">Replacing</a></li>
		<li><a href="#00010.html">Synchronizing</a></li>
		<li><a href="#00023.html">Restarting Workbench</a></li>
		<li><a href="#00028a.html">SSH2</a></li>
		<li><a href="#misc00001.html">Misc</a></li>
		<li><a href="#00029.html">Patching</a></li>
		<li><a href="#00020.html">Concurrency</a></li>
		<li><a href="#perf00001.html">Performance</a></li>
	</ul>
	</li>
</ul>

<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="#sharingbasics00001.html">Basics</a>
<ul>
</ul>
<li><a href="#00027.html">Sharing as a subfolder</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>
<li><a href="#00051.html">Compare with each other</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="#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>
<a name="00004.html"/>
<h1>Repositories View</h1>
<a name="repoview_basics00001.html"/>

<h2>Basics</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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:</p>

<ul>
	<li>Create repo locations for different connection types: ext,
	pserver, extssh.</li>
	<li>Create a repo location by pasting a location string into the
	host field (e.g. :pserver:anonymous@dev.eclipse.org:/home/eclipse).</li>
	<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>
	<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.</li>
</ul>

<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 available 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>
</ul>


<a name="00007.html"/>

<h2>Check Out - prompts</h2>
<p>Since: 3.0 M5<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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: 2008/08/27 12:31:28 $</p>

<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 wizard is also
available from the context menu of the repositories view as the Checkout
As menu item.</p>

The following variants should be tested:
<ul>
	<li>Create a new repository location and checkout a project
	entirely from the wizard.</li>
	<li>Check out a tag</li>
	<li>Check out a project that does not contain a .project file.
	This should result in a second wizard that allows project configuration
	(e.g. Java project).</li>
</ul>

<h3>Repositories View Checkout Variants</h3>
These tests 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 multiple 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: 2008/08/27 12:31:28 $</p>
<body>

<h3>Refresh Branches and Versions</h3>
<ol>
	<li>Select a repository location and perform "Refresh Branches and
	Versions...".</li>
	<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 repository entry to view ...
	<ul>
		<li>projects in HEAD,</li>
		<li>branches and projects in BRANCHES,</li>
		<li>projects and versions in VERSIONS.</li>
	</ul>
	</li>
</ol>

<h3>Configure Branches and Versions</h3>
<ol>
	<li>Select a project in the repositories view and perform
	"Configure Branches and Versions...".</li>
	<li>Select some branch and version tags to be remembered.</li>
	<li>Expand the repository entry to view ...
	<ul>
		<li>projects in HEAD,</li>
		<li>branches and projects in BRANCHES,</li>
		<li>projects and versions in VERSIONS.</li>
	</ul>
	</li>
</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>
	<li>Tag selection dialogs (Compare with and Replace with Branch or
	Version)</li>
</ul>


<a name="00026.html"/>
<h1>Sharing</h1>
<a name="sharingbasics00001.html"/>

<h2>Basics</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<p>Single select a project and select share.</p>
<ul>
	<li>Should only be available if the project is not shared.</li>
	<li>Menu item should be available from the Project top level menu.</li>
	<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>
	<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).</li>
</ul>


<a name="00027.html"/>

<h2>Sharing as a subfolder</h2>
<p>Since: 3.0 M6<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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).</p>

<a name="00028.html"/>

<h2>Reconnecting an existing project</h2>
<p>Since: 3.0 M6<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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>
	<li>Click Finish.</li>
</ol>

<h3>Scenario 1: New location using custom 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>
	<li>Click Finish.</li>
</ol>


<a name="00050.html"/>

<h2>Sharing a new project</h2>
<p>Since: 3.0 M8<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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: 2008/08/27 12:31:28 $</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>
	<li>Start with an empty workspace and import the projects using
	the import projects sets wizard. Try running Project Set import in the
	background too.</li>
	<li>You should be prompted for a password and username for the
	locations.</li>
	<li>Ensure that the projects are checked out correctly and against
	the correct tag.</li>
</ul>


<a name="00044.html"/>
<h1>Replacing</h1>
<a name="00045.html"/>

<h2>With latest</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<p>Ensure that the replace operation overwrites any outgoing
changes. And verify the following:</p>
<ul>
	<li>Label decorations (e.g. outgoing change flag, version) are
	updated in the navigator/packages view and synchronize view.</li>
</ul>


<a name="00046.html"/>

<h2>With another branch of version</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<p>Check the following for all cases of replace:</p>
<ul>
	<li>Decorators are updated in the navigator/packages view and
	synchronize view.</li>
	<li>If a version is loaded that you can't commit to it</li>
	<li>If a branch is loaded, that you can commit to it.</li>
</ul>

<p>Also ensure that the tag filtering in the dialog works properly.</p>


<a name="00047.html"/>

<h2>With file revision</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<ul>
	<li>If the file isn't managed the action should no appear.</li>
	<li>If the file doesn't have any revisions you should be prompted</li>
	<li>If the file has revisions you should be prompted with the list
	of revisions in a compare dialog</li>
	<li>In the compare dialog you can select any revision and compare
	changes but merging isn't supported</li>
	<li>If a revision is selected the Replace button should be
	enabled. Otherwise it should be disabled</li>
	<li>If you selected the replace button the file should contain the
	contents of the revision selected. The dialog will also close.</li>
	<li>Ensure that the titles are ok (e.g. dialog title, structure
	pane title...)</li>
</ul>


<a name="update_command00001.html"/>

<h2>Updating</h2>
<p>Since: 2.0 <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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>


<a name="00008.html"/>
<h1>Comparing</h1>
<a name="00009.html"/>

<h2>Remote resources</h2>
<p>Since: 3.0 M5<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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 combinations (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: 2008/08/27 12:31:28 $</p>

<p>You should be able to select a project/folder/resource and
compare against 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>
	<li>should be able to open the history view and link in to the
	opened compare editor</li>
	<li>the compare editor should update when changes are made to the
	local file in some other context (e.g other editor, refactoring).</li>
</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>
	<li>Edit the local and browse to another file. You should be
	prompted to save the changes.</li>
	<li>Press the cancel button with changes, you should be prompted.</li>
</ul>

<a name="00040.html"/>

<h2>Reverting deleted resources</h2>
<p>Since: M8<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>
You should be able to restore a deleted revision from the CVS server
Team>Restore from Repository

<a name="00041.html"/>

<h2>File Revisions</h2>
<p>Since: M8<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<h3>Compare the local resource with other revisions</h3>
<ul>
	<li>If the file isn't managed the action should no appear.</li>
	<li>If the file doesn't have any revisions you should be prompted</li>
	<li>If the file has revisions you should be prompted with the list
	of revisions in a compare dialog</li>
	<li>In the compare dialog you can select any revision and merge
	changes into the local copy</li>
	<li>If you edit the local resource then chose OK, you will be
	prompted to save changes. Ensure that the changes are saved correctly
	to the underlying resource.</li>
	<li>Ensure that the titles are ok (e.g. dialog title, structure
	pane title...)</li>
</ul>


<a name="quickdiff00001.html"/>

<h2>Quick Diff</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<p>Enable CVS quick diff for text and java files via the General >
Editors > Quick Diff 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 Replace With > Latest from
	HEAD. The annotations are removed and the file is clean.</li>
	<li>Same as 1 but this time instead commit the file. The quickdiff
	annotations are removed and the file is clean.</li>
	<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>
	<li>Same as previous but this time actually update the file. The
	files quickdiff annotations are removed and the file is clean.</li>
</ol>


<a name="00051.html"/>

<h2>Compare With Each Other</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<h3>Compare a resource with other resource</h3>
<h5>The action</h5>
<ul>
	<li>The action should appear only when there are 2 or 3 resources
	selected.</li>
	<li>If there are 3 resources selected you should be prompted to
	select the common ancestor.</li>
</ul>
<h5>Look</h5>
<ul>
	<li>Ensure that all titles and labels are ok (e.g. dialog title,
	structure pane title, compare editor labels...).</li>
	<li>Ensure that all buttons in the toolbar are properly enabled
	(e.g. Copy All/Copy Current, Next/Prev Difference/Change).</li>
	<li>Ensure that difference markers are properly display at start</li>
</ul>
<h5>Navigation</h5>
<ul>
	<li>If you reach the first/last difference you should be prompted
	to go to the end/start of the current element.</li>
	<li>Ensure that you can correctly navigate through differences
	using the difference markers on the right side of the editor.</li>
</ul>
<h5>Merging</h5>
<ul>
	<li>Ensure that Copy All/Copy Current actions work as expected.</li>
	<li>Ensure that when the Copy All action is used all difference
	markers disappear.</li>
	<li>Ensure that when the Copy Current action is used a proper
	difference marker disappears.</li>
	<li>Ensure you can Undo an action.</li>
</ul>
<h5>Saving</h5>
<ul>
	<li>If you edit a local resource the dirty state indicator should
	appear over the resource.</li>
	<li>If you edit a local resource and the resource is also opened
	in a different editor the dirty state should appear on that editor too.</li>
	<li>If you edit both of the resources being compare (both are
	local), changes should be saved to both of them.</li>
	<li>If you edit a resource and close the editor you should be
	prompted to save or abandon changes.</li>
	<li>If you edit both of the resources and close the editor you
	should be prompted to select which resources to save using the Save
	Resources dialog.</li>
	<li>Ensure you can Undo a change.</li>
	<li>Ensure that changes are saved correctly to the underlying
	resource.</li>
</ul>

<h5>Concurrent edition</h5>
<ul>
	<li>Scenario 1
	<ol>
		<li>Compare two local resources using the Compare Editor.</li>
		<li>Open one of them in the default editor (F3) and edit it.</li>
		<li>Ensure that the resource gets the dirty state indicator over
		both editors (i.e default and Compare).</li>
		<li>If you save the resource in the default editor the dirty
		state indicator should go off for both editors.</li>
		<li>Ensure that changes are saved correctly to the underlying
		resource.</li>
	</ol>
	</li>
	<li>Scenario 2a
	<ol>
		<li>Compare two local resources using the Compare Editor.</li>
		<li>Open one of them in the default editor (F3) and edit it.</li>
		<li>Ensure that the resource gets the dirty state indicator over
		both editors (i.e default and Compare).</li>
		<li>If you close the default editor you should be prompted to
		save changes, exiting without saving or cancel.</li>
		<li>Select exit without saving (button named "No").</li>
		<li>Ensure that the resource under the Compare Editor is still in
		the dirty state.</li>
		<li>Ensure that changes are the same as made using the default
		editor.</li>
		<li>Ensure that changes can be saved to the underlying resource
		from the Compare Editor.</li>
		<li>Ensure that changes are saved correctly to the underlying
		resource.</li>
	</ol>
	</li>
	<li>Scenario 2b
	<ol>
		<li>Compare two local resources using the Compare Editor.</li>
		<li>Open one of them in the default editor (F3) and edit it.</li>
		<li>Ensure that the resource gets the dirty state indicator over
		both editors (i.e default and Compare).</li>
		<li>If you close the default editor you should be prompted to
		save changes, exiting without saving or cancel.</li>
		<li>Select to save changes (button named "Yes").</li>
		<li>Ensure that the dirty state indicator for the resource goes
		off.</li>
		<li>Ensure that changes are saved correctly to the underlying
		resource.</li>
		<li>Ensure you can Undo changes.</li>
	</ol>
	</li>
	<li>Scenario 3
	<ol>
		<li>Compare two local resources using the Compare Editor.</li>
		<li>Open both files in default editors (F3) and edit them.</li>
		<li>Ensure that the resource gets the dirty state indicator over
		all editors (i.e two default and Compare).</li>
		<li>Ensure that changes made in one of editors are correctly
		handled by others.</li>
		<li>Ensure that changes are saved correctly to underlying
		resources.</li>
		<li>Ensure you can Undo changes.</li>
	</ol>
	</li>
</ul>

<h5>Common Ancestor</h5>
<ul>
	<li>Ensure that a resource acting as a common ancestor is the one
	selected in the dialog.</li>
	<li>Ensure you can switch between Two- and Three-way compare when
	a common ancestor is available.</li>
	<li>Ensure you can show/hide the Common Ancestor Pane.</li>
</ul>


<a name="00010.html"/>
<h1>Synchronizing</h1>
<a name="00048.html"/>

<h2>Performing a Synchronize</h2>
<p>Since: 3.0<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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.</p>

<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>
	<li><b>Using the Synchronize button in toolbar of the
	Synchronize view</b>: All projects should be selected.</li>
	<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>
	<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.</li>
</ul>

<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 suppress the post-synchronize dialog.</p>

<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>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.</p>


<a name="00011.html"/>

<h2>Synchronize View</h2>
<p>Since: 3.0<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<h3>Synchronize View Modes</h3>

<p>Ensure that choosing direction modes result in proper filtering.</p>

<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>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:</p>
<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 Java 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>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 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 becomes 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 should 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: 2008/08/27 12:31:28 $</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: 2008/08/27 12:31:28 $</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. Preferably 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.</li>
	<li>With some nodes expanded and additionally one or more
	selected, disable Change Sets. The same nodes should remain expanded
	and selected.</li>
	<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 appears in multiple
	sets, it will no longer be expanded).</li>
</ol>

You should also confirm that markers and conflicts are properly
propagated to parent nodes.

<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 selection is
	maintained.</li>
	<li>Only Incoming and Outgoing mode show change sets.</li>
</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, the file remains visible in the Sync
	view.</li>
	<li>Files in a change set can be transfered to another change set</li>
	<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>
	<li>The title and comment of a change set can be changed.</li>
	<li>Layout and modes changes work properly for outgoing change
	sets in the Synchronize view.</li>
	<li>Committing one or more files in a change set will result in a
	commit dialog that is primed with the comment from the set.</li>
	<li>change sets (including which is the default), are preserved
	across restarts.</li>
</ol>


<a name="sync00001.html"/>

<h2>Scenarios</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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.
Behavior should be identical. The sync view decorator should show you
the name of the branch.</p>

<h3>Using Mixed Tags</h3>

<p>Using Team-&gt;Branch, Replace With-&gt;Branch or Version, and
Team-&gt;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: 2008/08/27 12:31:28 $</p>

<h1>Synchronization Restart Behavior</h1>

<p>CVS Synchronizations can be configured to populate or synchronize
after a restart. To test this, do the following:</p>

<ol>
	<li>Create a CVS synchronization of each persisted type (Workspace
	and Merge).</li>
	<li>Restart and see the page that allows you to populate 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 should also repeat them using the preference page
available from the view menu in the Synchronize view.



<a name="commit00001.html"/>
<h1>Commit</h1>
<a name="commit00002.html"/>

<h2>Committing Changes</h2>
<p>Since: 3.1 M4<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<h3>Committing changes to existing files</h3>
<ol>
	<li>Edit some existing files in a CVS project</li>
	<li>Choose Team>Commit on the project from the Navigator</li>
	<li>The commit dialog should show a preview of the files that are
	to be committed and allow a commit comment to be entered.</li>
</ol>

<p>Some things to try:
<ul>
	<li>Committing a project (or selected resources) that contain no
	changes will prompt to indicate this.</li>
	<li>Files can be removed from the preview area and these will be
	excluded from the commit.</li>
	<li>Clicking OK without entering a comment should prompt.</li>
	<li>Emptying the preview area will disable the Finish and show a
	"no changes" message.</li>
	<li>Try different page layouts (compressed, tree and flat)</li>
</ul>

<h3>Committing new files</h3>
<ol>
	<li>Add a few new files to a project including some with unknown
	extensions and some with no extensions.</li>
	<li>Choose Team>Commit on the project from the Navigator</li>
	<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.</li>
	<ul>
		<li>Configure some to be remembered and others to be only applied
		to this commit (verify after that this was done properly)</li>
	</ul>
	<li>Click Next and verify that the content type was determined
	properly.</li>
	<li>Choose to ignore one of the files and verify that the file is
	removed and the .cvsignore appears.</li>
</ol>

<h3>Committing files contained in a Change Set</h3>
<ol>
	<li>From the Synchronize view, select all the changes from the
	same Change Set.</li>
	<li>Choose Commit and verify that the comment in the commit dialog
	is the one from the change Set.</li>
</ol>


<a name="tags00001.html"/>
<h1>Tags</h1>
<a name="tags00002.html"/>

<h2>Tag Selection in Dialogs</h2>
<p>Since: 3.1 M4<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

Tag lists appear in many dialogs:

<ul>
	<li>Replace with Branch or Version</li>
	<li>Compare with Branch or Version</li>
	<li>Share of existing project</li>
	<li>Switch to Another Branch or Versions</li>
	<li>Tag with Existing</li>
	<li>Tag as Version</li>
</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:</p>

<ol>
	<li>If an auto-refresh file (.project by default) exists and has
	tags, the tags are obtained from the file.</li>
	<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>
	<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.</li>
</ol>


<a name="tags00003.html"/>

<h2>Tag Caching</h2>
<p>Since: 3.1 M4<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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 remote
	folder that the resource's project is mapped to.</li>
	<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.</li>
</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>
	<li>Load non-root folders as projects and ensure tags are cached
	and obtained properly.</li>
	<li>Perform Tag with Existing in the History view and ensure that
	tags are obtained from the file</li>
</ol>


<a name="00012.html"/>
<h1>Branch/Merge</h1>
<a name="00022.html"/>

<h2>Performing a Merge</h2>
<p>Since: 3.1<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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 be automatically found if it exists.</li>
	<li>Choose to perform the merge into the local workspace. Ensure
	it works with and without a start tag.</li>
</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 into 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: 2008/08/27 12:31:28 $</p>
<ul>
	<li>Same scenarios as <a href="00011.html">CVS Synchronize
	View</a> except you can't commit.</li>
	<li>Test mark as merged (ensure that it can work on large data
	sets)</li>
</ul>

<a name="branch00001.html"/>

<h2>Branching</h2>
<p>Since: 3.1 M4<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<ol>
	<li>Choose Team>Branch from the context menu of the Navigator.
	<li>Enter a branch tag.</li>
	<li>Verify that a version tag is proposed for the branch.</li>
	<li>Click OK and verify that the tags are applied and the local
	project is mapped to the branch.</li>
</ol>
<p>Some things to try:
<ul>
	<li>Uncheck the "Start working in the branch" option and verify
	that the local project is not moved to the branch.</li>
	<li>Branch a loaded version and verify that the tag from the
	project is used as the root.</li>
	<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>
	<li>Branch with local changes and ensure that they remain and can
	be committed to the branch.</li>
</ul>


<a name="00029.html"/>
<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: 2008/08/27 12:31:28 $</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>
  <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>


<a name="00014.html"/>
<h1>History View</h1>
<a name="00018.html"/>

<h2>Editor Linking</h2>
<p>Since: 3.0 M5<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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 view and ensure that the
	history view updates.</li>
	<li>Open an editor on 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: 2008/08/27 12:31:28 $</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>

<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>

<hr></hr>

<h3>Collapse All</h3>

<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>


<a name="groupByDateUMFile00001.html"/>

<h2>Group Revisions by Date</h2>
<p>Since: 3.2 RC2 <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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>


<a name="localHistoryUnsharedFiles00001.html"/>
<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: 2008/08/27 12:31:28 $</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: 2008/08/27 12:31:28 $</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>


<a name="cvsHistory00001.html"/>
<h1>CVS History</h1>
<a name="DNDCFile00001.html"/>

<h2>Drag and Drop CVS File</h2>
<p>Since: 3.2 RC2 <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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: 2008/08/27 12:31:28 $</p>

<h4>Annotate action should be available from</h4>
<ul>
	<li>history view, repo explorer, resource/packages view</li>
</ul>

<h4>Annotate java files</h4>
<ul>
	<li>should show the java editor</li>
	<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>
	<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>
	<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.</li>
</ul>

<h4>Annotate non-text editor files</h4>
<ul>
	<li>annotate plugin.xml file</li>
	<li>the default text editor should be shown</li>
	<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>
	<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.</li>
</ul>

<h4>Annotate binary files</h4>
<ul>
	<li>annotate a file marked as binary</li>
	<li>the server should report an error that annotations cannot be
	shown for binary files.</li>
</ul>


<a name="modeSwitching00001.html"/>

<h2>Mode Switching</h2>
<p>Since: 3.2 RC2 <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<p><b>Purpose:</b> Test the mode switching for the CVS History Page.</p>

<h3>Basic Mode Testing</h3>

<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>
</ol>

<h3>Mode Persistence Testing</h3>

<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>


<a name="pinHistoryView00001.html"/>

<h2>Pin History View</h2>
<p>Since: 3.2 RC2<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<p><b>Purpose:</b> Test the pinning behavior of the history view.</p>

<h3>Simple Pinning</h3>

<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>
<p>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.</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>Now show the history for the original file in the pinned view.
	The pin view should come to the fore front.</li>
</ol>


<a name="refreshHistory00002.html"/>

<h2>Refresh</h2>
<p>Since: 3.2 RC2<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<p><b>Purpose:</b> Test the two types of refresh behavior 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".)</p>

<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>


<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.</p>

<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>


<a name="00020.html"/>
<h1>Concurrency</h1>
<a name="00021.html"/>

<h2>Close and disconnect</h2>
<p>Since: 3.0 M5<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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 (alphabetical).</li>
	<li>Perform a refresh on all the projects</li>
	<li>While the refresh is occurring, 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 (alphabetical).</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>


<a name="00023.html"/>
<h1>Restarting Workbench</h1>
<a name="00019.html"/>

<h2>Crash Recovery</h2>
<p>Since: 3.0 M5<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<h3>Scenario 1</h3>
<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>

<h3>Scenario 2</h3>
<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: 2008/08/27 12:31:28 $</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>
	<li>layout</li>
	<li>working set</li>
</ul>

<a name="00028a.html"/>
<h1>SSH2</h1>
<a name="00029a.html"/>

<h2>Server version compatibiliity</h2>
<p>Since: M6<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>
This test is to ensure that the ssh2 connection method properly
delegates to ssh1 when the server only supports ssh1.

<a name="00030a.html"/>

<h2>Proxies</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>
Using HTTP and SOCKS5 proxies.

<a name="00031.html"/>

<h2>Key Generation</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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>
	<li>Generate keys and save private key with password. You
	shouldn't be prompted.</li>
	<li>Generate keys and install using the sftp button.</li>
</ul>

<a name="00032.html"/>

<h2>General use</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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>
	<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>
	<li>Select cancel, and error should be shown indicating that the
	location was not validated do you want to keep it.</li>
</ul>

<a name="00033.html"/>
<h1>Annotate</h1>
<a name="00034.html"/>

<h2>Show Annotation Action</h2>
<p>Since: 3.0 M3<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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
synchronized.</p>

<a name="00035.html"/>
<h1>Label Decorations</h1>
<a name="00036.html"/>

<h2>Enablement at startup</h2>
<p>Since: 3.0 M7<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<p>The CVS decorators should not be enabled at start-up. Verify the
label decorator preference page.</p>
Here are some scenarios for testing:
<ul>
	<li>When sharing or checking out a project, the decorators will be
	enabled automatically.</li>
	<li>Disabling after they have been enabled and restarting. The
	decorators should be disabled. Checkout should not enable them again.</li>
	<li>Enable the decorations again, then disconnecting a project
	should clear the decorators on the project.</li>
</ul>

<a name="00037.html"/>

<h2>Customizations</h2>
<p>Since: 3.1 <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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.</p>

<a name="00038.html"/>

<h2>Decorations in the Synchronize pages</h2>
<p>Since: 3.0 M8<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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
&lt;local&gt; - &lt;remote&gt;. 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>

<a name="watch_edit00001.html"/>
<h1>Watch/Edit</h1>
<a name="watch_edit_basic00001.html"/>

<h2>Basic scenarios</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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>
	<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>
	<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>
	<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>
	<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>
	<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>
	<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.</li>
</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>
	<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>
	<li>Edit the file but don't save it.</li>
	<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>
	<li>Return to the unsaved editor and try typing. You should be
	prompted to call validate edit again.</li>
</ol>

<p>validateEdit fails</p>
<ol>
	<li>Check out a project from CVS and verify that the files are
	marked as read-only.</li>
	<li>Disconnect from network so that the validateEdit would fail.</li>
	<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 occurred.</li>
</ol>

<p>Refactoring</p>
<ol>
	<li>Check out a project from CVS and verify that the files are
	marked as read-only.</li>
</ol>


<a name="watch_edit_editorsview00001.html"/>

<h2>Editors View</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>
<p>Test that you can properly show the editors on a file.</p>

<a name="perf00001.html"/>
<h1>Performance</h1>
<a name="perf00002.html"/>

<h2>Timings</h2>
<p>Since: 3.0<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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>
	<li>Synchronizing</li>
	<li>Updating</li>
</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>
	<li>The Console view can add as much as 20% to times. For these
	tests, the console was turned off entirely.</li>
	<li>Running an Eclipse operation several times will "warm-up" the
	code path due to JIT. The timings for Eclipse were usually the second
	or third timing obtained.</li>
</ul>

The following numbers were obtained on a 2.8GHz PC running GTK, Sun 14.2
with autobuild off and operations run in the foreground. 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 observation (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>
	<li>CLI over pserver: 3:00 (1 timing)</li>
</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 observation (i.e.
stopwatch).

<h4>Synchronize with no changes</h4>

<ul>
	<li>Eclipse 3.0 over pserver: 0:45</li>
	<li>CLI over pserver: 0:42 ("cvs -n update")</li>
</ul>

<h4>Synchronize with all outgoing, no incoming</h4>

<ul>
	<li>Eclipse 3.0 over pserver: 1:00</li>
	<li>CLI over pserver: 2:20 ("cvs -n update")</li>
</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>
	<li>CLI over pserver: 0:45 ("cvs -n update")</li>
</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>
	<li>CLI over pserver: 1:15 ("cvs update")</li>
</ul>

<h4>Update with all false outgoing changes (using touch)</h4>

<ul>
	<li>Eclipse 3.0 over pserver: 2:20</li>
	<li>CLI over pserver: 2:20</li>
</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>
	<li>CLI over pserver: 1:55 ("cvs -n update")</li>
</ul>


<a name="perf00004.html"/>

<h2>Resource Data Structures</h2>
<p>Since: 3.0<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

This section contains results on memory footprint of CVS in the Core
resource plugin data structures. More specifically, CVS uses the session
and persistent property caches along with the synchronizer.

<h3>CVS Workspace Sync info caches</h3>

Checking of the cache 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>
	<li>Launch Eclipse</li>
	<li>Checkout several projects</li>
	<li>Open the Element Tree Spy to get the memory footprint. At the
	time of writing, CVS is the main user of these structures. In future
	test, ensure that others are not contributing to the tally.</li>
	<li>Disconnect all the projects</li>
	<li>The Element Tree Spy memory footprint should be reduced
	accordingly</li>
</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>
	<li>Open the Element Tree Spy to get the memory footprint.</li>
	<li>Perform a merge</li>
	<li>Open the Element Tree Spy to get the memory footprint. The
	only increase should be in the synchronizer.</li>
	<li>Remove the merge from the sync view</li>
	<li>The Element Tree Spy memory footprint should be reduced
	accordingly</li>
</ol>


<a name="perf00005.html"/>

<h2>Looking For Leaks</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<h3>Removing synchronize view entries</h3>

<ol>
	<li>Start with an empty synchronize view</li>
	<li>Create an entry in the Synchronize view for each of the
	following cases:
	<ul>
		<li>Team>Synchronize</li>
		<li>Compare with>Branch or Version</li>
		<li>Team>Merge</li>
	</ul>
	</li>
	<li>Open the context menu</li>
	<li>Select all mode and layout combinations</li>
	<li>Remove the entry (making the sync view empty).</li>
	<li>Select an item in another view</li>
	<li>Using a memory profiler, look for instances of the following
	classes:
	<ul>
		<li>ISynchronizeParticipant
		<li>SynchronizeModelElement
		<li>SyncInfo/SyncInfoSet
	</ul>
	</li>
</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: 2008/08/27 12:31:28 $</p>

The Team component provides several data structures that can be used to
cache resource synchronization state and resource variants for improved
performance. The plan is to provide tools to interrogate these caches in
the 3.1 timeframe. These caches include:

<ul>
	<li>Resource Variant cache</li>
	<li>SubsciberParticipant/SyncInfoSet</li>
</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>
	<li>Resource History View log entry cache</li>
	<li>Commit Sets log entry cache</li>
</ul>


<a name="perf00007.html"/>

<h2>Scalability</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<p>The following scenario can be used to test a large number of
incoming additions:</p>

<ol>
	<li>Load org.eclipse.jdt.core.tests.model from dev.eclipse.org</li>
	<li>Disconnect Formatter folder and delete it</li>
	<li>Synchronize and the contents show up as incoming additions</li>
	<li>Perform an Update in the project in the sync view.</li>
</ol>


<a name="failures00001.html"/>
<h1>Failure Cases</h1>
<a name="connections00001.html"/>

<h2>Connections</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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>
	<li>Perform an update, a synchronize, and open a file. The log
	should be empty and the operations should succeed.</li>
	<li>Disconnect from the network.</li>
	<li>Open a file. The CVS quick diff will fail and an error should
	be in the log.</li>
	<li>Synchronize all the shared projects. One error explaining the
	failures should be returned.</li>
	<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>
	<li>Expand the invalid location in the CVS repositories view. An
	appropriate error should be shown.</li>
</ul>


<a name="auth_problems00001.html"/>

<h2>Authentication Problems</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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>


<a name="misc00001.html"/>
<h1>Misc</h1>
<a name="00042.html"/>

<h2>CVS Console</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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:</p>
<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>
	<li>font color: message color, error color, command line. Changing
	these should immediately update the console view.</li>
</ul>


<a name="keys00001.html"/>

<h2>Key Bindings</h2>
<p>Since: 3.1<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</p>

<p>Activate the CVS menu and assign keybindings to the various CVS
commands. Ensure that they work as expected.</p>


<a name="validate_edit00001.html"/>
<h1>Validate Edit</h1>
<a name="validate_edit_editing_files00001.html"/>

<h2>Editing Files</h2>
<p>Since: <br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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:</p>

<ul>
	<li>Different repository providers</li>
	<li>Single file editors (java, text)</li>
	<li>Multiple file editors (manifest editor, ...)</li>
</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>
	<li>Start editing the file, validate edit should not be called.</li>
</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>
	<li>Start editing the file, validateEdit should be called.</li>
	<li>validateEdit returns OK, the users edit is accepted and shows
	up in the editor, and the file can be edited normally.</li>
	<li>The user saves the file, and then can continue editing without
	validateEdit being called.</li>
</ol>

<!-- ------------------------------------------------------------------------------ -->

<h3>S2b: Validate edit canceled</h3>
<ol>
	<li>Open a file that has been checked out as read-only from a
	repository provider.</li>
	<li>Start editing the file, validateEdit should be called.</li>
	<li>validateEdit is canceled, the users edit is not accepted and
	the file cannot be edited.</li>
	<li>The user should still be able to browse the contents of the
	file and trying to edit it again</li>
</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>
	<li>Start editing the file, validateEdit should be called.</li>
	<li>validateEdit is canceled, the users edit is not accepted and
	the file cannot be edited. User should be shown the error returned from
	the validateEdit provider.</li>
	<li>The user should still be able to browse the contents of the
	file and trying to edit it again</li>
</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>
	<li>Start editing the file, validateEdit should be called.</li>
	<li>validateEdit returns OK, the user's edit is accepted and the
	file can be edited normally.</li>
	<li>The user saves the file, and then can continue editing without
	validateEdit being called.</li>
	<li>The user saves the file and then checks in the file while the
	editor is still open.</li>
	<li>After the checkin completes the user continues editing the
	file.</li>
	<li>Validate edit should be called again.</li>
</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>
	<li>Start editing the file, validateEdit should be called.</li>
	<li>validateEdit returns OK, the user's edit is accepted and the
	file can be edited normally.</li>
	<li>The user saves the file, and then can continue editing without
	validateEdit being called.</li>
	<li>The user saves the file and keeps the editor opened.</li>
	<li>The user then un-checks out the file and new file contents are
	retrieved from the server.</li>
	<li>The new file contents are loaded into the editor and
	validateEdit is not called.</li>
	<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>
	<li>Start editing the file, validateEdit should be called.</li>
	<li>validateEdit returns OK and brings in new content from the
	server.</li>
	<li>The new content is loaded automatically because the editor
	isn't dirty yet.</li>
</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>
	<li>Start editing the file, validateEdit should be called.</li>
	<li>validateEdit returns OK and the file on disk doesn't change.</li>
	<li>The user continues editing the file and then checks it in.</li>
	<li>The editor remains open and dirty, the user continues editing.</li>

	<li>validateEdit is called because the file is now read-only and
	returns OK and brings in new content from the server.</li>
	<li>The editor detects the timestamp change and prompts about the
	conflict and provides <a href="#reload_options">options</a> to the
	user.</li>
	<li>After the user selects his option and the user continues
	editing, the editor will call validateEdit.</li>
</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>
	<li>Checkout the file that brings in new content from the server.</li>
	<li>The editor should update with the new content from the server.</li>
</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>
	<li>Start editing the file, validateEdit should be called.</li>
	<li>validateEdit returns OK and the file on disk doesn't change.</li>
	<li>The editor remains open and dirty, the user continues editing.</li>
	<li>The user checks-n the file and then closes the editor.</li>
	<li>The user is prompted to save the file, then validate edit is
	called, and the file is checked-out then saved.</li>
</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>
	<li>Start editing the file, validateEdit should be called.</li>
	<li>validateEdit returns OK and the file on disk doesn't change.</li>
	<li>The editor remains open and dirty, the user continues editing.</li>
	<li>The user checks-n the file and then closes the editor.</li>
	<li>The user is prompted to save the file, then validate edit is
	called, and the file is checked-out then saved.</li>
</ol>

<!--
<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"/>


<p>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.</p>

<!-- ------------------------------------------------------------------------------ -->

<h3>S1: Search and Replace</h3>
<ol>
	<li>Select one or more projects or folders and choose Search/File.</li>
	<li>Enter a string known to exist in multiple files and click
	Replace</li>
	<li>Enter a new string that differs from the one searched for.</li>
</ol>

<!-- ------------------------------------------------------------------------------ -->

<h3>S2: Single file content modification</h3>
<ol>
	<li>Open a Java file that is read-only</li>
	<li>Perform any of the Java Source operations (e.g. toggle
	comment)</li>
	<li>Ensure that validate edit is invoked</li>
</ol>

<!-- ------------------------------------------------------------------------------ -->

<h3>S3: Multiple file content modification</h3>
<ol>
	<li>Ensure all files in your workspace are read-only</li>
	<li>Perform a Java/Refactoring such as a method or class rename.</li>
	<li>Ensure that validate edit is invoked at most once per project
	involved.</li>
</ol>


<a name="logical00001.html"/>
<h1>Logical Resource Support</h1>
<a name="logical00002.html"/>

<h2>Java Packages</h2>
<p>Since: 3.1<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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.</p>


<a name="logical00003.html"/>

<h2>Working Sets</h2>
<p>Since: 3.1<br>
Last Modified: $Date: 2008/08/27 12:31:28 $</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.</p>


</body></html>
