diff options
author | cvs2svn | 2003-01-10 19:42:48 +0000 |
---|---|---|
committer | cvs2svn | 2003-01-10 19:42:48 +0000 |
commit | 6770e8244993f194e726c9b06c24adaa32b945ba (patch) | |
tree | dedccf6c5c342cb0ca69428598ccdf13c82222e5 /tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team | |
parent | e6ed10718801d93d54f44a268bdd2a5511bf0aea (diff) | |
download | eclipse.platform.team-6770e8244993f194e726c9b06c24adaa32b945ba.tar.gz eclipse.platform.team-6770e8244993f194e726c9b06c24adaa32b945ba.tar.xz eclipse.platform.team-6770e8244993f194e726c9b06c24adaa32b945ba.zip |
This commit was manufactured by cvs2svn to create branch
'TeamEarlyWarning_Branch'.
Sprout from master 2003-01-10 19:42:46 UTC Michael Valenta <mvalenta> 'Moved schemas into the owning plugins'
Delete:
bundles/org.eclipse.compare/.classpath
bundles/org.eclipse.compare/.cvsignore
bundles/org.eclipse.compare/.project
bundles/org.eclipse.compare/about.html
bundles/org.eclipse.compare/build.properties
bundles/org.eclipse.compare/buildnotes_compare.html
bundles/org.eclipse.compare/compare/org/eclipse/compare/BufferedContent.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareUI.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerPane.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerSwitchingPane.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/HistoryItem.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeListener.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeNotifier.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/IEditableContent.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/IModificationDate.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/IPropertyChangeNotifier.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/IStreamContentAccessor.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/ITypedElement.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/IViewerCreator.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/NavigationAction.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/ResourceNode.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/Splitter.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/ZipFileStructureCreator.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/DelayedProgressMonitor.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IDocumentRange.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IMergeViewerContentProvider.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ITokenComparator.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewerResources.properties
bundles/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/package.html
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AbstractViewer.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryAction.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryAction.properties
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryDialog.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewer.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerCreator.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerResources.properties
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedCanvas.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedResourceNode.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ChangePropertyAction.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ColorEditor.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditor.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorContributor.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.properties
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DiffImage.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/DocumentManager.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/EditionAction.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ExceptionHandler.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/INavigatable.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IOpenable.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ISavable.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IStructureCreatorDescriptor.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IViewerDescriptor.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/IgnoreWhiteSpaceAction.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageCanvas.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewer.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerCreator.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerResources.properties
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ListContentProvider.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ListDialog.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerAction.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerContentProvider.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/NullViewer.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/OverlayPreferenceStore.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.properties
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithPreviousEditionAction.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResizableDialog.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ShowPseudoConflicts.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/SimpleTextViewer.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Splitter.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TabFolderLayout.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextMergeViewerCreator.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewerCreator.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TimeoutContext.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/TokenComparator.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerDescriptor.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerSwitchingCancelled.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/CompareWithPatchAction.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Diff.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Hunk.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/LineReader.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchErrorDialog.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.properties
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchedResource.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/previewAncestor.txt
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/previewLeft.txt
bundles/org.eclipse.compare/compare/org/eclipse/compare/internal/previewRight.txt
bundles/org.eclipse.compare/compare/org/eclipse/compare/package.html
bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/IRangeComparator.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/LinkedRangeDifference.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifference.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifferencer.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/package.html
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffContainer.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffElement.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffNode.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewer.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewerResources.properties
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/Differencer.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DocumentRangeNode.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInput.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInputChangeListener.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffContainer.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffElement.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureComparator.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureCreator.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/StructureDiffViewer.java
bundles/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/package.html
bundles/org.eclipse.compare/doc/hglegal.htm
bundles/org.eclipse.compare/doc/hglegal2002.htm
bundles/org.eclipse.compare/doc/ngibmcpy.gif
bundles/org.eclipse.compare/doc/ngibmcpy2002.gif
bundles/org.eclipse.compare/doc/org_eclipse_compare.html
bundles/org.eclipse.compare/doc/org_eclipse_compare_contentMergeViewers.html
bundles/org.eclipse.compare/doc/org_eclipse_compare_contentViewers.html
bundles/org.eclipse.compare/doc/org_eclipse_compare_structureCreators.html
bundles/org.eclipse.compare/doc/org_eclipse_compare_structureMergeViewers.html
bundles/org.eclipse.compare/icons/full/clcl16/ancestorpane_co.gif
bundles/org.eclipse.compare/icons/full/clcl16/copy_l_co.gif
bundles/org.eclipse.compare/icons/full/clcl16/copy_r_co.gif
bundles/org.eclipse.compare/icons/full/clcl16/copycont_l_co.gif
bundles/org.eclipse.compare/icons/full/clcl16/copycont_r_co.gif
bundles/org.eclipse.compare/icons/full/clcl16/next_nav.gif
bundles/org.eclipse.compare/icons/full/clcl16/prev_nav.gif
bundles/org.eclipse.compare/icons/full/clcl16/smartmode_co.gif
bundles/org.eclipse.compare/icons/full/clcl16/syncpane_co.gif
bundles/org.eclipse.compare/icons/full/clcl16/twowaycompare_co.gif
bundles/org.eclipse.compare/icons/full/ctool16/conflict_edit.gif
bundles/org.eclipse.compare/icons/full/ctool16/ignorews_edit.gif
bundles/org.eclipse.compare/icons/full/cview16/compare_view.gif
bundles/org.eclipse.compare/icons/full/dlcl16/ancestorpane_co.gif
bundles/org.eclipse.compare/icons/full/dlcl16/copy_l_co.gif
bundles/org.eclipse.compare/icons/full/dlcl16/copy_r_co.gif
bundles/org.eclipse.compare/icons/full/dlcl16/copycont_l_co.gif
bundles/org.eclipse.compare/icons/full/dlcl16/copycont_r_co.gif
bundles/org.eclipse.compare/icons/full/dlcl16/next_nav.gif
bundles/org.eclipse.compare/icons/full/dlcl16/prev_nav.gif
bundles/org.eclipse.compare/icons/full/dlcl16/smartmode_co.gif
bundles/org.eclipse.compare/icons/full/dlcl16/syncpane_co.gif
bundles/org.eclipse.compare/icons/full/dlcl16/twowaycompare_co.gif
bundles/org.eclipse.compare/icons/full/dtool16/conflict_edit.gif
bundles/org.eclipse.compare/icons/full/dtool16/ignorews_edit.gif
bundles/org.eclipse.compare/icons/full/elcl16/ancestorpane_co.gif
bundles/org.eclipse.compare/icons/full/elcl16/copy_l_co.gif
bundles/org.eclipse.compare/icons/full/elcl16/copy_r_co.gif
bundles/org.eclipse.compare/icons/full/elcl16/copycont_l_co.gif
bundles/org.eclipse.compare/icons/full/elcl16/copycont_r_co.gif
bundles/org.eclipse.compare/icons/full/elcl16/next_nav.gif
bundles/org.eclipse.compare/icons/full/elcl16/prev_nav.gif
bundles/org.eclipse.compare/icons/full/elcl16/smartmode_co.gif
bundles/org.eclipse.compare/icons/full/elcl16/syncpane_co.gif
bundles/org.eclipse.compare/icons/full/elcl16/twowaycompare_co.gif
bundles/org.eclipse.compare/icons/full/etool16/conflict_edit.gif
bundles/org.eclipse.compare/icons/full/etool16/ignorews_edit.gif
bundles/org.eclipse.compare/icons/full/eview16/compare_view.gif
bundles/org.eclipse.compare/icons/full/obj16/day_obj.gif
bundles/org.eclipse.compare/icons/full/obj16/resource_obj.gif
bundles/org.eclipse.compare/icons/full/ovr16/add_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/chg_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/confadd_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/confchg_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/confdel_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/del_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/error_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/inadd_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/inchg_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/indel_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/outadd_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/outchg_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/outdel_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/r_inadd_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/r_inchg_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/r_indel_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/r_outadd_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/r_outchg_ov.gif
bundles/org.eclipse.compare/icons/full/ovr16/r_outdel_ov.gif
bundles/org.eclipse.compare/plugin.properties
bundles/org.eclipse.compare/plugin.xml
bundles/org.eclipse.compare/plugins/org.eclipse.compare/.classpath
bundles/org.eclipse.compare/plugins/org.eclipse.compare/.cvsignore
bundles/org.eclipse.compare/plugins/org.eclipse.compare/.project
bundles/org.eclipse.compare/plugins/org.eclipse.compare/about.html
bundles/org.eclipse.compare/plugins/org.eclipse.compare/build.properties
bundles/org.eclipse.compare/plugins/org.eclipse.compare/buildnotes_compare.html
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/BufferedContent.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareConfiguration.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareEditorInput.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareUI.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerPane.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/CompareViewerSwitchingPane.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/EditionSelectionDialog.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/HistoryItem.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeListener.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IContentChangeNotifier.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IEditableContent.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IModificationDate.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IPropertyChangeNotifier.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IStreamContentAccessor.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ITypedElement.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/IViewerCreator.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/NavigationAction.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ResourceNode.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/Splitter.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/ZipFileStructureCreator.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ContentMergeViewer.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/DelayedProgressMonitor.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IDocumentRange.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/IMergeViewerContentProvider.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/ITokenComparator.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewerResources.properties
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/package.html
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AbstractViewer.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryAction.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryAction.properties
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/AddFromHistoryDialog.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewer.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerCreator.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BinaryCompareViewerResources.properties
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedCanvas.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/BufferedResourceNode.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ChangePropertyAction.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ColorEditor.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareAction.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareDialog.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditor.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareEditorContributor.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareMessages.properties
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareNavigator.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ComparePreferencePage.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareUIPlugin.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/CompareWithEditionAction.properties
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DiffImage.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DocLineComparator.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/DocumentManager.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/EditionAction.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ExceptionHandler.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/INavigatable.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IOpenable.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ISavable.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IStructureCreatorDescriptor.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IViewerDescriptor.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/IgnoreWhiteSpaceAction.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageCanvas.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewer.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerCreator.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ImageMergeViewerResources.properties
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ListContentProvider.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ListDialog.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeSourceViewer.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerAction.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/MergeViewerContentProvider.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/NullViewer.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/OverlayPreferenceStore.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithEditionAction.properties
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ReplaceWithPreviousEditionAction.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResizableDialog.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ResourceCompareInput.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ShowPseudoConflicts.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/SimpleTextViewer.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/Splitter.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TabFolderLayout.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextMergeViewerCreator.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TextViewerCreator.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TimeoutContext.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/TokenComparator.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/Utilities.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerDescriptor.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/ViewerSwitchingCancelled.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Attic/LineReader.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/CompareWithPatchAction.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Diff.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Hunk.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/InputPatchPage.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/LineReader.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchCompareInput.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchErrorDialog.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchMessages.properties
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchWizard.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PatchedResource.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/Patcher.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/patch/PreviewPatchPage.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/previewAncestor.txt
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/previewLeft.txt
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/internal/previewRight.txt
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/package.html
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/DifferencesIterator.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/IRangeComparator.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/LinkedRangeDifference.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifference.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/RangeDifferencer.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/rangedifferencer/package.html
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffContainer.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffElement.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffNode.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewer.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DiffTreeViewerResources.properties
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/Differencer.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/DocumentRangeNode.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInput.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/ICompareInputChangeListener.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffContainer.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IDiffElement.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureComparator.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/IStructureCreator.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/StructureDiffViewer.java
bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/structuremergeviewer/package.html
bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/hglegal.htm
bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/hglegal2002.htm
bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/ngibmcpy.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/ngibmcpy2002.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare.html
bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_contentMergeViewers.html
bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_contentViewers.html
bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_structureCreators.html
bundles/org.eclipse.compare/plugins/org.eclipse.compare/doc/org_eclipse_compare_structureMergeViewers.html
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/ancestorpane_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copy_l_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copy_r_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copycont_l_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/copycont_r_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/next_nav.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/prev_nav.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/smartmode_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/syncpane_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/clcl16/twowaycompare_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ctool16/conflict_edit.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ctool16/ignorews_edit.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/cview16/compare_view.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/ancestorpane_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copy_l_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copy_r_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copycont_l_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/copycont_r_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/next_nav.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/prev_nav.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/smartmode_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/syncpane_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dlcl16/twowaycompare_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dtool16/conflict_edit.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/dtool16/ignorews_edit.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/ancestorpane_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copy_l_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copy_r_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copycont_l_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/copycont_r_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/next_nav.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/prev_nav.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/smartmode_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/syncpane_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/elcl16/twowaycompare_co.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/etool16/conflict_edit.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/etool16/ignorews_edit.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/eview16/compare_view.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/obj16/day_obj.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/obj16/resource_obj.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/add_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/chg_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confadd_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confchg_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/confdel_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/del_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/error_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/inadd_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/inchg_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/indel_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outadd_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outchg_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/outdel_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_inadd_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_inchg_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_indel_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outadd_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outchg_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/icons/full/ovr16/r_outdel_ov.gif
bundles/org.eclipse.compare/plugins/org.eclipse.compare/plugin.properties
bundles/org.eclipse.compare/plugins/org.eclipse.compare/plugin.xml
bundles/org.eclipse.compare/plugins/org.eclipse.compare/scripts/exportplugin.xml
bundles/org.eclipse.compare/scripts/exportplugin.xml
bundles/org.eclipse.team.core/.classpath
bundles/org.eclipse.team.core/.cvsignore
bundles/org.eclipse.team.core/.options
bundles/org.eclipse.team.core/.project
bundles/org.eclipse.team.core/about.html
bundles/org.eclipse.team.core/build.properties
bundles/org.eclipse.team.core/buildnotes_team.html
bundles/org.eclipse.team.core/doc/hglegal.htm
bundles/org.eclipse.team.core/doc/ngibmcpy.gif
bundles/org.eclipse.team.core/doc/org_eclipse_team_core.html
bundles/org.eclipse.team.core/doc/org_eclipse_team_core_fileTypes.html
bundles/org.eclipse.team.core/doc/org_eclipse_team_core_ignore.html
bundles/org.eclipse.team.core/doc/org_eclipse_team_core_projectSets.html
bundles/org.eclipse.team.core/doc/org_eclipse_team_core_repository.html
bundles/org.eclipse.team.core/plugin.properties
bundles/org.eclipse.team.core/schema/fileTypes.mxsd
bundles/org.eclipse.team.core/schema/ignore.mxsd
bundles/org.eclipse.team.core/schema/projectSets.mxsd
bundles/org.eclipse.team.core/src/org/eclipse/team/core/IFileTypeInfo.java
bundles/org.eclipse.team.core/src/org/eclipse/team/core/IIgnoreInfo.java
bundles/org.eclipse.team.core/src/org/eclipse/team/core/IProjectSetSerializer.java
bundles/org.eclipse.team.core/src/org/eclipse/team/core/TeamException.java
bundles/org.eclipse.team.core/src/org/eclipse/team/core/package.html
bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/ILocalSyncElement.java
bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/IRemoteResource.java
bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/IRemoteSyncElement.java
bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/LocalSyncElement.java
bundles/org.eclipse.team.core/src/org/eclipse/team/core/sync/RemoteSyncElement.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/Assert.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/DefaultFileModificationValidator.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/DefaultMoveDeleteHook.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/FileModificationValidatorManager.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/InfiniteSubProgressMonitor.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/MoveDeleteManager.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/NullSubProgressMonitor.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/Policy.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/StringMatcher.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/TeamHookDispatcher.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/messages.properties
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/simpleAccess/SimpleAccessOperations.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/CRLFtoLFInputStream.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/LFtoCRLFInputStream.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/PollingInputStream.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/PollingOutputStream.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/ProgressMonitorInputStream.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/SizeConstrainedInputStream.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/TimeoutInputStream.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/streams/TimeoutOutputStream.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/AuthenticatedSite.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/BaseIdentifierNotInitializedException.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/IRemoteTargetResource.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/ISiteFactory.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/ISiteListener.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/ITargetRunnable.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/ITeamStatusConstants.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/LocationMapping.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/RemoteTargetSyncElement.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/ResourceState.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/Site.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/SynchronizedTargetProvider.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/TargetManager.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/TargetProvider.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/UrlUtil.java
bundles/org.eclipse.team.core/src/org/eclipse/team/internal/core/target/messages.properties
bundles/org.eclipse.team.cvs.core/.classpath
bundles/org.eclipse.team.cvs.core/.cvsignore
bundles/org.eclipse.team.cvs.core/.options
bundles/org.eclipse.team.cvs.core/.project
bundles/org.eclipse.team.cvs.core/about.html
bundles/org.eclipse.team.cvs.core/build.properties
bundles/org.eclipse.team.cvs.core/buildnotes_cvs.html
bundles/org.eclipse.team.cvs.core/doc/hglegal.htm
bundles/org.eclipse.team.cvs.core/doc/ngibmcpy.gif
bundles/org.eclipse.team.cvs.core/doc/org_eclipse_team_cvs_core.html
bundles/org.eclipse.team.cvs.core/plugin.properties
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSException.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSStatus.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSTag.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/CVSTeamProvider.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/DateUtil.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSFile.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSFileModificationValidator.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSFolder.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRemoteFile.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRemoteFolder.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRemoteResource.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRepositoryLocation.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSResource.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSResourceVisitor.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ICVSRunnable.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/IConnectionMethod.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/ILogEntry.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/IResourceStateChangeListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/IServerConnection.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/IUserAuthenticator.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/IUserInfo.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/Policy.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/AbstractMessageCommand.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/AbstractStructureVisitor.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Add.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/AddStructureVisitor.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Admin.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/CheckedInHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Checkout.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Command.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/CommandOutputListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Commit.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/CopyHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Diff.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/DiffStructureVisitor.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ExpandModules.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/FileStructureVisitor.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Import.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ImportStructureVisitor.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Log.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/MTHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ModTimeHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ModifiedFileSender.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ModuleExpansionHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/NOOPCommand.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/NOOPVisitor.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/NewEntryHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/NotifiedHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/PruneFolderVisitor.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/RTag.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/RemoteCommand.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Remove.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/RemoveEntryHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/RemovedHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Request.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ResponseHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Session.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/StaticHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Status.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/StickyHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Tag.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/TagFileSender.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Update.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/UpdatedHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ValidRequests.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/ValidRequestsHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/Version.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/AdminKSubstListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/DiffListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/ICommandOutputListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/IConsoleListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/IStatusListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/IUpdateMessageListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/LogEntry.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/LogListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/ModuleDefinitionsListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/ModuleExpansion.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/StatusListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/TagListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/client/listeners/UpdateListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSAuthenticationException.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSCommunicationException.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSRepositoryLocation.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/CVSServerException.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/Connection.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/ExtConnection.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/ExtConnectionMethod.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/PServerConnection.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/PServerConnectionMethod.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/connection/UserInfo.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/messages.properties
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/CVSEntryLineTag.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/CVSLocalSyncElement.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/CVSRemoteSyncElement.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/CVSWorkspaceRoot.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseFile.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseFolder.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseResource.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/EclipseSynchronizer.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/FileModificationManager.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFile.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFolder.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFolderTree.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteFolderTreeBuilder.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteModule.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/RemoteResource.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/SessionPropertySyncInfoCache.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/SyncInfoCache.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/resources/SynchronizerSyncInfoCache.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/BaserevInfo.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/FolderSyncInfo.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/MutableFolderSyncInfo.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/MutableResourceSyncInfo.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/NotifyInfo.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ReentrantLock.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/syncinfo/ResourceSyncInfo.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/AddDeleteMoveListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/Assert.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/AssertionFailedException.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/CVSDateFormatter.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/FileNameMatcher.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/MoveDeleteHook.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/PrepareForReplaceVisitor.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/ProjectDescriptionContentHandler.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/ProjectDescriptionManager.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/ProjectDescriptionWriter.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/ReplaceWithBaseVisitor.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/StringMatcher.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/SyncFileChangeListener.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/SyncFileWriter.java
bundles/org.eclipse.team.cvs.core/src/org/eclipse/team/internal/ccvs/core/util/Util.java
bundles/org.eclipse.team.cvs.ssh/.classpath
bundles/org.eclipse.team.cvs.ssh/.cvsignore
bundles/org.eclipse.team.cvs.ssh/.options
bundles/org.eclipse.team.cvs.ssh/.project
bundles/org.eclipse.team.cvs.ssh/about.html
bundles/org.eclipse.team.cvs.ssh/build.properties
bundles/org.eclipse.team.cvs.ssh/plugin.properties
bundles/org.eclipse.team.cvs.ssh/plugin.xml
bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Blowfish.java
bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Cipher.java
bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Client.java
bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ClientPacket.java
bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/KnownHosts.java
bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Misc.java
bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Packet.java
bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/Policy.java
bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHMethod.java
bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHPlugin.java
bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/SSHServerConnection.java
bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/ServerPacket.java
bundles/org.eclipse.team.cvs.ssh/src/org/eclipse/team/internal/ccvs/ssh/messages.properties
bundles/org.eclipse.team.cvs.ui/.classpath
bundles/org.eclipse.team.cvs.ui/.cvsignore
bundles/org.eclipse.team.cvs.ui/.project
bundles/org.eclipse.team.cvs.ui/about.html
bundles/org.eclipse.team.cvs.ui/build.properties
bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/clear_co.gif
bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/filter_history.gif
bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/newstream_wiz.gif
bundles/org.eclipse.team.cvs.ui/icons/full/clcl16/refresh.gif
bundles/org.eclipse.team.cvs.ui/icons/full/ctool16/checkout.gif
bundles/org.eclipse.team.cvs.ui/icons/full/ctool16/contents.gif
bundles/org.eclipse.team.cvs.ui/icons/full/cview16/console_view.gif
bundles/org.eclipse.team.cvs.ui/icons/full/cview16/cvs_persp.gif
bundles/org.eclipse.team.cvs.ui/icons/full/cview16/history_view.gif
bundles/org.eclipse.team.cvs.ui/icons/full/cview16/repo_rep.gif
bundles/org.eclipse.team.cvs.ui/icons/full/dlcl16/clear_co.gif
bundles/org.eclipse.team.cvs.ui/icons/full/dlcl16/filter_history.gif
bundles/org.eclipse.team.cvs.ui/icons/full/dlcl16/refresh.gif
bundles/org.eclipse.team.cvs.ui/icons/full/dtool16/contents.gif
bundles/org.eclipse.team.cvs.ui/icons/full/elcl16/clear_co.gif
bundles/org.eclipse.team.cvs.ui/icons/full/elcl16/filter_history.gif
bundles/org.eclipse.team.cvs.ui/icons/full/elcl16/refresh.gif
bundles/org.eclipse.team.cvs.ui/icons/full/etool16/contents.gif
bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph1.gif
bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph2.gif
bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph3.gif
bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph4.gif
bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph5.gif
bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph6.gif
bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph7.gif
bundles/org.eclipse.team.cvs.ui/icons/full/glyphs/glyph8.gif
bundles/org.eclipse.team.cvs.ui/icons/full/obj16/branches_rep.gif
bundles/org.eclipse.team.cvs.ui/icons/full/obj16/module_rep.gif
bundles/org.eclipse.team.cvs.ui/icons/full/obj16/prjversions_rep.gif
bundles/org.eclipse.team.cvs.ui/icons/full/obj16/repository_rep.gif
bundles/org.eclipse.team.cvs.ui/icons/full/obj16/tag.gif
bundles/org.eclipse.team.cvs.ui/icons/full/obj16/versions_rep.gif
bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/confauto_ov.gif
bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/merged_ov.gif
bundles/org.eclipse.team.cvs.ui/icons/full/ovr16/question_ov.gif
bundles/org.eclipse.team.cvs.ui/icons/full/wizards/cvs_synch.gif
bundles/org.eclipse.team.cvs.ui/icons/full/wizards/newconnect_wiz.gif
bundles/org.eclipse.team.cvs.ui/icons/full/wizards/newlocation_wiz.gif
bundles/org.eclipse.team.cvs.ui/icons/full/wizban/createpatch_wizban.gif
bundles/org.eclipse.team.cvs.ui/icons/full/wizban/keywordsub_wizban.gif
bundles/org.eclipse.team.cvs.ui/icons/full/wizban/mergestream_wizban.gif
bundles/org.eclipse.team.cvs.ui/icons/full/wizban/newconnect_wizban.gif
bundles/org.eclipse.team.cvs.ui/icons/full/wizban/newlocation_wizban.gif
bundles/org.eclipse.team.cvs.ui/icons/full/wizban/newstream_wizban.gif
bundles/org.eclipse.team.cvs.ui/plugin.properties
bundles/org.eclipse.team.cvs.ui/plugin.xml
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AdaptableHierarchicalResourceList.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AdaptableResourceList.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AlternateUserValidationDialog.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/AvoidableMessageDialog.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/BranchPromptDialog.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSAbstractResolutionGenerator.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSAddResolutionGenerator.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareEditorInput.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSCompareRevisionsInput.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorConfiguration.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSDecoratorPreferencesPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSFieldEditorPreferencePage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSFilePropertiesPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSFolderPropertiesPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSLightweightDecorator.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSLocalCompareEditorInput.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPerspective.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSPreferencesPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSProjectPropertiesPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSProjectSetSerializer.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSRemoveResolutionGenerator.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/CVSUIPlugin.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Console.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConsoleDocument.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ConsolePreferencesPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/DialogArea.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ExtMethodPreferencePage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/FileModificationValidator.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryDropAdapter.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilter.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilterAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryFilterDialog.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryTableProvider.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/HistoryView.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ICVSUIConstants.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IHelpContextIds.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IRepositoryListener.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/IgnoreResourcesDialog.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ListSelectionArea.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/OverlayIcon.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/OverlayIconCache.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/Policy.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ProjectSelectionDialog.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ReleaseCommentDialog.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RemoteFileEditorInput.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/RemoteFileStorage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResizableWizardDialog.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourceEditionNode.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/ResourcePropertiesPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/SimpleContentProvider.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagAsVersionDialog.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagConfigurationDialog.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TagSelectionDialog.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TextViewerAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/TimeoutProgressMonitorDialog.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/UserValidationDialog.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/VersionCollator.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WatchEditPreferencePage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WorkbenchUserAuthenticator.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/WorkingSetSelectionArea.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/XMLWriter.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/AddToWorkspaceAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/BranchAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CVSAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutAsAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CheckoutIntoAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CommitAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareRemoteResourcesAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareRemoteWithTagAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRemoteAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithRevisionAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/CompareWithTagAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ConfigureTagsFromRepoView.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ConfigureTagsFromRepoViewOnFolder.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ContentAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/EditAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/GenerateDiffFileAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/IgnoreAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/MergeAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/MoveRemoteTagAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/NewRepositoryAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenLogEntryAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/OpenRemoteFileAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithRemoteAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ReplaceWithTagAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/RestoreFromRepositoryAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SetKeywordSubstitutionAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowCVSPerspectiveAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowHistoryAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/ShowResourceInHistoryAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncAllAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/SyncOutgoingAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/TagInRepositoryAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UneditAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UnmanageAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/UpdateAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/actions/WorkspaceAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeEditorInput.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizard.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizardEndPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/MergeWizardStartPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/OverrideUpdateMergeAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/ProjectElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/TagElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/TagRootElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/UpdateMergeAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/merge/UpdateWithForcedJoinAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/messages.properties
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/AllRootsElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/BranchCategory.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSAdapterFactory.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSFileElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSFolderElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSModelElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRemoteFilePropertySource.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRemoteFolderPropertySource.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRepositoryLocationPropertySource.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRepositoryRootElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSResourceElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSRootFolderElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/CVSTagElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/GroupedByVersionCategory.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/ModulesCategory.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteContentProvider.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFileElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteFolderElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteModule.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteProjectsElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteResourceElement.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/RemoteVersionModule.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/model/VersionCategory.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CVSRepositoryPropertiesPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CVSWorkingSetPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/CopyRepositoryNameAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/DefineBranchAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/NewCVSAnonEclipseConnection.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/NewCVSRepositoryAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshFileSelectionPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshRemoteProjectSelectionPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshRemoteProjectWizard.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RefreshTagsAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteProjectsView.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteTagsView.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoteViewPart.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveBranchTagAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RemoveRootAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesView.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoriesViewContentHandler.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoryManager.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositoryRoot.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/repo/RepositorySorter.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/AddSyncAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CVSCatchupReleaseViewer.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CVSSyncCompareInput.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CVSSyncCompareUnsharedInput.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CVSSyncSet.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/CommitSyncAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/ForceCommitSyncAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/ForceUpdateSyncAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/IgnoreAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/MergeAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/ToolTipMessageDialog.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/sync/UpdateSyncAction.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CVSWizardPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutIntoProjectSelectionPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/CheckoutIntoWizard.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardAutoconnectPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ConfigurationWizardMainPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileOperation.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/GenerateDiffFileWizard.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizard.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardDirtyFilesPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSelectionPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSharedFilesPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/KSubstWizardSummaryPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/ModuleSelectionPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/NewLocationWizard.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RepositorySelectionPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RestoreFromRepositoryFileSelectionPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/RestoreFromRepositoryWizard.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizard.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/SharingWizardFinishPage.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/UpdateWizard.java
bundles/org.eclipse.team.cvs.ui/src/org/eclipse/team/internal/ccvs/ui/wizards/UpdateWizardPage.java
bundles/org.eclipse.team.ui/.classpath
bundles/org.eclipse.team.ui/.cvsignore
bundles/org.eclipse.team.ui/.project
bundles/org.eclipse.team.ui/about.html
bundles/org.eclipse.team.ui/build.properties
bundles/org.eclipse.team.ui/doc/hglegal.htm
bundles/org.eclipse.team.ui/doc/ngibmcpy.gif
bundles/org.eclipse.team.ui/doc/org_eclipse_team_ui.html
bundles/org.eclipse.team.ui/doc/org_eclipse_team_ui_configurationWizards.html
bundles/org.eclipse.team.ui/icons/full/clcl16/catchup_rls.gif
bundles/org.eclipse.team.ui/icons/full/clcl16/catchuprelease_rls.gif
bundles/org.eclipse.team.ui/icons/full/clcl16/conflict_synch.gif
bundles/org.eclipse.team.ui/icons/full/clcl16/contents.gif
bundles/org.eclipse.team.ui/icons/full/clcl16/ignorews_edit.gif
bundles/org.eclipse.team.ui/icons/full/clcl16/incom_synch.gif
bundles/org.eclipse.team.ui/icons/full/clcl16/outgo_synch.gif
bundles/org.eclipse.team.ui/icons/full/clcl16/refresh.gif
bundles/org.eclipse.team.ui/icons/full/clcl16/release_rls.gif
bundles/org.eclipse.team.ui/icons/full/clcl16/site_element.gif
bundles/org.eclipse.team.ui/icons/full/cview16/synch_synch.gif
bundles/org.eclipse.team.ui/icons/full/dlcl16/catchup_rls.gif
bundles/org.eclipse.team.ui/icons/full/dlcl16/catchuprelease_rls.gif
bundles/org.eclipse.team.ui/icons/full/dlcl16/conflict_synch.gif
bundles/org.eclipse.team.ui/icons/full/dlcl16/contents.gif
bundles/org.eclipse.team.ui/icons/full/dlcl16/ignorews_edit.gif
bundles/org.eclipse.team.ui/icons/full/dlcl16/incom_synch.gif
bundles/org.eclipse.team.ui/icons/full/dlcl16/outgo_synch.gif
bundles/org.eclipse.team.ui/icons/full/dlcl16/refresh.gif
bundles/org.eclipse.team.ui/icons/full/dlcl16/release_rls.gif
bundles/org.eclipse.team.ui/icons/full/dlcl16/site_element.gif
bundles/org.eclipse.team.ui/icons/full/elcl16/catchup_rls.gif
bundles/org.eclipse.team.ui/icons/full/elcl16/catchuprelease_rls.gif
bundles/org.eclipse.team.ui/icons/full/elcl16/conflict_synch.gif
bundles/org.eclipse.team.ui/icons/full/elcl16/contents.gif
bundles/org.eclipse.team.ui/icons/full/elcl16/ignorews_edit.gif
bundles/org.eclipse.team.ui/icons/full/elcl16/incom_synch.gif
bundles/org.eclipse.team.ui/icons/full/elcl16/outgo_synch.gif
bundles/org.eclipse.team.ui/icons/full/elcl16/refresh.gif
bundles/org.eclipse.team.ui/icons/full/elcl16/release_rls.gif
bundles/org.eclipse.team.ui/icons/full/elcl16/site_element.gif
bundles/org.eclipse.team.ui/icons/full/obj/export_projectset.gif
bundles/org.eclipse.team.ui/icons/full/obj/import_projectset.gif
bundles/org.eclipse.team.ui/icons/full/obj/share_project.gif
bundles/org.eclipse.team.ui/icons/full/ovr/checkedout_ov.gif
bundles/org.eclipse.team.ui/icons/full/ovr/dirty_ov.gif
bundles/org.eclipse.team.ui/icons/full/ovr/version_controlled.gif
bundles/org.eclipse.team.ui/icons/full/wizban/export_projectset_wizban.gif
bundles/org.eclipse.team.ui/icons/full/wizban/import_projectset_wizban.gif
bundles/org.eclipse.team.ui/icons/full/wizban/share_wizban.gif
bundles/org.eclipse.team.ui/plugin.properties
bundles/org.eclipse.team.ui/plugin.xml
bundles/org.eclipse.team.ui/schema/configurationWizards.mxsd
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardElement.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigurationWizardNode.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizard.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ConfigureProjectWizardMainPage.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/DetailsDialog.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/DetailsDialogWithProjects.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ExportProjectSetMainPage.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IHelpContextIds.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IPromptCondition.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/IgnorePreferencePage.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ImportProjectSetMainPage.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/NatureToPropertyAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/Policy.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ProjectSetContentHandler.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ProjectSetExportWizard.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/ProjectSetImportWizard.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/PromptingDialog.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamPreferencePage.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamUIPlugin.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TeamWizardPage.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/TextPreferencePage.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/UIConstants.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/ConfigureProjectAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/DeconfigureProjectAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/actions/TeamAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/messages.properties
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/CatchupReleaseViewer.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/ChangedTeamContainer.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/ITeamNode.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/MergeResource.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/SyncCompareInput.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/SyncSet.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/SyncView.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/TeamFile.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/TypedBufferedContent.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/sync/UnchangedTeamContainer.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/AuthenticatedTargetSitePropertiesPage.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ConfigureTargetWizard.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/CreateNewFolderAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/DiscardSiteAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ExportTargetSiteMainPage.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAsAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetAsProjectAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/GetSyncAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ImportTargetSiteMainPage.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/MappingSelectionPage.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/ProjectTargetMappingPropertiesPage.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/PutAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/PutSyncAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/RemoteResourceElement.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteElement.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteExplorerView.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteExplorerViewLabelProvider.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteLazyContentProvider.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteRootsElement.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteSelectionPage.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SiteViewSorter.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/SyncAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetCatchupReleaseViewer.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetProjectAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetSiteContentHandler.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetSiteExportWizard.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetSiteImportWizard.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetSyncAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetSyncCompareInput.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/TargetWizardPage.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/internal/ui/target/UploadAction.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/IConfigurationWizard.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/ISharedImages.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/TeamImages.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/TeamUI.java
bundles/org.eclipse.team.ui/src/org/eclipse/team/ui/package.html
examples/org.eclipse.team.examples.filesystem/.classpath
examples/org.eclipse.team.examples.filesystem/.cvsignore
examples/org.eclipse.team.examples.filesystem/.project
examples/org.eclipse.team.examples.filesystem/about.html
examples/org.eclipse.team.examples.filesystem/build.properties
examples/org.eclipse.team.examples.filesystem/doc-html/hglegal.htm
examples/org.eclipse.team.examples.filesystem/doc-html/ngibmcpy.gif
examples/org.eclipse.team.examples.filesystem/doc-html/team_filesystem_ex.html
examples/org.eclipse.team.examples.filesystem/icons/full/wizards/fsicon_wiz.gif
examples/org.eclipse.team.examples.filesystem/icons/full/wizban/newconnect_wizban.gif
examples/org.eclipse.team.examples.filesystem/plugin.properties
examples/org.eclipse.team.examples.filesystem/plugin.xml
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/FileModificationValidator.java
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/FileSystemPlugin.java
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/FileSystemProvider.java
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/FileSystemRemoteResource.java
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/FileSystemSimpleAccessOperations.java
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/Policy.java
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/StreamUtil.java
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/messages.properties
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/ui/ConfigurationWizard.java
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/ui/DisconnectAction.java
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/ui/FileSystemAction.java
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/ui/FileSystemMainPage.java
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/ui/FileSystemPropertiesPage.java
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/ui/GetAction.java
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/ui/PutAction.java
examples/org.eclipse.team.examples.filesystem/src/org/eclipse/team/examples/filesystem/ui/ReplaceAction.java
tests/org.eclipse.team.tests.core/.classpath
tests/org.eclipse.team.tests.core/.cvsignore
tests/org.eclipse.team.tests.core/.project
tests/org.eclipse.team.tests.core/about.html
tests/org.eclipse.team.tests.core/build-tests.xml
tests/org.eclipse.team.tests.core/build.properties
tests/org.eclipse.team.tests.core/ftp.properties
tests/org.eclipse.team.tests.core/plugin.xml
tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/AllTargetTests.java
tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/AllTeamTests.java
tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/RemoteResourceTests.java
tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/RepositoryProviderBic.java
tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/RepositoryProviderNaish.java
tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/RepositoryProviderOtherSport.java
tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/RepositoryProviderTests.java
tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/RepositoryProviderWithLinking.java
tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/StreamTests.java
tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/SyncElementTest.java
tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/TargetProviderTests.java
tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/TargetTestSetup.java
tests/org.eclipse.team.tests.core/src/org/eclipse/team/tests/core/TeamTest.java
tests/org.eclipse.team.tests.core/test.xml
tests/org.eclipse.team.tests.core/webdav.properties
tests/org.eclipse.team.tests.cvs.core/.classpath
tests/org.eclipse.team.tests.cvs.core/.cvsignore
tests/org.eclipse.team.tests.cvs.core/.project
tests/org.eclipse.team.tests.cvs.core/about.html
tests/org.eclipse.team.tests.cvs.core/benchmark/cvsui_benchmark.bat
tests/org.eclipse.team.tests.cvs.core/benchmark/readme.txt
tests/org.eclipse.team.tests.cvs.core/benchmark/team2.0/2002_02_26.integration.all.xml
tests/org.eclipse.team.tests.cvs.core/benchmark/team2.0/2002_03_19.integration.all.xml
tests/org.eclipse.team.tests.cvs.core/benchmark/team2.0/2002_04_24.milestone5.all.xml
tests/org.eclipse.team.tests.cvs.core/benchmark/team2.0/2002_04_25.integration.commandline.xml
tests/org.eclipse.team.tests.cvs.core/benchmark/team2.0/2002_07_10.release2_0.commandline.xml
tests/org.eclipse.team.tests.cvs.core/benchmark/team2.0/2002_07_11.release2_0.all.xml
tests/org.eclipse.team.tests.cvs.core/benchmark/team2.1/2002_11_27.integration.all.xml
tests/org.eclipse.team.tests.cvs.core/benchmark/teamui_benchmark.bat
tests/org.eclipse.team.tests.cvs.core/benchmark/vcm1.0/2002_02_26.integration.all.xml
tests/org.eclipse.team.tests.cvs.core/benchmark/vcmui_benchmark.bat
tests/org.eclipse.team.tests.cvs.core/build-tests.xml
tests/org.eclipse.team.tests.cvs.core/build.properties
tests/org.eclipse.team.tests.cvs.core/plugin.xml
tests/org.eclipse.team.tests.cvs.core/readme.html
tests/org.eclipse.team.tests.cvs.core/repository.properties
tests/org.eclipse.team.tests.cvs.core/resources/BenchmarkTest/benchmarkBig.zip
tests/org.eclipse.team.tests.cvs.core/resources/BenchmarkTest/benchmarkSmall.zip
tests/org.eclipse.team.tests.cvs.core/resources/BenchmarkTest/benchmarkTiny.zip
tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/CVSROOT/modules
tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/common/docs/readme.html
tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/common/macros/macro1
tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project1/f1/file-in-p1.txt
tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project2/file-p2.txt
tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/src/file.c
tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/src/file.h
tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project3/sub/file-sub.txt
tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/common/common.txt
tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/linux/linux.txt
tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project7/pc/pc.txt
tests/org.eclipse.team.tests.cvs.core/resources/CommandTest/project8/file-p8.txt
tests/org.eclipse.team.tests.cvs.core/self-host.xml
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/AllTeamAndCVSTests.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/AllTests.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CVSClientException.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CVSTestSetup.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CommandLineCVSClient.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/EclipseCVSClient.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/EclipseTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/ICVSClient.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/JUnitTestCase.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/AllTestsCompatibility.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/BasicTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/CompatibleTestSetup.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ConflictTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ModuleTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/SameResultEnv.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/AllTestsCVSResources.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/BatchedTestSetup.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/EclipseFolderTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/EclipseSynchronizerTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/ResourceSyncInfoTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/AllTestsProvider.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CVSProviderTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ImportTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/IsModifiedTests.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/LinkResourcesTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ModuleTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/RemoteResourceTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ResourceDeltaTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/SyncElementTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/WatchEditTest.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/CVSUITestCase.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/DummyPromptCondition.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/EclipseUITestHarnessApplication.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/EmptyPerspective.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/FakeSelectionProvider.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/ICriteria.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/LoggingTestCase.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/LoggingTestResult.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/LoggingTestRunner.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/PerformanceTimer.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/SequenceGenerator.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/Util.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/Waiter.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/AllTests.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/BenchmarkTestSetup.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/CommandTests.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/SyncTests.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/WorkflowTests.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/ArgumentParser.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/CaseEntry.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/DelimitedValuesWriter.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/GroupEntry.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/ILogEntryVisitor.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/LogEntry.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/LogEntryContainer.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/LogFormatterUIMain.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/MergeRunsVisitor.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintCSVDiffVisitor.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintCSVSummaryVisitor.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintDiffMain.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintDiffVisitor.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintSummaryMain.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintTextDiffVisitor.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintTextSummaryVisitor.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/Result.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/RootEntry.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/TaskEntry.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/Util.java
tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/unit/MenuEnablementTest.java
tests/org.eclipse.team.tests.cvs.core/test.xml
Diffstat (limited to 'tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team')
69 files changed, 0 insertions, 11071 deletions
diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/AllTeamAndCVSTests.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/AllTeamAndCVSTests.java deleted file mode 100644 index 34bc77809..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/AllTeamAndCVSTests.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.eclipse.team.tests.ccvs.core; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import junit.extensions.TestSetup; -import junit.framework.Test; -import junit.framework.TestSuite; -import org.eclipse.team.tests.core.AllTeamTests; - -public class AllTeamAndCVSTests extends EclipseTest { - - /** - * Constructor for CVSClientTest. - */ - public AllTeamAndCVSTests() { - super(); - } - - /** - * Constructor for CVSClientTest. - * @param name - */ - public AllTeamAndCVSTests(String name) { - super(name); - } - - /* - * ORDER IS IMPORTANT: Run compatibility and resource tests before any other!!! - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(new TestSetup(AllTeamTests.suite())); - suite.addTest(new CVSTestSetup(AllTests.suite())); - return suite; - } -} - diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/AllTests.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/AllTests.java deleted file mode 100644 index 7f0ddf5b2..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/AllTests.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.eclipse.team.tests.ccvs.core; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import junit.framework.Test; -import junit.framework.TestSuite; - -public class AllTests extends EclipseTest { - - /** - * Constructor for CVSClientTest. - */ - public AllTests() { - super(); - } - - /** - * Constructor for CVSClientTest. - * @param name - */ - public AllTests(String name) { - super(name); - } - - /* - * ORDER IS IMPORTANT: Run compatibility and resource tests before any other!!! - */ - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(org.eclipse.team.tests.ccvs.core.compatible.AllTestsCompatibility.suite()); - suite.addTest(org.eclipse.team.tests.ccvs.core.cvsresources.AllTestsCVSResources.suite()); - suite.addTest(org.eclipse.team.tests.ccvs.core.provider.AllTestsProvider.suite()); - return new CVSTestSetup(suite); - } -} - diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CVSClientException.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CVSClientException.java deleted file mode 100644 index b8bd8746e..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CVSClientException.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.eclipse.team.tests.ccvs.core; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import org.eclipse.team.internal.ccvs.core.CVSException; - -public class CVSClientException extends CVSException { - - public CVSClientException(String message) { - super(message); - } - -} - diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CVSTestSetup.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CVSTestSetup.java deleted file mode 100644 index e04294bb9..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CVSTestSetup.java +++ /dev/null @@ -1,189 +0,0 @@ -package org.eclipse.team.tests.ccvs.core; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.PrintStream; - -import junit.extensions.TestSetup; -import junit.framework.Test; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin; -import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation; -import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation; - -public class CVSTestSetup extends TestSetup { - public static final String REPOSITORY_LOCATION; - public static final boolean INITIALIZE_REPO; - public static final boolean DEBUG; - public static final boolean LOCAL_REPO; - public static final String RSH; - public static final int WAIT_FACTOR; - - public static CVSRepositoryLocation repository; - - // Static initializer for constants - static { - loadProperties(); - REPOSITORY_LOCATION = System.getProperty("eclipse.cvs.repository"); - INITIALIZE_REPO = Boolean.valueOf(System.getProperty("eclipse.cvs.initrepo", "false")).booleanValue(); - DEBUG = Boolean.valueOf(System.getProperty("eclipse.cvs.debug", "false")).booleanValue(); - RSH = System.getProperty("eclipse.cvs.rsh", "rsh"); - LOCAL_REPO = Boolean.valueOf(System.getProperty("eclipse.cvs.localRepo", "false")).booleanValue(); - WAIT_FACTOR = Integer.parseInt(System.getProperty("eclipse.cvs.waitFactor", "1")); - } - - public static void loadProperties() { - String propertiesFile = System.getProperty("eclipse.cvs.properties"); - if (propertiesFile == null) return; - File file = new File(propertiesFile); - if (file.isDirectory()) file = new File(file, "repository.properties"); - try { - BufferedReader reader = new BufferedReader(new FileReader(file)); - try { - for (String line; (line = reader.readLine()) != null; ) { - int sep = line.indexOf("="); - String property = line.substring(0, sep).trim(); - String value = line.substring(sep + 1).trim(); - System.setProperty("eclipse.cvs." + property, value); - } - } finally { - reader.close(); - } - } catch (Exception e) { - System.err.println("Could not read repository properties file: " + file.getAbsolutePath()); - } - } - - /** - * Constructor for CVSTestSetup. - */ - public CVSTestSetup(Test test) { - super(test); - } - - public static void executeRemoteCommand(ICVSRepositoryLocation repository, String commandLine) { - if (! LOCAL_REPO) { - commandLine = RSH + " " + repository.getHost() + " -l " + repository.getUsername() + " " + commandLine; - } - int returnCode = executeCommand(commandLine, null, null); - if (returnCode != -1 && returnCode != 0) { - System.err.println("Remote command returned " + returnCode + ": " + commandLine); - } - } - - /** - * Executes a command. - * Returns the command's return code, or -1 on failure. - * - * @param commandLine the local command line to run - * @param environment the new environment variables, or null to inherit from parent process - * @param workingDirectory the new workingDirectory, or null to inherit from parent process - */ - public static int executeCommand(String commandLine, String[] environment, File workingDirectory) { - PrintStream debugStream = CVSTestSetup.DEBUG ? System.out : null; - try { - if (debugStream != null) { - // while debugging, dump CVS command line client results to stdout - // prefix distinguishes between message source stream - debugStream.println(); - printPrefixedLine(debugStream, "CMD> ", commandLine); - if (workingDirectory != null) printPrefixedLine(debugStream, "DIR> ", workingDirectory.toString()); - } - Process cvsProcess = Runtime.getRuntime().exec(commandLine, environment, workingDirectory); - // stream output must be dumped to avoid blocking the process or causing a deadlock - startBackgroundPipeThread(cvsProcess.getErrorStream(), debugStream, "ERR> "); - startBackgroundPipeThread(cvsProcess.getInputStream(), debugStream, "MSG> "); - - int returnCode = cvsProcess.waitFor(); - if (debugStream != null) debugStream.println("RESULT> " + returnCode); - return returnCode; - } catch (IOException e) { - printPrefixedLine(System.err, "Unable to execute command: ", commandLine); - e.printStackTrace(System.err); - } catch (InterruptedException e) { - printPrefixedLine(System.err, "Unable to execute command: ", commandLine); - e.printStackTrace(System.err); - } - return -1; - } - - private static void startBackgroundPipeThread(final InputStream is, final PrintStream os, - final String prefix) { - new Thread() { - public void run() { - BufferedReader reader = null; - try { - try { - reader = new BufferedReader(new InputStreamReader(is)); - for (;;) { - String line = reader.readLine(); - if (line == null) break; - if (os != null) printPrefixedLine(os, prefix, line); - } - } finally { - if (reader != null) reader.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - }.start(); - } - - private static void printPrefixedLine(PrintStream os, String prefix, String line) { - os.print(prefix); - os.println(line.substring(0, Math.min(line.length(), 256))); // trim long lines - } - - /* - * Use rsh to delete any contents of the repository and initialize it again - */ - private static void initializeRepository(CVSRepositoryLocation repository) { - String repoRoot = repository.getRootDirectory(); - executeRemoteCommand(repository, "rm -rf " + repoRoot); - executeRemoteCommand(repository, "cvs -d " + repoRoot + " init"); - } - - public void setUp() throws CVSException { - if (repository == null) - repository = setupRepository(REPOSITORY_LOCATION); - } - - protected CVSRepositoryLocation setupRepository(String location) throws CVSException { - - // Give some info about which repository the tests are running with - System.out.println("Connecting to: " + location); - - // Validate that we can connect, also creates and caches the repository location. This - // is important for the UI tests. - CVSRepositoryLocation repository = (CVSRepositoryLocation)CVSProviderPlugin.getPlugin().getRepository(location); - //CVSRepositoryLocation repository = CVSRepositoryLocation.fromString(location); - try { - repository.validateConnection(new NullProgressMonitor()); - } catch (CVSException e) { - System.out.println("Unable to connect to remote repository: " + repository.getLocation()); - throw e; - } - - // Initialize the repo if requested (requires rsh access) - if( INITIALIZE_REPO ) { - initializeRepository(repository); - } - - return repository; - } - - public void tearDown() throws CVSException { - // Nothing to do here - } - -} - diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CommandLineCVSClient.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CommandLineCVSClient.java deleted file mode 100644 index e144f515b..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/CommandLineCVSClient.java +++ /dev/null @@ -1,81 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * IBM - Initial implementation - ******************************************************************************/ -package org.eclipse.team.tests.ccvs.core; - -import java.io.File; - -import junit.framework.Assert; -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation; - -public class CommandLineCVSClient implements ICVSClient { - public static final ICVSClient INSTANCE = new CommandLineCVSClient(); - private static final String cvsExecutable = - System.getProperty("eclipse.cvs.command"); - - public void executeCommand(ICVSRepositoryLocation repositoryLocation, - IContainer localRoot, String command, String[] globalOptions, - String[] localOptions, String[] arguments) throws CVSException { - execute(repositoryLocation.getLocation(), localRoot.getLocation().toFile(), command, - globalOptions, localOptions, arguments); - try { - localRoot.refreshLocal(IResource.DEPTH_INFINITE, null); - } catch (CoreException e) { - throw new CVSClientException("CoreException during refreshLocal: " + e.getMessage()); - } - } - - public static void execute( - String repositoryLocation, File localRoot, String command, - String[] globalOptions, String[] localOptions, - String[] arguments) throws CVSException { - // test arguments - Assert.assertNotNull(repositoryLocation); - Assert.assertNotNull(localRoot); - Assert.assertNotNull(command); - Assert.assertNotNull(globalOptions); - Assert.assertNotNull(localOptions); - Assert.assertNotNull(arguments); - Assert.assertTrue(localRoot.exists()); - - // build command line - StringBuffer commandLineBuf = new StringBuffer(cvsExecutable); - commandLineBuf.append(" -d \""); - commandLineBuf.append(repositoryLocation); - commandLineBuf.append('"'); - appendStrings(commandLineBuf, globalOptions); - commandLineBuf.append(' '); - commandLineBuf.append(command); - appendStrings(commandLineBuf, localOptions); - appendStrings(commandLineBuf, arguments); - - // execute command - JUnitTestCase.waitMsec(1500); - int returnCode = CVSTestSetup.executeCommand(commandLineBuf.toString(), null, localRoot); - if (returnCode != 0) { - throw new CVSClientException("Command line client returned non-zero code: " + returnCode); - } - } - - private static void appendStrings(StringBuffer commandLine, String[] strings) { - for (int i = 0; i < strings.length; i++) { - String string = strings[i]; - if (string != null && string.length() != 0) { - commandLine.append(" \""); - commandLine.append(string); - commandLine.append('"'); - } - } - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/EclipseCVSClient.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/EclipseCVSClient.java deleted file mode 100644 index 6484ba1bf..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/EclipseCVSClient.java +++ /dev/null @@ -1,119 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * IBM - Initial implementation - ******************************************************************************/ -package org.eclipse.team.tests.ccvs.core; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import junit.framework.Assert; -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.CVSStatus; -import org.eclipse.team.internal.ccvs.core.ICVSFolder; -import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation; -import org.eclipse.team.internal.ccvs.core.client.Command; -import org.eclipse.team.internal.ccvs.core.client.Session; -import org.eclipse.team.internal.ccvs.core.client.Command.GlobalOption; -import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption; -import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; - -public class EclipseCVSClient implements ICVSClient { - public static final ICVSClient INSTANCE = new EclipseCVSClient(); - private static final HashMap commandPool = new HashMap(); - static { - commandPool.put("update", Command.UPDATE); - commandPool.put("co", Command.CHECKOUT); - commandPool.put("ci", Command.COMMIT); - commandPool.put("import", Command.IMPORT); - commandPool.put("add", Command.ADD); - commandPool.put("remove", Command.REMOVE); - commandPool.put("status", Command.STATUS); - commandPool.put("log", Command.LOG); - commandPool.put("tag", Command.TAG); - commandPool.put("rtag", Command.RTAG); - commandPool.put("admin", Command.ADMIN); - commandPool.put("diff", Command.DIFF); - } - - public void executeCommand(ICVSRepositoryLocation repositoryLocation, - IContainer localRoot, String command, String[] globalOptions, - String[] localOptions, String[] arguments) throws CVSException { - execute(repositoryLocation, CVSWorkspaceRoot.getCVSFolderFor(localRoot), command, - globalOptions, localOptions, arguments); - } - - public static void execute( - ICVSRepositoryLocation cvsRepositoryLocation, ICVSFolder cvsLocalRoot, - String command, String[] globalOptions, String[] localOptions, - String[] arguments) throws CVSException { - // test arguments - Assert.assertNotNull(cvsRepositoryLocation); - Assert.assertNotNull(cvsLocalRoot); - Assert.assertNotNull(command); - Assert.assertNotNull(globalOptions); - Assert.assertNotNull(localOptions); - Assert.assertNotNull(arguments); - Assert.assertTrue(cvsLocalRoot.exists()); - - // get command instance - Command cvsCommand = (Command) commandPool.get(command); - - // get global options - List globals = new ArrayList(); - for (int i = 0; i < globalOptions.length; i++) { - globals.add(new CustomGlobalOption(globalOptions[i])); - } - GlobalOption[] cvsGlobalOptions = (GlobalOption[]) globals.toArray(new GlobalOption[globals.size()]); - - // get local options - List locals = new ArrayList(); - for (int i = 0; i < localOptions.length; i++) { - String option = localOptions[i]; - String argument = null; - if ((i < localOptions.length - 1) && (localOptions[i + 1].charAt(0) != '-')) { - argument = localOptions[++i]; - } - locals.add(new CustomLocalOption(option, argument)); - } - LocalOption[] cvsLocalOptions = (LocalOption[]) locals.toArray(new LocalOption[locals.size()]); - - // execute command - IProgressMonitor monitor = new NullProgressMonitor(); - Session session = new Session(cvsRepositoryLocation, cvsLocalRoot); - try { - session.open(monitor); - IStatus status = cvsCommand.execute(session, - cvsGlobalOptions, cvsLocalOptions, arguments, null, monitor); - if (status.getCode() == CVSStatus.SERVER_ERROR) { - throw new CVSClientException("Eclipse client returned non-ok status: " + status); - } - } finally { - session.close(); - monitor.done(); - } - } - - private static class CustomGlobalOption extends GlobalOption { - public CustomGlobalOption(String option) { - super(option); - } - } - - private static class CustomLocalOption extends LocalOption { - public CustomLocalOption(String option, String arg) { - super(option, arg); - } - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/EclipseTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/EclipseTest.java deleted file mode 100644 index 7d5612f98..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/EclipseTest.java +++ /dev/null @@ -1,627 +0,0 @@ -package org.eclipse.team.tests.ccvs.core; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import java.io.BufferedInputStream; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IResourceVisitor; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.tests.harness.EclipseWorkspaceTest; -import org.eclipse.team.core.RepositoryProvider; -import org.eclipse.team.core.TeamException; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.CVSStatus; -import org.eclipse.team.internal.ccvs.core.CVSTag; -import org.eclipse.team.internal.ccvs.core.CVSTeamProvider; -import org.eclipse.team.internal.ccvs.core.ICVSFile; -import org.eclipse.team.internal.ccvs.core.ICVSFolder; -import org.eclipse.team.internal.ccvs.core.ICVSRemoteFile; -import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource; -import org.eclipse.team.internal.ccvs.core.ICVSResource; -import org.eclipse.team.internal.ccvs.core.client.Command; -import org.eclipse.team.internal.ccvs.core.client.Import; -import org.eclipse.team.internal.ccvs.core.client.Session; -import org.eclipse.team.internal.ccvs.core.client.Update; -import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption; -import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation; -import org.eclipse.team.internal.ccvs.core.connection.CVSServerException; -import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; -import org.eclipse.team.internal.ccvs.core.resources.RemoteFile; -import org.eclipse.team.internal.ccvs.core.resources.RemoteFolder; -import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo; -import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo; - -public class EclipseTest extends EclipseWorkspaceTest { - - protected static IProgressMonitor DEFAULT_MONITOR = new NullProgressMonitor(); - protected static final int RANDOM_CONTENT_SIZE = 3876; - - /** - * Constructor for CVSBlackBoxTest. - */ - public EclipseTest() { - super(); - } - public EclipseTest(String name) { - super(name); - } - - /* - * Get the resources for the given resource names - */ - public IResource[] getResources(IContainer container, String[] hierarchy) throws CoreException { - IResource[] resources = new IResource[hierarchy.length]; - for (int i=0;i<resources.length;i++) { - resources[i] = container.findMember(hierarchy[i]); - if (resources[i] == null) { - resources[i] = buildResources(container, new String[] {hierarchy[i]})[0]; - } - } - return resources; - } - - /** - * Add the resources to an existing container and upload them to CVS - */ - public IResource[] addResources(IContainer container, String[] hierarchy, boolean checkin) throws CoreException, TeamException { - IResource[] newResources = buildResources(container, hierarchy, false); - getProvider(container).add(newResources, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - if (checkin) - getProvider(container).checkin(newResources, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - return newResources; - } - - /** - * Perform a CVS edit of the given resources - */ - public IResource[] editResources(IContainer container, String[] hierarchy) throws CoreException, TeamException { - IResource[] resources = getResources(container, hierarchy); - getProvider(container).edit(resources, true /* recurse */, true /* notifyServer */, ICVSFile.NO_NOTIFICATION, DEFAULT_MONITOR); - assertReadOnly(resources, false /* isReadOnly */, true /* recurse */); - return resources; - } - - /** - * Perform a CVS unedit of the given resources - */ - public IResource[] uneditResources(IContainer container, String[] hierarchy) throws CoreException, TeamException { - IResource[] resources = getResources(container, hierarchy); - getProvider(container).unedit(resources, true /* recurse */, true/* notifyServer */, DEFAULT_MONITOR); - assertReadOnly(resources, true /* isReadOnly */, true /* recurse */); - return resources; - } - - public void appendText(IResource resource, String text, boolean prepend) throws CoreException, IOException, CVSException { - IFile file = (IFile)resource; - InputStream in = file.getContents(); - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - try { - if (prepend) { - bos.write(text.getBytes()); - } - int i; - while ((i = in.read()) != -1) { - bos.write(i); - } - if (!prepend) { - bos.write(text.getBytes()); - } - } finally { - in.close(); - } - setContentsAndEnsureModified(file, bos.toString()); - } - - /** - * Delete the resources from an existing container and the changes to CVS - */ - public IResource[] changeResources(IContainer container, String[] hierarchy, boolean checkin) throws CoreException, TeamException { - List changedResources = new ArrayList(hierarchy.length); - for (int i=0;i<hierarchy.length;i++) { - IResource resource = container.findMember(hierarchy[i]); - if (resource.getType() == IResource.FILE) { - changedResources.add(resource); - setContentsAndEnsureModified((IFile)resource); - } - } - IResource[] resources = (IResource[])changedResources.toArray(new IResource[changedResources.size()]); - if (checkin) - getProvider(container).checkin(resources, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - return resources; - } - - /** - * Delete the resources from an existing container and the changes to CVS - */ - public IResource[] deleteResources(IContainer container, String[] hierarchy, boolean checkin) throws CoreException, TeamException { - IResource[] resources = getResources(container, hierarchy); - getProvider(container).delete(resources, DEFAULT_MONITOR); - if (checkin) - getProvider(container).checkin(resources, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - return resources; - } - - /** - * Unmanage the resources - */ - public void unmanageResources(IContainer container, String[] hierarchy) throws CoreException, TeamException { - IResource[] resources = getResources(container, hierarchy); - for (int i=0;i<resources.length;i++) { - CVSWorkspaceRoot.getCVSResourceFor(resources[i]).unmanage(null); - } - } - - /** - * Update the resources from an existing container with the changes from the CVS repository - */ - public IResource[] updateResources(IContainer container, String[] hierarchy, boolean ignoreLocalChanges) throws CoreException, TeamException { - IResource[] resources = getResources(container, hierarchy); - LocalOption[] options = Command.NO_LOCAL_OPTIONS; - if(ignoreLocalChanges) { - options = new LocalOption[] {Update.IGNORE_LOCAL_CHANGES}; - } - getProvider(container).update(resources, options, null, true /*createBackups*/, DEFAULT_MONITOR); - return resources; - } - - public void updateProject(IProject project, CVSTag tag, boolean ignoreLocalChanges) throws TeamException { - LocalOption[] options = Command.NO_LOCAL_OPTIONS; - if(ignoreLocalChanges) { - options = new LocalOption[] {Update.IGNORE_LOCAL_CHANGES}; - } - getProvider(project).update(new IResource[] {project}, options, tag, true /*createBackups*/, DEFAULT_MONITOR); - } - - public void commitProject(IProject project) throws TeamException { - getProvider(project).checkin(new IResource[] {project}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - } - - /** - * Commit the resources from an existing container to the CVS repository - */ - public IResource[] commitResources(IContainer container, String[] hierarchy) throws CoreException, TeamException { - IResource[] resources = getResources(container, hierarchy); - getProvider(container).checkin(resources, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - return resources; - } - - /** - * Commit the resources from an existing container to the CVS repository - */ - public void tagProject(IProject project, CVSTag tag) throws TeamException { - IStatus status = getProvider(project).tag(new IResource[] {project}, IResource.DEPTH_INFINITE, tag, DEFAULT_MONITOR); - if (status.getCode() != CVSStatus.OK) { - throw new CVSException(status); - } - } - - /** - * Return a collection of resources defined by hierarchy. The resources - * are added to the workspace and to the file system. If the manage flag is true, the - * resources are auto-managed, if false, they are left un-managed. - */ - public IResource[] buildResources(IContainer container, String[] hierarchy, boolean includeContainer) throws CoreException { - List resources = new ArrayList(hierarchy.length + 1); - resources.addAll(Arrays.asList(buildResources(container, hierarchy))); - if (includeContainer) - resources.add(container); - IResource[] result = (IResource[]) resources.toArray(new IResource[resources.size()]); - ensureExistsInWorkspace(result, true); - for (int i = 0; i < result.length; i++) { - if (result[i].getType() == IResource.FILE) - // 3786 bytes is the average size of Eclipse Java files! - ((IFile) result[i]).setContents(getRandomContents(RANDOM_CONTENT_SIZE), true, false, null); - } - return result; - } - - public void checkinResources(IContainer container, boolean deep) throws TeamException { - getProvider(container).checkin(new IResource[] {container}, deep?IResource.DEPTH_INFINITE:IResource.DEPTH_ZERO, DEFAULT_MONITOR); - } - /* - * Checkout a copy of the project into a project with the given postfix - */ - protected IProject checkoutCopy(IProject project, String postfix) throws TeamException { - // Check the project out under a different name and validate that the results are the same - IProject copy = getWorkspace().getRoot().getProject(project.getName() + postfix); - CVSWorkspaceRoot.checkout(getRepository(), copy, CVSWorkspaceRoot.getCVSFolderFor(project).getFolderSyncInfo().getRepository(), null, DEFAULT_MONITOR); - return copy; - } - - protected IProject checkoutCopy(IProject project, CVSTag tag) throws TeamException { - // Check the project out under a different name and validate that the results are the same - IProject copy = getWorkspace().getRoot().getProject(project.getName() + tag.getName()); - CVSWorkspaceRoot.checkout(getRepository(), copy, - CVSWorkspaceRoot.getCVSFolderFor(project).getFolderSyncInfo().getRepository(), - tag, DEFAULT_MONITOR); - return copy; - } - - - protected IProject checkoutProject(IProject project, String moduleName, CVSTag tag) throws TeamException { - if (project == null) - project = getWorkspace().getRoot().getProject(new Path(moduleName).lastSegment()); - CVSWorkspaceRoot.checkout(getRepository(), project, moduleName, tag, DEFAULT_MONITOR); - return project; - } - /* - * This method creates a project with the given resources, imports - * it to CVS and checks it out - */ - protected IProject createProject(String prefix, String[] resources) throws CoreException, TeamException { - IProject project = getUniqueTestProject(prefix); - buildResources(project, resources, true); - shareProject(project); - assertValidCheckout(project); - return project; - } - - /* - * Compare two projects by comparing thier providers - */ - protected void assertEquals(IProject project1, IProject project2) throws CoreException, TeamException, IOException { - assertEquals(project1, project2, false, false); - } - - protected void assertEquals(IProject project1, IProject project2, boolean includeTimestamps, boolean includeTags) throws CoreException, TeamException, IOException { - assertEquals(getProvider(project1), getProvider(project2), includeTimestamps, includeTags); - } - - /* - * Compare CVS team providers by comparing the cvs resource corresponding to the provider's project - */ - protected void assertEquals(CVSTeamProvider provider1, CVSTeamProvider provider2, boolean includeTimestamps, boolean includeTags) throws CoreException, TeamException, IOException { - assertEquals(Path.EMPTY, CVSWorkspaceRoot.getCVSFolderFor(provider1.getProject()), - CVSWorkspaceRoot.getCVSFolderFor(provider2.getProject()), - includeTimestamps, includeTags); - } - - /* - * Compare resources by casting them to their prpoer type - */ - protected void assertEquals(IPath parent, ICVSResource resource1, ICVSResource resource2, boolean includeTimestamps, boolean includeTags) throws CoreException, CVSException, IOException { - assertEquals("Resource types do not match for " + parent.append(resource1.getName()), resource1.isFolder(), resource2.isFolder()); - if (!resource1.isFolder()) - assertEquals(parent, (ICVSFile)resource1, (ICVSFile)resource2, includeTimestamps, includeTags); - else - assertEquals(parent, (ICVSFolder)resource1, (ICVSFolder)resource2, includeTimestamps, includeTags); - } - - /* - * Compare folders by comparing their folder sync info and there children - * - * XXX What about unmanaged children? - */ - protected void assertEquals(IPath parent, ICVSFolder container1, ICVSFolder container2, boolean includeTimestamps, boolean includeTags) throws CoreException, CVSException, IOException { - IPath path = parent.append(container1.getName()); - assertEquals(path, container1.getFolderSyncInfo(), container2.getFolderSyncInfo(), includeTags); - assertTrue("The number of resource in " + path.toString() + " differs", - container1.members(ICVSFolder.ALL_EXISTING_MEMBERS).length - == container2.members(ICVSFolder.ALL_EXISTING_MEMBERS).length); - ICVSResource[] resources = container1.members(ICVSFolder.ALL_EXISTING_MEMBERS); - for (int i= 0;i <resources.length;i++) { - assertEquals(path, resources[i], container2.getChild(resources[i].getName()), includeTimestamps, includeTags); - } - - } - - /* - * Compare the files contents and sync information - */ - protected void assertEquals(IPath parent, ICVSFile file1, ICVSFile file2, boolean includeTimestamps, boolean includeTags) throws CoreException, CVSException, IOException { - if (file1.getName().equals(".project")) return; - // Getting the contents first is important as it will fetch the proper sync info if one of the files is a remote handle - assertTrue("Contents of " + parent.append(file1.getName()) + " do not match", compareContent(getContents(file1), getContents(file2))); - assertEquals(parent.append(file1.getName()), file1.getSyncInfo(), file2.getSyncInfo(), includeTimestamps, includeTags); - } - - /* - * Compare sync info by comparing the entry line generated by the sync info - */ - protected void assertEquals(IPath path, ResourceSyncInfo info1, ResourceSyncInfo info2, boolean includeTimestamp, boolean includeTag) throws CoreException, CVSException, IOException { - if (info1 == null || info2 == null) { - assertTrue("Resource Sync info differs for " + path.toString(), info1 == info2); - return; - } - String line1; - String line2; - if(includeTimestamp) { - line1 = info1.getEntryLine(); - line2 = info2.getEntryLine(); - } else { - line1 = info1.getServerEntryLine(null); - line2 = info2.getServerEntryLine(null); - } - if (!includeTag) { - // Strip everything past the last slash - line1 = line1.substring(0, line1.lastIndexOf('/')); - line2 = line2.substring(0, line2.lastIndexOf('/')); - } - assertTrue("Resource Sync info differs for " + path.toString(), line1.equals(line2)); - } - - /* - * Use the equals of folder sync info unless the tag is not included in which case we just - * compare the root and repository - */ - protected void assertEquals(IPath path, FolderSyncInfo info1, FolderSyncInfo info2, boolean includeTag) throws CoreException, CVSException, IOException { - if (includeTag) { - assertTrue("Folder sync info differs for " + path.toString(), info1.equals(info2)); - } else { - assertTrue("Repository Root differs for " + path.toString(), info1.getRoot().equals(info2.getRoot())); - assertTrue("Repository relative path differs for " + path.toString(), info1.getRepository().equals(info2.getRepository())); - } - } - - - /* - * Compare folders by comparing their folder sync info and there children - * - * XXX What about unmanaged children? - */ - protected void assertEquals(IPath parent, RemoteFolder container1, RemoteFolder container2, boolean includeTags) throws CoreException, TeamException, IOException { - IPath path = parent.append(container1.getName()); - assertEquals(path, container1.getFolderSyncInfo(), container2.getFolderSyncInfo(), includeTags); - ICVSRemoteResource[] members1 = container1.getMembers(DEFAULT_MONITOR); - ICVSRemoteResource[] members2 = container2.getMembers(DEFAULT_MONITOR); - assertTrue("Number of members differ for " + path, members1.length == members2.length); - Map memberMap2 = new HashMap(); - for (int i= 0;i <members2.length;i++) { - memberMap2.put(members2[i].getName(), members2[i]); - } - for (int i= 0;i <members1.length;i++) { - ICVSRemoteResource member2 = (ICVSRemoteResource)memberMap2.get(members1[i].getName()); - assertNotNull("Resource does not exist: " + path.append(members1[i].getName()) + member2); - assertEquals(path, members1[i], member2, includeTags); - } - } - protected void assertEquals(IPath parent, ICVSRemoteResource resource1, ICVSRemoteResource resource2, boolean includeTags) throws CoreException, TeamException, IOException { - assertEquals("Resource types do not match for " + parent.append(resource1.getName()), resource1.isContainer(), resource2.isContainer()); - if (resource1.isContainer()) - assertEquals(parent, (RemoteFolder)resource1, (RemoteFolder)resource2, includeTags); - else - assertEquals(parent, (ICVSFile)resource1, (ICVSFile)resource2, false, includeTags); - } - - - /* - * Compare the local project with the remote state by checking out a copy of the project. - */ - protected void assertLocalStateEqualsRemote(IProject project) throws TeamException, CoreException, IOException { - assertEquals(getProvider(project), getProvider(checkoutCopy(project, "-remote")), false, true); - } - - /* - * Compare the local project with the remote state indicated by the given tag by checking out a copy of the project. - */ - protected void assertLocalStateEqualsRemote(String message, IProject project, CVSTag tag) throws TeamException, CoreException, IOException { - assertEquals(getProvider(project), getProvider(checkoutCopy(project, tag)), true, false); - } - - protected void assertHasNoRemote(String prefix, IResource[] resources) throws TeamException { - for (int i=0;i<resources.length;i++) - assertHasNoRemote(prefix, resources[i]); - } - - protected void assertHasNoRemote(String prefix, IResource resource) throws TeamException { - assertTrue(prefix + " resource should not have a remote", !CVSWorkspaceRoot.hasRemote(resource)); - } - - protected void assertHasRemote(String prefix, IResource[] resources) throws TeamException { - for (int i=0;i<resources.length;i++) - assertHasRemote(prefix, resources[i]); - } - - protected void assertHasRemote(String prefix, IResource resource) throws TeamException { - assertTrue(prefix + " resource should have a remote", CVSWorkspaceRoot.hasRemote(resource)); - } - - protected void assertIsModified(String prefix, IResource[] resources) throws TeamException { - for (int i=0;i<resources.length;i++) - assertIsModified(prefix, resources[i]); - } - - protected void assertIsModified(String prefix, IResource resource) throws TeamException { - // Only check for files as CVS doesn't dirty folders - if (resource.getType() == IResource.FILE) - assertTrue(prefix + " resource " + resource.getFullPath() + " should be dirty.", ((ICVSFile)getCVSResource(resource)).isModified()); - } - - protected void assertNotModified(String prefix, IResource[] resources) throws TeamException { - for (int i=0;i<resources.length;i++) - assertNotModified(prefix, resources[i]); - } - - protected void assertNotModified(String prefix, IResource resource) throws TeamException { - assertTrue(prefix + " resource should be dirty", !((ICVSFile)getCVSResource(resource)).isModified()); - } - - protected void assertIsIgnored(IResource resource) throws TeamException { - assertTrue("Resource " + resource.getFullPath() + " should be ignored but isn't.", getCVSResource(resource).isIgnored()); - } - - protected void assertValidCheckout(IProject project) { - // NOTE: Add code to ensure that the project was checkout out properly - CVSTeamProvider provider = (CVSTeamProvider)RepositoryProvider.getProvider(project); - assertNotNull(provider); - } - - protected void assertReadOnly(IResource[] resources, final boolean isReadOnly, final boolean recurse) throws CoreException { - for (int i = 0; i < resources.length; i++) { - IResource resource = resources[i]; - resource.accept(new IResourceVisitor() { - public boolean visit(IResource resource) throws CoreException { - if (resource.getType() == IResource.FILE) { - assertEquals(isReadOnly, resource.isReadOnly()); - } - return recurse; - } - }); - } - } - - protected InputStream getContents(ICVSFile file) throws CVSException, IOException { - if (file instanceof ICVSRemoteFile) - return ((RemoteFile)file).getContents(DEFAULT_MONITOR); - else - return new BufferedInputStream(file.getContents()); - } - - /* - * Get the CVS Resource for the given resource - */ - protected ICVSResource getCVSResource(IResource resource) throws CVSException { - return CVSWorkspaceRoot.getCVSResourceFor(resource); - } - - protected IProject getNamedTestProject(String name) throws CoreException { - IProject target = getWorkspace().getRoot().getProject(name); - if (!target.exists()) { - target.create(null); - target.open(null); - } - assertExistsInFileSystem(target); - return target; - } - protected CVSTeamProvider getProvider(IResource resource) throws TeamException { - return (CVSTeamProvider)RepositoryProvider.getProvider(resource.getProject()); - } - protected static InputStream getRandomContents(int sizeAtLeast) { - StringBuffer randomStuff = new StringBuffer(sizeAtLeast + 100); - while (randomStuff.length() < sizeAtLeast) { - randomStuff.append(getRandomSnippet()); - } - return new ByteArrayInputStream(randomStuff.toString().getBytes()); - } - /** - * Return String with some random text to use - * as contents for a file resource. - */ - public static String getRandomSnippet() { - switch ((int) Math.round(Math.random() * 10)) { - case 0 : - return "este e' o meu conteudo (portuguese)"; - case 1 : - return "Dann brauchen wir aber auch einen deutschen Satz!"; - case 2 : - return "I'll be back"; - case 3 : - return "don't worry, be happy"; - case 4 : - return "there is no imagination for more sentences"; - case 5 : - return "customize yours"; - case 6 : - return "foo"; - case 7 : - return "bar"; - case 8 : - return "foobar"; - case 9 : - return "case 9"; - default : - return "these are my contents"; - } - } - protected IProject getUniqueTestProject(String prefix) throws CoreException { - // manage and share with the default stream create by this class - return getNamedTestProject(prefix + "-" + Long.toString(System.currentTimeMillis())); - } - - protected CVSRepositoryLocation getRepository() { - return CVSTestSetup.repository; - } - protected void importProject(IProject project) throws TeamException { - - // Create the root folder for the import operation - ICVSFolder root = CVSWorkspaceRoot.getCVSFolderFor(project); - - // Perform the import - IStatus status; - Session s = new Session(getRepository(), root); - s.open(DEFAULT_MONITOR); - try { - status = Command.IMPORT.execute(s, - Command.NO_GLOBAL_OPTIONS, - new LocalOption[] {Import.makeArgumentOption(Command.MESSAGE_OPTION, "Initial Import")}, - new String[] { project.getName(), getRepository().getUsername(), "start" }, - null, - DEFAULT_MONITOR); - } finally { - s.close(); - } - - if (status.getCode() == CVSStatus.SERVER_ERROR) { - throw new CVSServerException(status); - } - } - - protected void shareProject(IProject project) throws TeamException, CoreException { - CVSWorkspaceRoot.createModule(getRepository(), project, null, DEFAULT_MONITOR); - List resourcesToAdd = new ArrayList(); - IResource[] members = project.members(); - for (int i = 0; i < members.length; i++) { - if ( ! CVSWorkspaceRoot.getCVSResourceFor(members[i]).isIgnored()) { - resourcesToAdd.add(members[i]); - } - } - getProvider(project).add((IResource[]) resourcesToAdd.toArray(new IResource[resourcesToAdd.size()]), IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - getProvider(project).checkin(new IResource[] {project}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - // Pause to ensure that future operations happen later than timestamp of committed resources - waitMsec(1500); - } - - /** - * Return an input stream with some random text to use - * as contents for a file resource. - */ - public InputStream getRandomContents() { - return getRandomContents(RANDOM_CONTENT_SIZE); - } - - protected void setContentsAndEnsureModified(IFile file) throws CoreException, CVSException { - setContentsAndEnsureModified(file, getRandomContents().toString()); - } - - protected void setContentsAndEnsureModified(IFile file, String contents) throws CoreException, CVSException { - ICVSFile cvsFile = CVSWorkspaceRoot.getCVSFileFor(file); - int count = 0; - if (contents == null) contents =""; - do { - file.setContents(new ByteArrayInputStream(contents.getBytes()), false, false, null); - assertTrue("Timestamp granularity is too small. Increase test wait factor", count <= CVSTestSetup.WAIT_FACTOR); - if (!cvsFile.isModified()) { - waitMsec(1500); - count++; - } - } while (!cvsFile.isModified()); - } - - public void waitMsec(int msec) { - try { - Thread.sleep(msec); - } catch(InterruptedException e) { - fail("wait-problem"); - } - } -} - diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/ICVSClient.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/ICVSClient.java deleted file mode 100644 index 79406c89e..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/ICVSClient.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * IBM - Initial implementation - ******************************************************************************/ -package org.eclipse.team.tests.ccvs.core; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation; - -public interface ICVSClient { - public void executeCommand( - ICVSRepositoryLocation repositoryLocation, IContainer localRoot, String command, - String[] globalOptions, String[] localOptions, String[] arguments) - throws CVSException; -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/JUnitTestCase.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/JUnitTestCase.java deleted file mode 100644 index 1140f1ef8..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/JUnitTestCase.java +++ /dev/null @@ -1,323 +0,0 @@ -package org.eclipse.team.tests.ccvs.core; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.PrintStream; -import java.util.ArrayList; -import java.util.List; - -import junit.awtui.TestRunner; -import junit.framework.TestCase; -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.Path; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation; -import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; - -/** - * Base-class to the low level-testcases for the Session. - * Supplies convinience-methods and default attributes for the testcases. - * Especally data for a default-connection to the server is stored. - */ -public abstract class JUnitTestCase extends TestCase { - protected static final int RANDOM_CONTENT_SIZE = 10000; - protected static final boolean NEWLINE_TEST = false; - protected static final String PLATFORM_NEWLINE = System.getProperty("line.separator"); - protected static final IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); - - public static final String[] EMPTY_ARGS = new String[0]; - - /** - * Init the options and arguments to standard-values - */ - public JUnitTestCase(String name) { - super(name); - } - - /** - * Delete a project/resource form the standard cvs-server - */ - protected void magicDeleteRemote(String remoteName) throws CVSException { - magicDeleteRemote(CVSTestSetup.repository, remoteName); - } - - /** - * Delete a project/resource form the specified cvs-server - */ - protected static void magicDeleteRemote(ICVSRepositoryLocation location, String remoteName) - throws CVSException { - CVSTestSetup.executeRemoteCommand(location, "rm -rf " + - new Path(location.getRootDirectory()).append(remoteName).toString()); - } - - /** - * Sends the project to the standard cvs-server so that it contains the resources - * described in createResources. The files have random content. - * - * @param projectName the name of the project to import - * @param createResources e.g. new String[]{"a.txt","f1/b.txt","f1/c.txt","f2/d.txt"} - */ - protected void magicSetUpRepo(String projectName, String[] createResources) - throws IOException, CoreException, CVSException { - magicSetUpRepo(CVSTestSetup.repository, projectName, createResources); - } - - /** - * Sends the project to the specified cvs-server so that it contains the resources - * described in createResources. The files have random content. - * - * @param location the CVS repository location - * @param projectName the name of the project to import - * @param createResources e.g. new String[]{"a.txt","f1/b.txt","f1/c.txt","f2/d.txt"} - */ - protected static void magicSetUpRepo(ICVSRepositoryLocation location, String projectName, - String[] createResources) throws IOException, CoreException, CVSException { - IProject projectRoot = workspaceRoot.getProject(projectName + "-setup-tmp"); - mkdirs(projectRoot); - createRandomFile(projectRoot, createResources); - magicDeleteRemote(location, projectName); - - String[] lOptions = new String[]{"-m","msg"}; - String[] args = new String[]{projectName,"a","b"}; - - EclipseCVSClient.execute(location, CVSWorkspaceRoot.getCVSFolderFor(projectRoot), - "import", EMPTY_ARGS, lOptions, args); - projectRoot.delete(false /*force*/, null); - } - - /** - * Compare Arrays and find the first different element - */ - protected static void assertEqualsArrays(Object[] obArr1, Object[] obArr2) { - - assertEquals("Called assertEqualsArrays with null on one side", obArr1 == null,obArr2 == null); - if (obArr1 == null) { - return; - } - - for (int i=0; i<Math.min(obArr1.length,obArr2.length); i++) { - assertEquals("At Element " + i + " of the array",obArr1[i],obArr2[i]); - } - - // If the Arrays are different in length, look for the first - // not existing element and compare it to the existing in the - // other array - if (obArr1.length > obArr2.length) { - assertEquals("Arrays of different length",obArr1[obArr2.length],null); - return; - } - - if (obArr1.length < obArr2.length) { - assertEquals("Arrays of different length",obArr2[obArr1.length],null); - return; - } - - } - - /** - * Write text lines to file from an array of strings. - */ - protected static void writeToFile(IFile file, String[] contents) - throws IOException, CoreException { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - PrintStream os = new PrintStream(bos); - try { - for (int i = 0; i < contents.length; i++) { - os.println(contents[i]); - } - ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); - if (file.exists()) { - file.setContents(bis, false /*force*/, true /*keepHistory*/, null); - } else { - mkdirs(file.getParent()); - file.create(bis, false /*force*/, null); - } - } finally { - os.close(); - } - } - - /** - * Read text lines from file into an array of strings. - */ - protected static String[] readFromFile(IFile file) - throws IOException, CoreException { - if (! file.exists()) return null; - BufferedReader reader = new BufferedReader(new InputStreamReader(file.getContents())); - List fileContentStore = new ArrayList(); - try { - String line; - while ((line = reader.readLine()) != null) { - fileContentStore.add(line); - } - } finally { - reader.close(); - } - return (String[]) fileContentStore.toArray(new String[fileContentStore.size()]); - } - - /** - * Append text files to file from an array of strings, create new file if it - * does not exist yet. - */ - protected static void appendToFile(IFile file, String[] contents) - throws IOException, CoreException { - String[] oldContents = readFromFile(file); - String[] newContents; - if (oldContents == null) { - newContents = contents; - } else { - newContents = new String[oldContents.length + contents.length]; - System.arraycopy(oldContents, 0, newContents, 0, oldContents.length); - System.arraycopy(contents, 0, newContents, oldContents.length, contents.length); - } - writeToFile(file, newContents); - } - - /** - * Pre-Append text files to file from an array of strings, create new file if it - * does not exist yet. - */ - protected static void prefixToFile(IFile file, String[] contents) - throws IOException, CoreException { - String[] oldContents = readFromFile(file); - String[] newContents; - if (oldContents == null) { - newContents = contents; - } else { - newContents = new String[oldContents.length + contents.length]; - System.arraycopy(contents, 0, newContents, 0, contents.length); - System.arraycopy(oldContents, 0, newContents, contents.length, oldContents.length); - } - writeToFile(file, newContents); - } - - /** - * genertates Random content meand to be written in a File - */ - protected static String createRandomContent() { - - StringBuffer content = new StringBuffer(); - int contentSize; - - content.append("Random file generated for test" + PLATFORM_NEWLINE); - - contentSize = (int) Math.round(RANDOM_CONTENT_SIZE * 2 * Math.random()); - for (int i=0; i<contentSize; i++) { - - if (Math.random()>0.99) { - content.append(PLATFORM_NEWLINE); - } - - if (Math.random()>0.99) { - content.append("\n"); - } - - if (NEWLINE_TEST) { - if (Math.random()>0.99) { - content.append("\n\r"); - } - if (Math.random()>0.99) { - content.append('\r'); - } - if (Math.random()>0.99) { - content.append("\r\n"); - } - if (Math.random()>0.99) { - content.append("\n"); - } - if (Math.random()>0.99) { - content.append("\n\n"); - } - if (Math.random()>0.99) { - content.append("\r\r"); - } - } - - content.append((char)('\u0021' + Math.round(60 * Math.random()))); - } - - return content.toString(); - } - - /** - * Creates a folder (and its parents if needed). - */ - protected static void mkdirs(IContainer container) throws CoreException { - if (container.getType() == IResource.PROJECT) { - IProject project = (IProject) container; - if (! project.exists()) { - project.create(null); - } - project.open(null); - } else if (container.getType() == IResource.FOLDER) { - IFolder folder = (IFolder) container; - if (! folder.exists()) { - mkdirs(folder.getParent()); - folder.create(false /*force*/, true /*local*/, null); - } - } - } - - /** - * Creates the file with random content, and all the folders on the - * way to there. - */ - private static void createRandomFile(IFile file) - throws IOException, CoreException { - mkdirs(file.getParent()); - writeToFile(file, new String[] { createRandomContent() }); - } - - /** - * Build the given fileStructure, all files are going to have - * sample content, all folders on the way are created. - */ - protected static void createRandomFile(IContainer parent, String[] fileNameArray) - throws IOException, CoreException { - for (int i = 0; i < fileNameArray.length; i++) { - IFile file = parent.getFile(new Path(fileNameArray[i])); - createRandomFile(file); - } - } - - /** - * wait milliseconds to continou the execution - */ - public static void waitMsec(int msec) { - try { - int wait = CVSTestSetup.WAIT_FACTOR * msec; - long start = System.currentTimeMillis(); - Thread.sleep(wait); - long end = System.currentTimeMillis(); - // Allow a 100 ms error in waiting - assertTrue("Error in thread class. Did not wait long enough", (end - start) > (wait - 100)); - } catch(InterruptedException e) { - fail("wait-problem"); - } - } - - /** - * Call this method from the main-method of your test-case. - * It initialises some required parameter and runs the testcase. - */ - protected static void run(Class test) { - // XXX is this property used anywhere? - System.setProperty("eclipse.cvs.standalone", "true"); - TestRunner.run(test); - } -} - diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/AllTestsCompatibility.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/AllTestsCompatibility.java deleted file mode 100644 index 267f9141b..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/AllTestsCompatibility.java +++ /dev/null @@ -1,27 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.compatible; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import junit.framework.Test; -import junit.framework.TestSuite; - -public class AllTestsCompatibility extends TestSuite { - - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(BasicTest.suite()); - suite.addTest(ConflictTest.suite()); - suite.addTest(ModuleTest.suite()); - return new CompatibleTestSetup(suite); - } - - public AllTestsCompatibility(String name) { - super(name); - } - - public AllTestsCompatibility() { - super(); - } -} - diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/BasicTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/BasicTest.java deleted file mode 100644 index f8b4b82e6..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/BasicTest.java +++ /dev/null @@ -1,490 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.compatible; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import java.util.Date; -import java.util.GregorianCalendar; - -import junit.framework.Test; -import junit.framework.TestSuite; -import org.eclipse.team.tests.ccvs.core.JUnitTestCase; - -public class BasicTest extends JUnitTestCase { - SameResultEnv env1; - SameResultEnv env2; - - public BasicTest(String arg) { - super(arg); - env1 = new SameResultEnv(arg + "-checkout1"); - env2 = new SameResultEnv(arg + "-checkout2"); - } - - public BasicTest() { - this("BasicTest"); - } - - public static void main(String[] args) { - run(BasicTest.class); - } - - public static Test suite() { - TestSuite suite = new TestSuite(BasicTest.class); - return new CompatibleTestSetup(suite); - //return new CompatibleTestSetup(new BasicTest("testReadOnly")); - } - public void setUp() throws Exception { - env1.setUp(); - env2.setUp(); - - // Set the project to the content we need ... - env1.magicSetUpRepo("proj2",new String[]{"a.txt","f1/b.txt","f1/c.txt"}); - env2.deleteFile("proj2"); - } - - public void tearDown() throws Exception { - env1.tearDown(); - env2.tearDown(); - } - - public void testAdd() throws Exception { - - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - env1.writeToFile("proj2/d.txt",new String[]{"The file to be added","next"}); - env1.mkdirs("proj2/f2/f3"); - env1.mkdirs("proj2/f4/f5"); - env1.writeToFile("proj2/f4/f5/e.txt", new String[]{"Another file to be added","next"}); - - env1.execute("add",EMPTY_ARGS,new String[]{"d.txt"},"proj2"); - env1.execute("add",EMPTY_ARGS,new String[]{"f2","f2/f3"},"proj2"); - env1.execute("add",EMPTY_ARGS,new String[]{"f4"},"proj2"); - env1.execute("add",EMPTY_ARGS,new String[]{"f4/f5"},"proj2"); - env1.execute("add",EMPTY_ARGS,new String[]{"f4/f5/e.txt"},"proj2"); - env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"}); - - // Check the stuff out somewhere else to acctually check, that - // the file has been accepted - env2.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - } - - public void testAddUpdate() throws Exception { - - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - env2.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - - env1.writeToFile("proj2/d.txt",new String[]{"The file to be added","next"}); - env1.mkdirs("proj2/f2/f3"); - env1.mkdirs("proj2/f4/f5"); - env1.writeToFile("proj2/f4/f5/e.txt", new String[]{"Another file to be added","next"}); - - env1.execute("add",EMPTY_ARGS,new String[]{"d.txt"},"proj2"); - env1.execute("add",EMPTY_ARGS,new String[]{"f2","f2/f3"},"proj2"); - env1.execute("add",EMPTY_ARGS,new String[]{"f4"},"proj2"); - env1.execute("add",EMPTY_ARGS,new String[]{"f4/f5"},"proj2"); - env1.execute("add",EMPTY_ARGS,new String[]{"f4/f5/e.txt"},"proj2"); - env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"}); - - env2.execute("update",EMPTY_ARGS,new String[]{"proj2"}); - - } - - public void testRemove() throws Exception { - - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - env1.deleteFile("proj2/a.txt"); - env1.deleteFile("proj2/f1/c.txt"); - - env1.execute("remove",EMPTY_ARGS,new String[]{"a.txt"},"proj2"); - env1.execute("remove",EMPTY_ARGS,new String[]{"f1/c.txt"},"proj2"); - env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"}); - - // Check the stuff out somewhere else to acctually check, that - // the file has been accepted - env2.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - } - - public void testRemoveRecusive() throws Exception { - - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - env2.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - - env1.deleteFile("proj2/a.txt"); - env1.deleteFile("proj2/f1/c.txt"); - - env1.execute("remove",EMPTY_ARGS,new String[0],"proj2"); - env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"}); - - // Check the stuff out somewhere else to acctually check, that - // the file has been accepted - env2.execute("update",EMPTY_ARGS,new String[]{"proj2"}); - } - - public void testRoundRewrite() throws Exception { - - // Download content in two locations - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},""); - env2.execute("co",EMPTY_ARGS,new String[]{"proj2"},""); - - // change the file "proj1/folder1/c.txt" in env1 check it in - // on the server - env1.appendToFile("proj2/f1/c.txt", new String[] { "AppendIt" }); - env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},""); - - // assure that the file is different in env1 and env2 - // try { - // assertEqualsArrays(env1.readFromFile("proj2/f1/c.txt"), - // env2.readFromFile("proj2/f1/c.txt")); - // throw new IllegalArgumentException("This is a failed Assertion"); - // } catch (AssertionFailedError e) {} - - // update env2 and make sure the changes are there - env2.execute("update",EMPTY_ARGS,new String[]{"proj2"},""); - // assertEqualsArrays(env1.readFromFile("proj2/f1/c.txt"), - // env2.readFromFile("proj2/f1/c.txt")); - } - - public void testUpdateMinusN() throws Exception { - String[] fileContent1; - - fileContent1 = new String[]{"RandomNumber", Math.random() + ""}; - - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - env2.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - - env1.writeToFile("proj1/folder1/c.txt",fileContent1); - - env1.execute("ci",new String[]{"-n"},new String[]{"-m","TestMessage"},new String[]{"proj2"},""); - env2.execute("update",EMPTY_ARGS,new String[]{"proj2"}); - } - - public void testStatus() throws Exception { - - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - env1.execute("status",EMPTY_ARGS,new String[]{"proj2"}); - - env1.deleteFile("proj2/a.txt"); - env1.deleteFile("proj2/f1/c.txt"); - env1.appendToFile("proj2/f1/b.txt",new String[] { "AppendIt" }); - - env1.execute("status",EMPTY_ARGS,new String[]{"proj2"}); - env1.execute("status",EMPTY_ARGS,new String[0],"proj2"); - - env1.createRandomFile("proj2/d.txt"); - - env1.execute("status",EMPTY_ARGS,new String[0],"proj2"); - env1.execute("status",EMPTY_ARGS,new String[]{"f1/b.txt"},"proj2"); - // env1.execute("status",localOptions,new String[]{"d.txt"},"proj2"); - } - - public void testLog() throws Exception { - - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - env1.execute("log",EMPTY_ARGS,new String[]{"proj2"}); - - env1.deleteFile("proj2/a.txt"); - env1.deleteFile("proj2/f1/c.txt"); - env1.appendToFile("proj2/f1/b.txt",new String[] { "AppendIt" }); - - env1.execute("log",EMPTY_ARGS,new String[]{"proj2"}); - env1.execute("log",EMPTY_ARGS,new String[0],"proj2"); - - env1.createRandomFile("proj2/d.txt"); - - env1.execute("log",EMPTY_ARGS,new String[0],"proj2"); - env1.execute("log",EMPTY_ARGS,new String[]{"f1/b.txt"},"proj2"); - - } - - public void testBranchTag() throws Exception { - - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - env1.execute("tag",new String[]{"-b"},new String[]{"tag1","proj2"}); - - env1.deleteFile("proj2/a.txt"); - env1.deleteFile("proj2/f1/c.txt"); - env1.appendToFile("proj2/f1/b.txt",new String[] { "AppendIt" }); - - env1.execute("tag",new String[]{"-b"},new String[]{"tag2","proj2"}); - - env1.createRandomFile("proj2/d.txt"); - - env1.deleteFile("proj2"); - - // Try an commit and an add in the two different streams - env1.execute("co",new String[]{"-r","tag1"},new String[]{"proj2"}); - env1.appendToFile("proj2/f1/b.txt", new String[] { "AppendItTwo" }); - env1.createRandomFile("proj2/d.txt"); - env1.execute("add",new String[0],new String[]{"d.txt"},"proj2"); - env1.execute("ci",new String[]{"-m","branch"},new String[]{"proj2"}); - env1.deleteFile("proj2"); - env1.execute("co",new String[]{"-r","tag1"},new String[]{"proj2"}); - - env2.execute("co",new String[]{"-r","tag2"},new String[]{"proj2"}); - env2.appendToFile("proj2/f1/b.txt", new String[] { "AppendItThree" }); - env2.createRandomFile("proj2/d.txt"); - env2.execute("add",new String[0],new String[]{"d.txt"},"proj2"); - env2.execute("ci",new String[]{"-m","branch"},new String[]{"proj2"}); - env2.deleteFile("proj2"); - env2.execute("co",new String[]{"-r","tag2"},new String[]{"proj2"}); - } - - public void testBranchingWithLocalChanges() throws Exception { - // Try to branch of a workspace with local changes - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - JUnitTestCase.waitMsec(1500); - env1.appendToFile("proj2/f1/b.txt",new String[] { "AppendIt" }); - env1.execute("tag",new String[]{"-b"},new String[]{"branch-with-changes","proj2"}); - env1.execute("update",new String[]{"-r", "branch-with-changes"},new String[]{"proj2"}); - } - - public void testTag() throws Exception { - - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - env1.execute("tag",EMPTY_ARGS,new String[]{"tag1","proj2"}); - - env1.deleteFile("proj2/a.txt"); - env1.deleteFile("proj2/f1/c.txt"); - env1.appendToFile("proj2/f1/b.txt",new String[] { "AppendIt" }); - - env1.execute("tag",EMPTY_ARGS,new String[]{"tag2","proj2"}); - env1.execute("tag",EMPTY_ARGS,new String[]{"tag2"},"proj2"); - - env1.createRandomFile("proj2/d.txt"); - - env1.execute("tag",EMPTY_ARGS,new String[]{"tag3"},"proj2"); - env1.execute("tag",EMPTY_ARGS,new String[]{"tag3","f1/b.txt"},"proj2"); - - env1.deleteFile("proj2"); - env1.execute("co",new String[]{"-r","tag1"},new String[]{"proj2"}); - env1.deleteFile("proj2"); - env1.execute("co",new String[]{"-r","tag2"},new String[]{"proj2"}); - env1.deleteFile("proj2"); - env1.execute("co",new String[]{"-r","tag3"},new String[]{"proj2"}); - - // env1.execute("tag",localOptions,new String[]{"d.txt"},"proj2"); - - env1.execute("update", new String[]{"-r","tag1"}, new String[]{"proj2"}); - env1.execute("update", new String[]{"-r","tag2"}, new String[]{"proj2"}); - env1.execute("update", new String[]{"-r","tag3"}, new String[]{"proj2"}); - env1.execute("update", new String[]{"-A"}, new String[]{"proj2"}); - } - - public void testRTag() throws Exception { - - // Checkout and tag the project - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - env1.execute("tag",EMPTY_ARGS,new String[]{"tag1","proj2"}); - env1.deleteFile("proj2"); - - // Use rtag to tag the above tag as both a version and a branch - env1.execute("rtag",new String[]{"-r", "tag1"},new String[]{"rtag1","proj2"}); - env1.execute("rtag",new String[]{"-b", "-r", "tag1"},new String[]{"btag1","proj2"}); - - // Checkout the version and branch - env1.deleteFile("proj2"); - env1.execute("co",new String[]{"-r","rtag1"},new String[]{"proj2"}); - env1.deleteFile("proj2"); - env1.execute("co",new String[]{"-r","btag1"},new String[]{"proj2"}); - } - - public void testPrune() throws Exception { - - // Download content in two locations - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},""); - env2.execute("co",EMPTY_ARGS,new String[]{"proj2"},""); - - // change the file "proj1/folder1/c.txt" in env1 check it in - // on the server - env1.deleteFile("proj2/f1/b.txt"); - env1.deleteFile("proj2/f1/c.txt"); - env1.execute("remove",EMPTY_ARGS,new String[0],"proj2"); - - env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},""); - env1.execute("update",new String[]{"-P"},new String[]{"proj2"},""); - - // update env2 and make sure the changes are there - env2.execute("update",new String[]{"-P"},new String[]{"proj2"},""); - - } - - public void testPrune2() throws Exception { - - // Download content in two locations - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},""); - env2.execute("co",EMPTY_ARGS,new String[]{"proj2"},""); - - // change the file "proj1/folder1/c.txt" in env1 check it in - // on the server - env1.deleteFile("proj2/f1/b.txt"); - env1.deleteFile("proj2/f1/c.txt"); - env1.execute("remove",EMPTY_ARGS,new String[0],"proj2"); - - env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},""); - env1.execute("update",new String[]{"-P"},new String[]{},"proj2"); - - // update env2 and make sure the changes are there - env2.execute("update",new String[]{"-P"},new String[]{},"proj2"); - - } - - public void testAdmin() throws Exception { - - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},""); - - env1.execute("admin",new String[]{"-kb"},new String[]{"proj2/f1/b.txt"},""); - env1.execute("update",EMPTY_ARGS,new String[]{"proj2"},""); - - env2.execute("co",EMPTY_ARGS,new String[]{"proj2"},""); - } - - public void testDiff() throws Exception { - - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"}); - env1.execute("diff",EMPTY_ARGS,new String[]{"proj2"}); - - env1.setIgnoreExceptions(true); - - env1.appendToFile("proj2/f1/c.txt",new String[] {"AppendIt2" }); - env1.appendToFile("proj2/f1/b.txt",new String[] { "AppendIt" }); - - env1.execute("diff",EMPTY_ARGS,new String[]{"proj2"}); - env1.execute("diff",EMPTY_ARGS,new String[0],"proj2"); - - env1.createRandomFile("proj2/d.txt"); - - env1.execute("diff",EMPTY_ARGS,new String[0],"proj2"); - env1.execute("diff",EMPTY_ARGS,new String[]{"f1/b.txt"},"proj2"); - // env1.execute("diff",localOptions,new String[]{"d.txt"},"proj2"); - - env1.setIgnoreExceptions(false); - } - - public void testReadOnly() throws Exception { - - // Checkout a read-only copy - env1.execute("co",new String[]{"-r"},EMPTY_ARGS,new String[]{"proj2"},""); - // Checkout and modify a writable copy - env2.execute("co",new String[]{},EMPTY_ARGS,new String[]{"proj2"},""); - env2.appendToFile("proj2/f1/c.txt",new String[] {"AppendIt2" }); - // Update the read only copy - env1.execute("update",new String[] {"-r"},EMPTY_ARGS,new String[]{"proj2"},""); - - // Update the read-only copy to writable - env1.execute("update",new String[] {},EMPTY_ARGS,new String[]{"proj2"},""); - } - - public void testQuestionables() throws Exception { - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},""); - env1.writeToFile("proj2/f2/d.txt", new String[]{"content"}); - env1.writeToFile("proj2/f3/f4/d.txt", new String[]{"content"}); - env1.writeToFile("proj2/f5/f6/f7/d.txt", new String[]{"content"}); - env1.execute("add",new String[0],new String[]{"f3"},"proj2"); - env1.execute("add",new String[0],new String[]{"f3/f4"},"proj2"); - env1.execute("update",new String[0],new String[]{"."},"proj2"); - } - - public void testImportWrappers() throws Exception { - // Make the project empty - env1.magicSetUpRepo("proj3",new String[]{"NoImportant.txt"}); - env2.deleteFile("proj3"); - - // Create resouces and import them with the - // special wrapper - env1.createRandomFile(new String[]{"a.txt","a.class","a.xxx"},"proj3"); - env1.execute("import", - new String[]{"-W","*.txt -k 'kv'","-W","*.class -k 'b'","-I","*.xxx","-m","msg"}, - new String[]{"proj3","aTag","bTag"}, - "proj3"); - - // download the server-version - env2.execute("co",EMPTY_ARGS,new String[]{"proj3"},""); - } - - public void testImportIgnores() throws Exception { - // Make the project empty - env1.magicSetUpRepo("proj3",new String[]{"NoImportant.txt"}); - env2.deleteFile("proj3"); - - // Create resouces and import them with the - // special wrapper - env1.createRandomFile(new String[]{"a.txt","a.class","a.xxx"},"proj3"); - env1.execute("import", - new String[]{"-I","*.xxx","-m","msg"}, - new String[]{"proj3","aTag","bTag"}, - "proj3"); - - // download the server-version - env2.execute("co",EMPTY_ARGS,new String[]{"proj3"},""); - } - - private String toGMTString(Date d) { - return d.toGMTString(); - } - - public void testDate() throws Exception { - - // IMPOTANT: - // Do not make tests with relative dates, because the times coming back form the server will - // sometimes differ from the reference-client to the eclipse-client due to the time-delay in calling - - Date beforeChange; - Date firstChange; - Date secondChange; - - env1.execute("co",new String[0],new String[]{"proj2"}); - - // Change the file "a.txt" and record the times you are doing that at - waitMsec(1100); // here we wait for the import to finish - beforeChange = GregorianCalendar.getInstance().getTime(); - - waitMsec(1100); - - env1.appendToFile("proj2/a.txt",new String[] { "AppendIt" }); - env1.execute("ci",new String[]{"-m","msg"},new String[]{"proj2"}); - firstChange = GregorianCalendar.getInstance().getTime(); - - waitMsec(1100); - - env1.appendToFile("proj2/a.txt",new String[] { "AppendIt2" }); - env1.appendToFile("proj2/f1/b.txt",new String[] { "AppendIt2" }); - env1.execute("ci",new String[]{"-m","msg"},new String[]{"proj2"}); - secondChange = GregorianCalendar.getInstance().getTime(); - - waitMsec(1100); - - env1.deleteFile("proj2"); - - // Now check the project at different times out - env1.execute("co",new String[]{"-D",toGMTString(beforeChange)},new String[]{"proj2"}); - env1.deleteFile("proj2"); - - env1.execute("co",new String[]{"-D",toGMTString(firstChange)},new String[]{"proj2"}); - env1.deleteFile("proj2"); - - env1.execute("co",new String[]{"-D",toGMTString(secondChange)},new String[]{"proj2"}); - env1.deleteFile("proj2"); - - // Now do some updates to look if update -D works - env1.execute("co",new String[0],new String[]{"proj2"}); - env1.execute("update",new String[]{"-D",toGMTString(beforeChange)},new String[]{"proj2"}); - env1.execute("update",new String[]{"-D",toGMTString(firstChange)},new String[]{"proj2"}); - env1.execute("update",new String[]{"-D",toGMTString(secondChange)},new String[]{"proj2"}); - - // We look if the parameter -a is working - env1.execute("update",new String[]{"-D",toGMTString(beforeChange),"-A"},new String[]{"proj2"}); - env1.execute("update",new String[]{"-D",toGMTString(secondChange)},new String[]{"proj2"}); - env1.deleteFile("proj2"); - - // We get try to merge changes from different dates - env1.execute("co",new String[0],new String[]{"proj2"}); - env1.appendToFile("proj2/a.txt", new String[] { "This is the world ..." }); - env1.execute("update",new String[]{"-D",toGMTString(beforeChange)},new String[]{"proj2"}); - env1.appendToFile("proj2/a.txt", new String[] {"... which constantly changes" }); - env1.execute("update",new String[]{"-A"},new String[]{"proj2"}); - // Change something to be able to commit - env1.appendToFile("proj2/a.txt", new String[] { "... and the changes are approved" }); - env1.execute("ci",new String[]{"-m","msg"},new String[]{"proj2"}); - - } -} - diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/CompatibleTestSetup.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/CompatibleTestSetup.java deleted file mode 100644 index 788454176..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/CompatibleTestSetup.java +++ /dev/null @@ -1,52 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.compatible; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import junit.framework.Test; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin; -import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; - -/** - * @version 1.0 - * @author ${user} - */ -public class CompatibleTestSetup extends CVSTestSetup { - public static final String ECLIPSE_REPOSITORY_LOCATION; - public static final String REFERENCE_REPOSITORY_LOCATION; - public static CVSRepositoryLocation referenceClientRepository; - public static CVSRepositoryLocation eclipseClientRepository; - - static { - REFERENCE_REPOSITORY_LOCATION = System.getProperty("eclipse.cvs.repository1"); - ECLIPSE_REPOSITORY_LOCATION = System.getProperty("eclipse.cvs.repository2"); - } - - /** - * Constructor for CompatibleTestSetup. - */ - public CompatibleTestSetup(Test test) { - super(test); - } - - /** - * For compatibility testing, we need to set up two repositories - */ - public void setUp() throws CVSException { - CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(false); - CVSProviderPlugin.getPlugin().setFetchAbsentDirectories(false); - - // setup the repositories - if (referenceClientRepository == null) - referenceClientRepository = setupRepository(REFERENCE_REPOSITORY_LOCATION); - if (eclipseClientRepository == null) - eclipseClientRepository = setupRepository(ECLIPSE_REPOSITORY_LOCATION); - } - - public void tearDown() throws CVSException { - CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(true); - CVSProviderPlugin.getPlugin().setFetchAbsentDirectories(true); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ConflictTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ConflictTest.java deleted file mode 100644 index 0d012b129..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ConflictTest.java +++ /dev/null @@ -1,89 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.compatible; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import junit.framework.Test; -import junit.framework.TestSuite; -import org.eclipse.team.tests.ccvs.core.JUnitTestCase; - -public class ConflictTest extends JUnitTestCase { - SameResultEnv env1; - SameResultEnv env2; - - public ConflictTest() { - this(null); - } - - public ConflictTest(String arg) { - super(arg); - env1 = new SameResultEnv(arg + "checkout1"); - env2 = new SameResultEnv(arg + "checkout2"); - } - - public void setUp() throws Exception { - env1.setUp(); - env2.setUp(); - - // Set the project to the content we need ... - env1.magicSetUpRepo("proj2",new String[]{"a.txt","f1/b.txt","f1/c.txt"}); - env2.deleteFile("proj2"); - } - - public void tearDown() throws Exception { - env1.tearDown(); - env2.tearDown(); - } - - public static Test suite() { - TestSuite suite = new TestSuite(ConflictTest.class); - //return new CompatibleTestSetup(new ConflictTest("testSimpleConflict")); - return new CompatibleTestSetup(suite); - } - - public void testSimpleConflict() throws Exception { - // Download content in two locations - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},""); - env2.execute("co",EMPTY_ARGS,new String[]{"proj2"},""); - - // change the file in both directories in a different way - env1.appendToFile("proj2/f1/c.txt", new String[] { "AppendIt This" }); - env2.appendToFile("proj2/f1/c.txt", new String[] { "AppendIt That" }); - - // commit changes of the first - env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},""); - - // load the changes into the changed file - // and submit the merge - env2.execute("update",EMPTY_ARGS,new String[]{"proj2"},""); - - // commit must fail because we have a merged conflict which has not been - // edited. - env2.setIgnoreExceptions(true); - env2.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},""); - env2.setIgnoreExceptions(false); - - // Make a change to the file in order to let the cvs-client know - // that we solved the confilict - env2.appendToFile("proj2/f1/c.txt", new String[] { "That's allright" }); - env2.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},""); - } - - public void testMergedUpdate() throws Exception { - // Download content in two locations - env1.execute("co",EMPTY_ARGS,new String[]{"proj2"},""); - env2.execute("co",EMPTY_ARGS,new String[]{"proj2"},""); - - // change the file in both directories in a different way so that - // can be merged without conflicts - env1.prefixToFile("proj2/f1/c.txt", new String[] { "AppendIt at top" }); - env2.appendToFile("proj2/f1/c.txt", new String[] { "AppendIt at bottom" }); - - // commit changes of the first - env1.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},""); - - // changes should be merged - env2.execute("update",EMPTY_ARGS,new String[]{"proj2"},""); - env2.execute("ci",new String[]{"-m","TestMessage"},new String[]{"proj2"},""); - } -}
\ No newline at end of file diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ModuleTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ModuleTest.java deleted file mode 100644 index fd9080cc8..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/ModuleTest.java +++ /dev/null @@ -1,88 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.compatible; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import junit.framework.Test; -import junit.framework.TestSuite; -import org.eclipse.team.tests.ccvs.core.JUnitTestCase; - -public class ModuleTest extends JUnitTestCase { - SameResultEnv env1; - SameResultEnv env2; - - public ModuleTest(String arg) { - super(arg); - env1 = new SameResultEnv(arg + "checkout1"); - env2 = new SameResultEnv(arg + "checkout2"); - } - - public static void main(String[] args) { - run(ModuleTest.class); - } - - public void setUp() throws Exception { - env1.setUp(); - env2.setUp(); - - // Set the project to the content we need ... - env1.magicDeleteRemote("CVSROOT/modules"); - env1.magicDeleteRemote("CVSROOT/modules,v"); - env1.magicSetUpRepo("proj2",new String[]{"a.txt","f1/b.txt","f1/c.txt","f2/d.txt","f2/f3/e.txt"}); - env2.deleteFile("proj2"); - } - - public void tearDown() throws Exception { - env1.tearDown(); - env2.tearDown(); - } - - public static Test suite() { - TestSuite suite = new TestSuite(ModuleTest.class); - return new CompatibleTestSetup(suite); - } - - private void setUpModuleFile(String[] change) throws Exception { - - // Write the modules-file - env1.execute("co",EMPTY_ARGS,new String[]{"CVSROOT"}); - env1.writeToFile("CVSROOT/modules",change); - - // Send it up to the server - env1.execute("add",new String[]{"-m","m"},new String[]{"modules"},"CVSROOT"); - env1.execute("ci",new String[]{"-m","m"},new String[]{"CVSROOT"}); - env1.deleteFile("CVSROOT"); - } - - public void testSimpleModule() throws Exception { - setUpModuleFile(new String[]{"mod1 proj2"}); - env1.execute("co",EMPTY_ARGS,new String[]{"mod1"}); - env1.appendToFile("mod1/a.txt", new String[] { "Append" }); - env1.execute("ci",new String[]{"-m","m"},new String[]{"mod1"}); - env1.execute("update",EMPTY_ARGS,new String[]{"mod1"}); - } - - public void testCompositeModule() throws Exception { - setUpModuleFile(new String[]{ "mod1-f1 proj2/f1", - "mod1-f2 proj2/f2", - "mod1f &mod1-f1 &mod1-f2"}); - - env1.execute("co",EMPTY_ARGS,new String[]{"mod1f"}); - env1.appendToFile("mod1f/mod1-f1/b.txt", new String[] { "Append" }); - env1.execute("ci",new String[]{"-m","m"},new String[]{"mod1f"}); - env1.execute("update",EMPTY_ARGS,new String[]{"mod1f"}); - } - - public void testCompositeAliasModule() throws Exception { - setUpModuleFile(new String[]{"mod1-f1 proj2/f1", - "mod1t proj2/f1 b.txt", - "mod1-f2 &proj2/f2 &mod1t", - "mod1f -a mod1-f1 mod1-f2"}); - - env1.execute("co",EMPTY_ARGS,new String[]{"mod1f"}); - env1.appendToFile("mod1-f1/b.txt", new String[] { "Append" }); - env1.execute("ci",new String[]{"-m","m"},new String[]{"mod1-f1","mod1-f2"}); - env1.execute("update",EMPTY_ARGS,new String[]{"mod1-f1","mod1-f2"}); - } -} - diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/SameResultEnv.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/SameResultEnv.java deleted file mode 100644 index db3f1ac27..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/compatible/SameResultEnv.java +++ /dev/null @@ -1,484 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.compatible; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import java.io.IOException; -import java.io.InputStream; -import java.util.Date; -import java.util.StringTokenizer; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.ICVSFile; -import org.eclipse.team.internal.ccvs.core.ICVSFolder; -import org.eclipse.team.internal.ccvs.core.ICVSRepositoryLocation; -import org.eclipse.team.internal.ccvs.core.ICVSResource; -import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; -import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo; -import org.eclipse.team.tests.ccvs.core.CommandLineCVSClient; -import org.eclipse.team.tests.ccvs.core.EclipseCVSClient; -import org.eclipse.team.tests.ccvs.core.ICVSClient; -import org.eclipse.team.tests.ccvs.core.JUnitTestCase; - - -/** - * This is a TestCase that does provide the possibility - * to run tests on both the reference reference-client and the - * client provided by us, and to check on equal results - * in files and messages to the consol. - * - * No own tests should be placed here, instead you should - * instanciate this testcase in order to make your test from - * another suite. - * The class is final, because you need to be able to open - * two (or more) different enviorments to test certain things. - */ -public final class SameResultEnv extends JUnitTestCase { - private IProject referenceProject; - private ICVSFolder referenceRoot; - private IProject eclipseProject; - private ICVSFolder eclipseRoot; - - private boolean ignoreExceptions; - - public SameResultEnv(String arg) { - super(arg); - } - - /** - * Always to be called in the setUp of the testCase that wants to - * use the same-result Enviorment. - */ - public void setUp() throws Exception { - super.setUp(); - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - // setup reference client test project - referenceProject = root.getProject(getName() + "-reference"); - referenceProject.delete(true /*deleteContent*/, true /*force*/, null); - mkdirs(referenceProject); - referenceRoot = CVSWorkspaceRoot.getCVSFolderFor(referenceProject); - - // setup eclipse client test project - eclipseProject = root.getProject(getName() + "-eclipse"); - eclipseProject.delete(true /*deleteContent*/, true /*force*/, null); - mkdirs(eclipseProject); - eclipseRoot = CVSWorkspaceRoot.getCVSFolderFor(eclipseProject); - - // By default, exceptions are not ignored. - // Specific test cases can choose to ignore exceptions - ignoreExceptions = false; - } - - /** - * Always to be called in the tearDown of the testCase that wants to - * use the same-result Enviorment. - */ - public void tearDown() throws Exception { - // we deliberately don't clean up test projects to simplify debugging - super.tearDown(); - } - - /** - * Helper method. - * Calls execute(command, EMPTY_ARGS, localOptions, arguments, pathRelativeToRoot) - */ - public void execute(String command, String[] localOptions, String[] arguments, String pathRelativeToRoot) - throws CVSException { - execute(command, EMPTY_ARGS, localOptions, arguments, pathRelativeToRoot); - } - - /** - * Helper method. - * Calls execute(command, EMPTY_ARGS, localOptions, arguments, "") - */ - public void execute(String command, String[] localOptions, String[] arguments) - throws CVSException { - execute(command, EMPTY_ARGS, localOptions, arguments, ""); - } - - /** - * Runs a command twice, once in the reference environments, once - * in the eclipse environment. Compares the resulting resources - * on disk, but not console output. - */ - public void execute(String command, - String[] globalOptions, String[] localOptions, String[] arguments, - String pathRelativeToRoot) throws CVSException { - - // run with reference client - boolean referenceClientException = execute(CommandLineCVSClient.INSTANCE, - CompatibleTestSetup.referenceClientRepository, referenceProject, - command, globalOptions, localOptions, arguments, pathRelativeToRoot); - // run with Eclipse client - boolean eclipseClientException = execute(EclipseCVSClient.INSTANCE, - CompatibleTestSetup.eclipseClientRepository, eclipseProject, - command, globalOptions, localOptions, arguments, pathRelativeToRoot); - - // assert same results - assertEquals(referenceClientException, eclipseClientException); - assertConsistent(); - } - - private boolean execute(ICVSClient client, ICVSRepositoryLocation repositoryLocation, - IContainer localRoot, String command, - String[] globalOptions, String[] localOptions, String[] arguments, - String pathRelativeToRoot) throws CVSException { - try { - IPath path = new Path(pathRelativeToRoot); - if (path.segmentCount() != 0) { - localRoot = localRoot.getFolder(path); - } - client.executeCommand(repositoryLocation, localRoot, command, globalOptions, - localOptions, arguments); - } catch (CVSException e) { - if (ignoreExceptions) return true; - throw e; - } - return false; - } - - /** - * Deletes files on the both of the cvs-servers. - */ - public void magicDeleteRemote(String remoteName) throws CVSException { - super.magicDeleteRemote(CompatibleTestSetup.referenceClientRepository, remoteName); - super.magicDeleteRemote(CompatibleTestSetup.eclipseClientRepository, remoteName); - } - - /** - * Set up both of the repos on the cvs-server(s) with the standard - * file-structure: - * project - * a.txt - * f1 - * b.txt - * c.txt - */ - public void magicSetUpRepo(String projectName) - throws IOException, CoreException, CVSException { - magicSetUpRepo(projectName, new String[]{"a.txt","f1/b.txt","f1/c.txt"}); - } - - /** - * Set up both of the repos on the cvs-server(s) with a filestructre - * resulting for your input in the parameter createResources. - */ - public void magicSetUpRepo(String projectName, String[] createResources) - throws IOException, CoreException, CVSException { - magicDeleteRemote(projectName); - - IProject projectRoot = workspaceRoot.getProject(projectName + "-setup-tmp"); - mkdirs(projectRoot); - createRandomFile(projectRoot, createResources); - - String[] lOptions = new String[]{"-m","msg"}; - String[] args = new String[]{projectName,"a","b"}; - - magicDeleteRemote(CompatibleTestSetup.referenceClientRepository, projectName); - EclipseCVSClient.execute(CompatibleTestSetup.referenceClientRepository, CVSWorkspaceRoot.getCVSFolderFor(projectRoot), - "import", EMPTY_ARGS, lOptions, args); - - magicDeleteRemote(CompatibleTestSetup.eclipseClientRepository, projectName); - EclipseCVSClient.execute(CompatibleTestSetup.eclipseClientRepository, CVSWorkspaceRoot.getCVSFolderFor(projectRoot), - "import", EMPTY_ARGS, lOptions, args); - - projectRoot.delete(false /*force*/, null); - } - - /** - * Create a file with random-content in both, the reference client and - * the eclipse-client. - * - * @param relativeFileName is the relative path as allways in the - class used for access - */ - public void createRandomFile(String relativeFileName) - throws IOException, CoreException { - String[] contents = new String[] { createRandomContent() }; - writeToFile(relativeFileName, contents); - } - - /** - * Call createRandomFile for every element of the array - * - * @see SameResultEnv#createRandomFile(String) - */ - public void createRandomFile(String[] relativeFileNames, - String pathRelativeToRoot) throws CoreException, IOException { - if (pathRelativeToRoot == null) { - pathRelativeToRoot = ""; - } else if (! pathRelativeToRoot.endsWith("/")) { - pathRelativeToRoot += "/"; - } - for (int i = 0; i < relativeFileNames.length; i++) { - createRandomFile(pathRelativeToRoot + relativeFileNames[i]); - } - } - - /** - * Read from the file (check that we have acctually got the same - * content in both versions - */ - public String[] readFromFile(String relativeFileName) - throws IOException, CoreException { - IFile referenceFile = referenceProject.getFile(relativeFileName); - String[] content1 = super.readFromFile(referenceFile); - IFile eclipseFile = eclipseProject.getFile(relativeFileName); - String[] content2 = super.readFromFile(eclipseFile); - assertEqualsArrays(content1,content2); - return content1; - } - - /** - * Delete a file / folder from both directories. - */ - public void deleteFile(String relativeFileName) throws CoreException { - IResource referenceFile, eclipseFile; - if (relativeFileName.length() != 0) { - referenceFile = referenceProject.findMember(relativeFileName); - eclipseFile = eclipseProject.findMember(relativeFileName); - } else { - referenceFile = referenceProject; - eclipseFile = eclipseProject; - } - assertEquals(referenceFile != null, eclipseFile != null); - if (referenceFile == null) return; - assertEquals(referenceFile.exists(), eclipseFile.exists()); - referenceFile.delete(true, null); - eclipseFile.delete(true, null); - } - - /** - * Creates a folder (and its parents if needed) in both environments. - */ - public void mkdirs(String relativeFolderName) throws CoreException { - IFolder referenceFolder = referenceProject.getFolder(relativeFolderName); - IFolder eclipseFolder = eclipseProject.getFolder(relativeFolderName); - assertEquals(referenceFolder.exists(), eclipseFolder.exists()); - mkdirs(referenceFolder); - mkdirs(eclipseFolder); - } - - /** - * Append a String to an file (acctally to both of the files, that are going - * to have the same content) - */ - public void appendToFile(String relativeFileName, String[] contents) - throws IOException, CoreException { - // Wait a second so that the timestamp will change for sure - waitMsec(1500); - - IFile referenceFile = referenceProject.getFile(relativeFileName); - appendToFile(referenceFile, contents); - IFile eclipseFile = eclipseProject.getFile(relativeFileName); - appendToFile(eclipseFile, contents); - } - - /** - * Append a String to an file (acctally to both of the files, that are going - * to have the same content) - */ - public void prefixToFile(String relativeFileName, String[] contents) - throws IOException, CoreException { - // Wait a second so that the timestamp will change for sure - waitMsec(1500); - - IFile referenceFile = referenceProject.getFile(relativeFileName); - prefixToFile(referenceFile, contents); - IFile eclipseFile = eclipseProject.getFile(relativeFileName); - prefixToFile(eclipseFile, contents); - } - - /** - * Write to the file (acctally to both of the files, that are going - * to have the same content) - */ - public void writeToFile(String relativeFileName, String[] contents) - throws IOException, CoreException { - IFile referenceFile = referenceProject.getFile(relativeFileName); - writeToFile(referenceFile, contents); - IFile eclipseFile = eclipseProject.getFile(relativeFileName); - writeToFile(eclipseFile, contents); - } - - /** - * Checks whether the two directories inside the environment - * are equal and therefore the state valid. - */ - public void assertConsistent() throws CVSException { - assertEquals(referenceRoot, eclipseRoot); - } - - /** - * Deep compare of two ManagedResources (most likly folders). - * Passwords are ignored. - * - * @param ignoreTimestamp if true timestamps of - files are ignored for the comparison - */ - public static void assertEquals(ICVSResource mResource1, - ICVSResource mResource2) - throws CVSException { - - assertEquals(mResource1.isFolder(), mResource2.isFolder()); - assertEquals(mResource1.isManaged() , mResource2.isManaged()); - assertEquals(mResource1.exists(), mResource2.exists()); - - if (!mResource1.exists()) { - return; - } - - if (mResource1.isFolder()) { - assertEquals((ICVSFolder)mResource1,(ICVSFolder)mResource2); - } else { - assertEquals((ICVSFile)mResource1,(ICVSFile)mResource2); - } - } - - /** - * Assert that two CVSFile's are equal by comparing the content - * and the metainformation out of the ResourceSync. - */ - private static void assertEquals(ICVSFile mFile1, ICVSFile mFile2) throws CVSException { - - if (mFile1.getName().equals(".project")) return; - - // Check the permissions on disk - assertEquals(mFile1.isReadOnly(), mFile2.isReadOnly()); - - // Compare the content of the files - try { - InputStream in1 = mFile1.getContents(); - InputStream in2 = mFile2.getContents(); - byte[] buffer1 = new byte[(int)mFile1.getSize()]; - byte[] buffer2 = new byte[(int)mFile2.getSize()]; - // This is not the right way to do it, because the Stream - // may read less than the whoole file - in1.read(buffer1); - in2.read(buffer2); - in1.close(); - in2.close(); - assertEquals("Length differs for file " + mFile1.getName(), buffer1.length, buffer2.length); - assertEquals("Contents differs for file " + mFile1.getName(), new String(buffer1),new String(buffer2)); - } catch (IOException e) { - throw new CVSException("Error in TestCase"); - } - - // We can not do the ceck, because the reference client does - // check out dirty files ?!? - // assertEquals(mFile1.isDirty(),mFile2.isDirty()); - - assertEquals(mFile1.getSyncInfo() == null,mFile2.getSyncInfo() == null); - if (mFile1.getSyncInfo() == null) { - return; - } - - ResourceSyncInfo info1 = mFile1.getSyncInfo(); - ResourceSyncInfo info2 = mFile2.getSyncInfo(); - - assertEquals(info1.getKeywordMode(), info2.getKeywordMode()); - assertEquals(info1.getTag(), info2.getTag()); - assertEquals(info1.getName(), info2.getName()); - assertEquals(info1.getRevision(), info2.getRevision()); - - assertEquals(info1.isDeleted(), info2.isDeleted()); - assertEquals(info1.isAdded(), info2.isAdded()); - assertEquals(info1.isMerged(), info2.isMerged()); - assertEquals(info1.isMergedWithConflicts(), info2.isMergedWithConflicts()); - - // Ensure that timestamps are written using same timezone. - // assertTimestampEquals(info1.getTimeStamp(), info2.getTimeStamp()); - - // We are not able to check for the permissions, as the reference-client doesn't save them - } - - private static void assertTimestampEquals(Date timestamp1, Date timestamp2) { - assertEquals(timestamp1!=null, timestamp2!=null); - if(timestamp1!=null) { - long time1 = timestamp1.getTime(); - long time2 = timestamp2.getTime(); - long difference = Math.abs(time1 - time2); - assertTrue("timestamps should be in same timezone:" + timestamp1 + ":" + timestamp2, difference < (10*60*1000)); // 10 minutes - } - } - - /** - * Assert that two CVSFile's are equal. First the - * metainformation out of the FolderSync for this - * folder is compared, then the amount of children is - * checked and finally the recussion is started to - * compare the children of this folder. - */ - private static void assertEquals(ICVSFolder mFolder1, - ICVSFolder mFolder2) - throws CVSException { - - assertEquals(mFolder1.isCVSFolder(),mFolder2.isCVSFolder()); - - if (mFolder1.isCVSFolder()) { - String root1 = removePassword(mFolder1.getFolderSyncInfo().getRoot()); - String root2 = removePassword(mFolder2.getFolderSyncInfo().getRoot()); - root1 = root1.substring(0,root1.lastIndexOf("@")); - root2 = root2.substring(0,root2.lastIndexOf("@")); - assertEquals(root1,root2); - - assertEquals(mFolder1.getFolderSyncInfo().getRepository(),mFolder2.getFolderSyncInfo().getRepository()); - assertEquals(mFolder1.getFolderSyncInfo().getIsStatic(),mFolder2.getFolderSyncInfo().getIsStatic()); - assertEquals(mFolder1.getFolderSyncInfo().getTag(),mFolder2.getFolderSyncInfo().getTag()); - } - - ICVSResource[] resourceList1 = mFolder1.members(ICVSFolder.FILE_MEMBERS | ICVSFolder.FOLDER_MEMBERS); - ICVSResource[] resourceList2 = mFolder2.members(ICVSFolder.FILE_MEMBERS | ICVSFolder.FOLDER_MEMBERS); - assertEquals(resourceList1.length, resourceList2.length); - for (int i=0; i<resourceList1.length; i++) { - boolean resourceFound = false; - for (int j=0; j<resourceList2.length; j++) { - if (resourceList1[i].getName().equals(resourceList2[j].getName())) { - assertEquals(resourceList1[i], resourceList2[j]); - resourceFound = true; - break; - } - } - assertTrue("Resource " + resourceList1[i].getName() + " not found in the list",resourceFound); - } - } - - /** - * Sets whether Exceptions that are thrown in the execution of both of the clients are - * catched or thrown to the upper level. If the exceptions are catched the result of the - * reference-client and this client are compared as if the execution succseded. - */ - public void setIgnoreExceptions(boolean ignoreExceptions) { - this.ignoreExceptions = ignoreExceptions; - } - - /** - * returns ":pserver:nkrambro@fiji:/home/nkrambro/repo" - * when you insert ":pserver:nkrambro:password@fiji:/home/nkrambro/repo" - */ - public static String removePassword(String root) { - StringTokenizer tok = new StringTokenizer(root, ":@", true); - StringBuffer filteredRoot = new StringBuffer(); - int colonCounter = 3; - while (tok.hasMoreTokens()) { - String token = tok.nextToken(); - if ("@".equals(token)) colonCounter = -1; - if (":".equals(token)) { - if (--colonCounter == 0) continue; // skip colon - } - if (colonCounter == 0) continue; // skip password - filteredRoot.append(token); - } - return filteredRoot.toString(); - } -}
\ No newline at end of file diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/AllTestsCVSResources.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/AllTestsCVSResources.java deleted file mode 100644 index e4e41a51c..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/AllTestsCVSResources.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.cvsresources; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import junit.framework.Test; -import junit.framework.TestSuite; -import org.eclipse.team.tests.ccvs.core.EclipseTest; - -public class AllTestsCVSResources extends EclipseTest { - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTest(ResourceSyncInfoTest.suite()); - suite.addTest(EclipseSynchronizerTest.suite()); - suite.addTest(EclipseFolderTest.suite()); - return suite; - } - - public AllTestsCVSResources(String name) { - super(name); - } - - public AllTestsCVSResources() { - super(); - } -} - - diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/BatchedTestSetup.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/BatchedTestSetup.java deleted file mode 100644 index baba39804..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/BatchedTestSetup.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.cvsresources; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import junit.extensions.TestSetup; -import junit.framework.Test; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.resources.EclipseSynchronizer; - -public class BatchedTestSetup extends TestSetup { - public BatchedTestSetup(Test test) { - super(test); - } - - public void setUp() throws CVSException { - EclipseSynchronizer.getInstance().beginOperation(null); - } - - public void tearDown() throws CVSException { - EclipseSynchronizer.getInstance().endOperation(null); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/EclipseFolderTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/EclipseFolderTest.java deleted file mode 100644 index e7d95d96e..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/EclipseFolderTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * IBM - Initial API and implementation - ******************************************************************************/ -package org.eclipse.team.tests.ccvs.core.cvsresources; - -import junit.framework.Test; -import junit.framework.TestSuite; -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IResourceVisitor; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.team.core.TeamException; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.ICVSFolder; -import org.eclipse.team.internal.ccvs.core.ICVSResource; -import org.eclipse.team.internal.ccvs.core.ICVSRunnable; -import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.team.tests.ccvs.core.EclipseTest; - -/** - * What does this class do? - */ -public class EclipseFolderTest extends EclipseTest { - public EclipseFolderTest() { - super(); - } - - public EclipseFolderTest(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTestSuite(EclipseFolderTest.class); - return new CVSTestSetup(suite); - } - - protected void assertChildrenHaveSync(IContainer root, final boolean hasSync) throws CoreException, CVSException { - root.accept(new IResourceVisitor() { - public boolean visit(IResource resource) throws CoreException { - try { - ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource); - if(!cvsResource.isIgnored()) { - if(resource.getType()==IResource.FILE) { - assertTrue((cvsResource.getSyncInfo()!=null) == hasSync); - } else { - assertTrue((((ICVSFolder)cvsResource).getFolderSyncInfo()!=null) == hasSync); - } - } - } catch(CVSException e) { - throw new CoreException(e.getStatus()); - } - return true; - } - }); - } - - public void testUnmanageFolder() throws CoreException, TeamException { - IProject project = createProject("testUnmanageFolder_A", new String[] {"a.txt", "folder1/", "folder1/b.txt", "folder1/folder2/", "folder1/folder2/c.txt"}); - ICVSFolder cvsProject = CVSWorkspaceRoot.getCVSFolderFor(project); - assertChildrenHaveSync(project, true); - - // test that unmanaging the project flushes sync info - cvsProject.unmanage(null); - assertChildrenHaveSync(project, false); - - final IProject projectB = createProject("testUnmanageFolder_B", new String[] {"a.txt", "folder1/", "folder1/b.txt", "folder1/folder2/", "folder1/folder2/c.txt"}); - final ICVSFolder cvsProjectB = CVSWorkspaceRoot.getCVSFolderFor(projectB); - assertChildrenHaveSync(projectB, true); - - // test that unmanaging in a CVS runnable flushes too - cvsProjectB.run(new ICVSRunnable() { - public void run(IProgressMonitor monitor) throws CVSException { - try { - assertChildrenHaveSync(projectB, true); - cvsProjectB.unmanage(null); - assertChildrenHaveSync(projectB, false); - } catch(CoreException e) { - throw CVSException.wrapException(e); - } - } - }, null); - assertChildrenHaveSync(projectB, false); - } -}
\ No newline at end of file diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/EclipseSynchronizerTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/EclipseSynchronizerTest.java deleted file mode 100644 index 8bd3f24dd..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/EclipseSynchronizerTest.java +++ /dev/null @@ -1,459 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.cvsresources; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import java.util.Arrays; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Set; - -import junit.framework.Test; -import junit.framework.TestSuite; -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.Path; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.CVSTag; -import org.eclipse.team.internal.ccvs.core.resources.EclipseSynchronizer; -import org.eclipse.team.internal.ccvs.core.syncinfo.FolderSyncInfo; -import org.eclipse.team.internal.ccvs.core.syncinfo.MutableResourceSyncInfo; -import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.team.tests.ccvs.core.EclipseTest; - -/** - * Tests the EclipseSynchronizer. - * Does not test state change broadcasts. - */ -public class EclipseSynchronizerTest extends EclipseTest { - private IProject project; - private static EclipseSynchronizer sync = EclipseSynchronizer.getInstance(); - - public EclipseSynchronizerTest() { - super(); - } - - public EclipseSynchronizerTest(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(); - - // Run all tests twice to ensure consistency between batched and non-batched behaviour. - // 1. First run -- no batching - suite.addTestSuite(EclipseSynchronizerTest.class); - // 2. Second run -- with batching - suite.addTest(new BatchedTestSetup(new TestSuite(EclipseSynchronizerTest.class))); - return new CVSTestSetup(suite); - } - - public void testFolderSync() throws CoreException, CVSException { - // Workspace root - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); -// FolderSyncInfo info = sync.getFolderSync(root); -// assertNull(info); -// sync.deleteFolderSync(root); -// sync.setFolderSync(root, dummyFolderSync(root)); -// info = sync.getFolderSync(root); -// assertNull(info); - - // Non-existant project - IProject project = root.getProject(getName() + "-" + System.currentTimeMillis()); - assertDoesNotExistInFileSystem(project); - _testFolderSyncInvalid(project); - - // Project - project.create(null); - project.open(null); - _testFolderSyncValid(project); - - // Non-existant folder - IFolder folder = project.getFolder("folder1"); - assertDoesNotExistInFileSystem(folder); - _testFolderSyncInvalid(folder); - - // Non-existant folder with non-existant parent - IFolder childFolder = folder.getFolder("folder2"); - assertDoesNotExistInFileSystem(childFolder); - _testFolderSyncInvalid(childFolder); - - // Folder - folder.create(false /*force*/, true /*local*/, null); - _testFolderSyncValid(folder); - - // Child folder - childFolder.create(false /*force*/, true /*local*/, null); - _testFolderSyncValid(childFolder); - - // Deleted folder -- sync info should no longer exist - sync.setFolderSync(folder, dummyFolderSync(folder)); - folder.delete(false /*force*/, null); - _testFolderSyncInvalid(folder); // verifies sync info was deleted - - // Recreated folder -- sync info should not be preserved across deletions - folder.create(false /*force*/, true /*local*/, null); - sync.setFolderSync(folder, dummyFolderSync(folder)); - folder.delete(false /*force*/, null); - folder.create(false /*force*/, true /*local*/, null); - _testFolderSyncValid(folder); // verifies sync info has not reappeared - - // Deleted project - sync.setFolderSync(project, dummyFolderSync(project)); - project.delete(false /*force*/, null); - _testFolderSyncInvalid(project); - } - - /* - * Test get/set/delete folder sync for things that support it. - * Assumes container does not already have sync info. - */ - private void _testFolderSyncValid(IContainer container) throws CoreException, CVSException { - FolderSyncInfo info = sync.getFolderSync(container); - assertNull(info); - sync.deleteFolderSync(container); - FolderSyncInfo newInfo = dummyFolderSync(container); - sync.setFolderSync(container, newInfo); - info = sync.getFolderSync(container); - assertEquals(newInfo, info); - // verify that deleteFolderSync() does the right thing - buildResources(container, new String[] { "hassync/", "nosync", "hassync.txt", "nosync.txt" }, true); - IResource resource = container.getFile(new Path("hassync.txt")); - sync.setResourceSync(resource, dummyResourceSync(resource)); - resource = container.getFolder(new Path("hassync")); - sync.setResourceSync(resource, dummyResourceSync(resource)); - assertNotNull(sync.getResourceSync(container.getFile(new Path("hassync.txt")))); - assertNull(sync.getResourceSync(container.getFile(new Path("nosync.txt")))); - assertNotNull(sync.getResourceSync(container.getFolder(new Path("hassync")))); - assertNull(sync.getResourceSync(container.getFolder(new Path("nosync")))); - if (container.getType() == IResource.FOLDER) { - sync.setResourceSync(container, dummyResourceSync(container)); - assertNotNull(sync.getResourceSync(container)); - } - // should delete folder sync for self, and resource sync for children - sync.deleteFolderSync(container); - info = sync.getFolderSync(container); - assertNull(info); - assertNull(sync.getResourceSync(container.getFile(new Path("hassync.txt")))); - assertNull(sync.getResourceSync(container.getFile(new Path("nosync.txt")))); - assertNull(sync.getResourceSync(container.getFolder(new Path("hassync")))); - assertNull(sync.getResourceSync(container.getFolder(new Path("nosync")))); - if (container.getType() == IResource.FOLDER) { - assertNotNull(sync.getResourceSync(container)); - } - } - - /* - * Test get/set/delete folder sync for things that should not support it. - * Assumes container does not already have sync info. - */ - private void _testFolderSyncInvalid(IContainer container) throws CVSException { - FolderSyncInfo info = sync.getFolderSync(container); - assertNull(info); - sync.deleteFolderSync(container); - try { - sync.setFolderSync(container, dummyFolderSync(container)); - fail("Expected CVSException"); - } catch (CVSException e) { - } - info = sync.getFolderSync(container); - assertNull(info); - } - - public void testResourceSync() throws CoreException, CVSException { - // Workspace root - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - _testResourceSyncInvalid(root); - - // Project - IProject project = getUniqueTestProject(getName()); - assertExistsInFileSystem(project); - _testResourceSyncInvalid(project); - - // Folder - IFolder folder = project.getFolder("folder1"); - folder.create(false /*force*/, true /*local*/, null); - _testResourceSyncValid(folder); - - // File - IFile file = folder.getFile("file1"); - file.create(getRandomContents(), false /*force*/, null); - _testResourceSyncValid(file); - - // Deleted/recreated file -- if parent exists, sync info should be preserved across deletions - ResourceSyncInfo info = dummyResourceSync(file); - sync.setResourceSync(file, info); - // Note: deleting a resource will delete it's sync info unless the project has a CVS provider - file.delete(false /*force*/, null); - ResourceSyncInfo newInfo = sync.getResourceSync(file); - //assertEquals(newInfo, info); - assertEquals(newInfo, null); /* changed for reason noted above */ - file.create(getRandomContents(), false /*force*/, null); - sync.setResourceSync(file, info); /* added for reason noted above */ - newInfo = sync.getResourceSync(file); - assertEquals(newInfo, info); - sync.deleteResourceSync(file); - file.delete(false /*force*/, null); - _testResourceSyncValid(file); - - // Deleted parent -- sync info of children should also be deleted - sync.setResourceSync(file, info); - folder.delete(false /*force*/, null); - info = sync.getResourceSync(file); - assertNull(info); - - // File in non-existant folder - IFolder dummyFolder = project.getFolder("folder2"); - assertDoesNotExistInFileSystem(dummyFolder); - IFile dummyFile = dummyFolder.getFile("file2"); - assertDoesNotExistInFileSystem(dummyFile); - _testResourceSyncInvalid(dummyFile); - } - - /* - * Test get/set/delete resource sync for things that support it. - * Assumes resource does not already have sync info. - */ - private void _testResourceSyncValid(IResource resource) throws CVSException { - ResourceSyncInfo info = sync.getResourceSync(resource); - assertNull(info); - sync.deleteResourceSync(resource); - ResourceSyncInfo newInfo = dummyResourceSync(resource); - sync.setResourceSync(resource, newInfo); - info = sync.getResourceSync(resource); - assertEquals(newInfo, info); - sync.deleteResourceSync(resource); - info = sync.getResourceSync(resource); - assertNull(info); - } - - /* - * Test get/set/delete resource sync for things that should not support it. - * Assumes resource does not already have sync info. - */ - private void _testResourceSyncInvalid(IResource resource) throws CVSException { - ResourceSyncInfo info = sync.getResourceSync(resource); - assertNull(info); - sync.deleteResourceSync(resource); - try { - sync.setResourceSync(resource, dummyResourceSync(resource)); - fail("Expected CVSException"); - } catch (CVSException e) { - } - info = sync.getResourceSync(resource); - assertNull(info); - } - - public void testIgnores() throws CoreException, CVSException { - // Workspace root - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - _testIgnoresInvalid(root); - - // Non-existant project - IProject project = root.getProject(getName() + "-" + System.currentTimeMillis()); - assertDoesNotExistInFileSystem(project); - _testIgnoresInvalid(project); - - // Project - project.create(null); - project.open(null); - _testIgnoresValid(project); - - // Non-existant folder - IFolder folder = project.getFolder("folder1"); - assertDoesNotExistInFileSystem(folder); - _testIgnoresInvalid(folder); - - // Non-existant folder with non-existant parent - IFolder childFolder = folder.getFolder("folder2"); - assertDoesNotExistInFileSystem(childFolder); - _testIgnoresInvalid(childFolder); - - // Folder - folder.create(false /*force*/, true /*local*/, null); - _testIgnoresValid(folder); - - // Child folder - childFolder.create(false /*force*/, true /*local*/, null); - _testIgnoresValid(childFolder); - - // Deleted folder -- ignores should no longer exist - sync.addIgnored(folder, "*.foo"); - folder.delete(false /*force*/, null); - _testIgnoresInvalid(folder); // verifies sync info was deleted - - // Recreated folder -- sync info should not be preserved across deletions - folder.create(false /*force*/, true /*local*/, null); - sync.addIgnored(folder, "*.foo"); - folder.delete(false /*force*/, null); - folder.create(false /*force*/, true /*local*/, null); - _testIgnoresValid(folder); // verifies sync info has not reappeared - - // Deleted project - sync.addIgnored(project, "*.foo"); - project.delete(false /*force*/, null); - _testIgnoresInvalid(project); - } - - /* - * Test get/set ignores for things that should not support it. - * Assumes resource does not already have ignores. - */ - private void _testIgnoresValid(IContainer container) throws CVSException { - String[] ignored = sync.getIgnored(container); - assertTrue(ignored.length == 0); - sync.addIgnored(container, "*.xyz"); - ignored = sync.getIgnored(container); - assertBijection(ignored, new String[] { "*.xyz" }, null); - sync.addIgnored(container, "*.abc"); - sync.addIgnored(container, "*.def"); - ignored = sync.getIgnored(container); - assertBijection(ignored, new String[] { "*.abc", "*.def", "*.xyz" }, null); - } - - /* - * Test get/set ignores for things that should not support it. - * Assumes resource does not already have ignores. - */ - private void _testIgnoresInvalid(IContainer container) throws CVSException { - String[] ignored = sync.getIgnored(container); - assertTrue(ignored.length == 0); - try { - sync.addIgnored(container, "*.xyz"); - fail("Expected CVSException"); - } catch (CVSException e) { - } - ignored = sync.getIgnored(container); - assertTrue(ignored.length == 0); - } - - public void testMembers() throws CoreException, CVSException { - IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); - IProject project1 = getUniqueTestProject(getName() + "1"); - IProject project2 = root.getProject(getName() + "2" + System.currentTimeMillis()); - - // Workspace root - IResource[] members = sync.members(ResourcesPlugin.getWorkspace().getRoot()); - assertBijection(members, ResourcesPlugin.getWorkspace().getRoot().getProjects(), null); - - // Non-existant project - members = sync.members(project2); - assertEquals("Non-existant project should have no members", 0, members.length); - - // Non-existant folder - IFolder folder = project1.getFolder("folder1"); - assertDoesNotExistInFileSystem(folder); - members = sync.members(folder); - assertEquals("Non-existant folder should have no members", 0, members.length); - - // Non-existant folder with non-existant parent - IFolder childFolder = folder.getFolder("folder2"); - assertDoesNotExistInFileSystem(childFolder); - members = sync.members(childFolder); - assertEquals("Non-existant folder should have no members", 0, members.length); - - // Project - buildResources(project1, new String[] { - "hassync.txt", "deleted_nosync.txt", "deleted.txt", "hassync/", "deleted/", "deleted_nosync/" }, true); - - // initially none of the resources have sync info and they all exist - Object[] ignores = new Object[] { project1.getFolder("CVS") }; - Set expectedMembers = new HashSet(Arrays.asList(project1.members())); - members = sync.members(project1); - assertBijection(expectedMembers.toArray(), members, ignores); - - // add sync info, resources should still appear exactly once - IResource resource = project1.getFile("hassync.txt"); - sync.setResourceSync(resource, dummyResourceSync(resource)); - resource = project1.getFolder("hassync"); - sync.setResourceSync(resource, dummyResourceSync(resource)); - - resource = project1.getFile("deleted.txt"); - sync.setResourceSync(resource, dummyResourceSync(resource)); - resource = project1.getFolder("deleted"); - sync.setResourceSync(resource, dummyResourceSync(resource)); - - members = sync.members(project1); - assertBijection(expectedMembers.toArray(), members, ignores); - - // delete resources, those with sync info should still appear, those without should not - // (Note: This is only true for projects that have a CVS provider) - resource = project1.getFile("deleted.txt"); - resource.delete(false /*force*/, null); - expectedMembers.remove(resource); /* added for reason noted above */ - resource = project1.getFolder("deleted"); - resource.delete(false /*force*/, null); - expectedMembers.remove(resource); /* added for reason noted above */ - - resource = project1.getFile("deleted_nosync.txt"); - resource.delete(false /*force*/, null); - expectedMembers.remove(resource); - resource = project1.getFolder("deleted_nosync"); - resource.delete(false /*force*/, null); - expectedMembers.remove(resource); - - members = sync.members(project1); - assertBijection(expectedMembers.toArray(), members, ignores); - - // delete sync info, only those that exist should appear - resource = project1.getFile("hassync.txt"); - sync.deleteResourceSync(resource); - resource = project1.getFolder("hassync"); - sync.deleteResourceSync(resource); - - resource = project1.getFile("deleted.txt"); - sync.deleteResourceSync(resource); - expectedMembers.remove(resource); - resource = project1.getFolder("deleted"); - sync.deleteResourceSync(resource); - expectedMembers.remove(resource); - - members = sync.members(project1); - assertBijection(expectedMembers.toArray(), members, ignores); - } - - private FolderSyncInfo dummyFolderSync(IContainer container) { - return new FolderSyncInfo("repo", "root", CVSTag.DEFAULT, false); - } - - private ResourceSyncInfo dummyResourceSync(IResource resource) { - if (resource.getType() == IResource.FILE) { - MutableResourceSyncInfo info = new MutableResourceSyncInfo(resource.getName(), "1.1"); - info.setTag(CVSTag.DEFAULT); - return info; - } else { - return new ResourceSyncInfo(resource.getName()); - } - } - - /** - * Assert that there exists a bijection between the elements of the arrays. - */ - private void assertBijection(Object[] a, Object[] b, Object[] ignores) { - List listA = new LinkedList(Arrays.asList(a)); - List listB = new LinkedList(Arrays.asList(b)); - if (ignores != null) { - for (int i = 0; i < ignores.length; ++i ) { - listA.remove(ignores[i]); - listB.remove(ignores[i]); - } - } - assertEquals("Should have same number of elements", listA.size(), listB.size()); - for (Iterator it = listB.iterator(); it.hasNext();) { - Object obj = it.next(); - assertTrue("Should contain the same elements", listA.contains(obj)); - listA.remove(obj); - } - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/ResourceSyncInfoTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/ResourceSyncInfoTest.java deleted file mode 100644 index f08ca7f50..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/cvsresources/ResourceSyncInfoTest.java +++ /dev/null @@ -1,141 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.cvsresources; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import java.util.Date; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.eclipse.core.runtime.CoreException; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.team.tests.ccvs.core.EclipseTest; - -public class ResourceSyncInfoTest extends EclipseTest { - - public ResourceSyncInfoTest() { - super(); - } - - public ResourceSyncInfoTest(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(ResourceSyncInfoTest.class); - return new CVSTestSetup(suite); - } - - public void testEntryLineParsing() { - String entryLine; - - // testing malformed entry lines first - try { - new ResourceSyncInfo("//////", null, null); - fail(); - } catch(CVSException e) { - } - try { - new ResourceSyncInfo("//1.1///", null, null); - fail(); - } catch(CVSException e) { - } - try { - new ResourceSyncInfo("/file.txt////", null, null); - fail(); - } catch(CVSException e) { - } - try { - new ResourceSyncInfo("/file.txt//////////", null, null); - fail(); - } catch(CVSException e) { - } - } - - public void testEntryLineConstructor() throws CVSException { - ResourceSyncInfo info; - info = new ResourceSyncInfo("/file.java/-1.1/Mon Feb 25 21:44:02 2002/-k/", null, null); - assertTrue(info.isDeleted()); - - info = new ResourceSyncInfo("/file.java/0/something/-k/", null, null); - assertTrue(info.isAdded()); - - info = new ResourceSyncInfo("/file.java/1.0/Mon Feb 25 21:44:02 2002/-k/Tv1", null, null); - assertTrue(info.getTag() != null); - - Date timestamp = new Date(123000); - info = new ResourceSyncInfo("/file.java/1.0/Mon Feb 25 21:44:02 2002/-k/Tv1", null, timestamp); - assertTrue(info.getTimeStamp().equals(timestamp)); - - info = new ResourceSyncInfo("/file.java/0/Mon Feb 25 21:44:02 2002/-k/", null, timestamp); - assertTrue(info.getTimeStamp().equals(timestamp)); - - String permissions = "u=rwx,g=rwx,o=rwx"; - info = new ResourceSyncInfo("/file.java/2.0/Mon Feb 25 21:44:02 2002/-k/Tv1", permissions, null); - assertTrue(info.getPermissions().equals(permissions)); - - info = new ResourceSyncInfo("D/file.java////", null, null); - assertTrue(info.isDirectory()); - } - - public void testConstructor() throws CVSException { - ResourceSyncInfo info; - - info = new ResourceSyncInfo("folder"); - assertTrue(info.isDirectory()); - - Date timestamp = new Date(123000); - info = new ResourceSyncInfo("/file.java/-2.34/Mon Feb 25 21:44:02 2002/-k/Tv1", null, null); - assertTrue(info.isDeleted()); - assertTrue(info.getRevision().equals("2.34")); - - info = new ResourceSyncInfo("/file.java/0/Mon Feb 25 21:44:02 2002/-k/Tv1", null, null); - String entry = info.getEntryLine(); - assertTrue(info.isAdded()); - } - - public void testMergeTimestamps() throws CVSException { - ResourceSyncInfo info, info2; - Date timestamp = new Date(123000); - Date timestamp2 = new Date(654000); - - info = new ResourceSyncInfo("/file.java/1.1//-kb/", null, timestamp); - assertTrue(!info.isMerged()); - assertTrue(!info.isNeedsMerge(timestamp)); - - // test merged entry lines the server and ensure that their entry line format is compatible - info = new ResourceSyncInfo("/file.java/1.1/+=/-kb/", null, timestamp); - String entryLine = info.getEntryLine(); - info2 = new ResourceSyncInfo(entryLine, null, null); - assertTrue(info.isMerged() && info2.isMerged()); - assertTrue(info.isNeedsMerge(timestamp) && info2.isNeedsMerge(timestamp)); - assertTrue(!info.isNeedsMerge(timestamp2) && !info2.isNeedsMerge(timestamp2)); - assertTrue(info.getTimeStamp().equals(timestamp) && info2.getTimeStamp().equals(timestamp)); - - info = new ResourceSyncInfo("/file.java/1.1/+modified/-kb/", null, null); - entryLine = info.getEntryLine(); - info2 = new ResourceSyncInfo(entryLine, null, null); - assertTrue(info.isMerged() && info2.isMerged()); - assertTrue(!info.isNeedsMerge(timestamp) && !info2.isNeedsMerge(timestamp)); - assertTrue(!info.isNeedsMerge(timestamp2) && !info2.isNeedsMerge(timestamp2)); - assertTrue(info.getTimeStamp()==null && info2.getTimeStamp()==null); - } - - public void testTimestampCompatibility() throws CVSException, CoreException { - String entryLine1 = "/a.bin/1.1/Mon Feb 9 21:44:02 2002/-kb/"; - String entryLine2 = "/a.bin/1.1/Mon Feb 9 21:44:02 2002/-kb/"; - String entryLine3 = "/a.bin/1.1/Mon Feb 09 21:44:02 2002/-kb/"; - ResourceSyncInfo info1 = new ResourceSyncInfo(entryLine1, null, null); - ResourceSyncInfo info2 = new ResourceSyncInfo(entryLine2, null, null); - ResourceSyncInfo info3 = new ResourceSyncInfo(entryLine3, null, null); - Date date1 = info1.getTimeStamp(); - Date date2 = info2.getTimeStamp(); - Date date3 = info3.getTimeStamp(); - assertTrue(date1.equals(date2)); - assertTrue(date1.equals(date3)); - assertTrue(date2.equals(date3)); - } -}
\ No newline at end of file diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/AllTestsProvider.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/AllTestsProvider.java deleted file mode 100644 index 16914a218..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/AllTestsProvider.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.provider; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import junit.framework.Test; -import junit.framework.TestSuite; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.team.tests.ccvs.core.EclipseTest; - -/** - * @version 1.0 - * @author ${user} - */ -public class AllTestsProvider extends EclipseTest { - - /** - * Constructor for AllTests. - */ - public AllTestsProvider() { - super(); - } - - /** - * Constructor for AllTests. - * @param name - */ - public AllTestsProvider(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(); - //suite.addTestSuite(ModuleTest.class); - suite.addTest(ImportTest.suite()); - suite.addTest(CVSProviderTest.suite()); - suite.addTest(RemoteResourceTest.suite()); - suite.addTest(SyncElementTest.suite()); - suite.addTest(ResourceDeltaTest.suite()); - suite.addTest(WatchEditTest.suite()); - suite.addTest(LinkResourcesTest.suite()); - suite.addTest(IsModifiedTests.suite()); - return new CVSTestSetup(suite); - } -}
\ No newline at end of file diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CVSProviderTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CVSProviderTest.java deleted file mode 100644 index 4ae2f5773..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/CVSProviderTest.java +++ /dev/null @@ -1,405 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.provider; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import java.io.BufferedInputStream; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.util.HashMap; -import java.util.Map; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.core.runtime.Path; -import org.eclipse.team.core.Team; -import org.eclipse.team.core.TeamException; -import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin; -import org.eclipse.team.internal.ccvs.core.CVSTag; -import org.eclipse.team.internal.ccvs.core.CVSTeamProvider; -import org.eclipse.team.internal.ccvs.core.ICVSFile; -import org.eclipse.team.internal.ccvs.core.ICVSFolder; -import org.eclipse.team.internal.ccvs.core.client.Command; -import org.eclipse.team.internal.ccvs.core.client.Command.KSubstOption; -import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; -import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.team.tests.ccvs.core.EclipseTest; - -/* - * This class tests both the CVSProvider and the CVSTeamProvider - */ -public class CVSProviderTest extends EclipseTest { - - /** - * Constructor for CVSProviderTest - */ - public CVSProviderTest() { - super(); - } - - /** - * Constructor for CVSProviderTest - */ - public CVSProviderTest(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(CVSProviderTest.class); - return new CVSTestSetup(suite); - //return new CVSTestSetup(new CVSProviderTest("testReadOnly")); - } - - public void testAdd() throws TeamException, CoreException { - - // Test add with cvsignores - /* - IProject project = createProject("testAdd", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - IFile file = project.getFile(".cvsignore"); - file.create(new ByteArrayInputStream("ignored.txt".getBytes()), false, null); - file = project.getFile("ignored.txt"); - file.create(new ByteArrayInputStream("some text".getBytes()), false, null); - file = project.getFile("notignored.txt"); - file.create(new ByteArrayInputStream("some more text".getBytes()), false, null); - file = project.getFile("folder1/.cvsignore"); - file.create(new ByteArrayInputStream("ignored.txt".getBytes()), false, null); - file = project.getFile("folder1/ignored.txt"); - file.create(new ByteArrayInputStream("some text".getBytes()), false, null); - file = project.getFile("folder1/notignored.txt"); - file.create(new ByteArrayInputStream("some more text".getBytes()), false, null); - - getProvider(project).add(new IResource[] {project}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - - assertTrue( ! CVSWorkspaceRoot.getCVSResourceFor(project.getFile("ignored.txt")).isManaged()); - assertTrue( ! CVSWorkspaceRoot.getCVSResourceFor(project.getFile("folder1/ignored.txt")).isManaged()); - - assertTrue(CVSWorkspaceRoot.getCVSResourceFor(project.getFile("notignored.txt")).isManaged()); - assertTrue(CVSWorkspaceRoot.getCVSResourceFor(project.getFile("folder1/notignored.txt")).isManaged()); - assertTrue(CVSWorkspaceRoot.getCVSResourceFor(project.getFile(".cvsignore")).isManaged()); - assertTrue(CVSWorkspaceRoot.getCVSResourceFor(project.getFile("folder1/.cvsignore")).isManaged()); - */ - } - - public void testDeleteHandling() throws TeamException, CoreException { - - IProject project = createProject("testDeleteHandling", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - - // Delete a file and ensure that it is an outgoing deletion - project.getFile("deleted.txt").delete(false, false, null); - ICVSFile file = CVSWorkspaceRoot.getCVSFileFor(project.getFile("deleted.txt")); - assertTrue("File is not outgoing deletion", file.getSyncInfo().isDeleted()); - - // Delete a folder and ensure that the file is managed but doesn't exist - // (Special behavior is provider by the CVS move/delete hook but this is not part of CVS core) - project.getFolder("folder1").delete(false, false, null); - ICVSFolder folder = CVSWorkspaceRoot.getCVSFolderFor(project.getFolder("folder1")); - assertTrue("Deleted folder not in proper state", ! folder.exists() && folder.isManaged()); - } - - public void testCheckin() throws TeamException, CoreException, IOException { - IProject project = createProject("testCheckin", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - - // Perform some operations on the project - IResource[] newResources = buildResources(project, new String[] { "added.txt", "folder2/", "folder2/added.txt" }, false); - setContentsAndEnsureModified(project.getFile("changed.txt")); - getProvider(project).add(newResources, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - getProvider(project).delete(new IResource[] {project.getFile("deleted.txt")}, DEFAULT_MONITOR); - assertIsModified("testDeepCheckin: ", newResources); - assertIsModified("testDeepCheckin: ", new IResource[] {project.getFile("deleted.txt"), project.getFile("changed.txt")}); - getProvider(project).checkin(new IResource[] {project}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - assertLocalStateEqualsRemote(project); - } - - public void testMoveHandling() throws TeamException, CoreException { - IProject project = createProject("testMoveHandling", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - - // Move a file and ensure that it is an outgoing deletion at the source and unmanaged at the destination - project.getFile("deleted.txt").move(new Path("moved.txt"), false, false, null); - ICVSFile file = CVSWorkspaceRoot.getCVSFileFor(project.getFile("deleted.txt")); - assertTrue("Source is not outgoing deletion", file.getSyncInfo().isDeleted()); - file = CVSWorkspaceRoot.getCVSFileFor(project.getFile("moved.txt")); - assertTrue("Destination not in proper state", ! file.isManaged()); - - // Move a folder and ensure the source is deleted - project.getFolder("folder1").move(new Path("moved"), false, false, null); - ICVSFolder folder = CVSWorkspaceRoot.getCVSFolderFor(project.getFolder("folder1")); - assertTrue("Deleted folder not in proper state", ! folder.exists() && folder.isManaged()); - folder = CVSWorkspaceRoot.getCVSFolderFor(project.getFolder("moved")); - assertTrue("Deleted folder should not be managed", ! folder.isManaged()); - assertTrue("Deleted folder should not be a CVS folder", ! folder.isCVSFolder()); - } - - public void testUpdate() throws TeamException, CoreException, IOException { - // Create a test project, import it into cvs and check it out - IProject project = createProject("testUpdate", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - - // Check the project out under a different name - IProject copy = checkoutCopy(project, "-copy"); - - // Perform some operations on the copy - addResources(copy, new String[] { "added.txt", "folder2/", "folder2/added.txt" }, false); - setContentsAndEnsureModified(copy.getFile("changed.txt")); - getProvider(copy).delete(new IResource[] {copy.getFile("deleted.txt")}, DEFAULT_MONITOR); - - // Commit the copy and update the project - getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - getProvider(project).update(new IResource[] {project}, Command.NO_LOCAL_OPTIONS, null, true /*createBackups*/, DEFAULT_MONITOR); - assertEquals(project, copy); - } - - public void testVersionTag() throws TeamException, CoreException, IOException { - - // Create a test project, import it into cvs and check it out - IProject project = createProject("testTag", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - - // Perform some operations on the copy and commit - IProject copy = checkoutCopy(project, "-copy"); - addResources(copy, new String[] { "added.txt", "folder2/", "folder2/added.txt" }, false); - changeResources(copy, new String[] {"changed.txt"}, false); - deleteResources(copy, new String[] {"deleted.txt"}, false); - checkinResources(copy, true); - - // Tag the original, checkout the tag and compare with original - CVSTag v1Tag = new CVSTag("v1", CVSTag.VERSION); - tagProject(project, v1Tag); - IProject v1 = checkoutCopy(project, v1Tag); - assertEquals(project, v1); - - // Update original to HEAD and compare with copy including tags - updateProject(project, null, false); - assertEquals(project, copy, false, true); - - // Update copy to v1 and compare with the copy (including tag) - updateProject(copy, v1Tag, false); - assertEquals(copy, v1, false, true); - - // Update copy back to HEAD and compare with project (including tag) - updateProject(copy, CVSTag.DEFAULT, false); - assertEquals(project, copy, false, true); - } - - public void testMakeBranch() throws TeamException, CoreException, IOException { - // Create a test project - IProject project = createProject("testSyncOnBranch", new String[] { "file1.txt", "file2.txt", "file3.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"}); - - // Make some local modifications including "cvs adds" and "cvs removes" - addResources(project, new String[] {"folder1/c.txt"}, false); - deleteResources(project, new String[] {"folder1/b.txt"}, false); - changeResources(project, new String[] {"file2.txt"}, false); - - // Make the branch including a pre-version - CVSTag version = new CVSTag("v1", CVSTag.BRANCH); - CVSTag branch = new CVSTag("branch1", CVSTag.BRANCH); - getProvider(project).makeBranch(new IResource[] {project}, version, branch, true, DEFAULT_MONITOR); - - // Checkout a copy from the branch and version and compare - IProject branchCopy = checkoutCopy(project, branch); - IProject versionCopy = checkoutCopy(project, branch); - assertEquals(branchCopy, versionCopy, true, false); - - // Commit the project, update the branch and compare - commitProject(project); - updateProject(branchCopy, null, false); - assertEquals(branchCopy, project, false, true); - } - - public void testPruning() throws TeamException, CoreException, IOException { - // Create a project with empty folders - CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(false); - IProject project = createProject("testPruning", new String[] { "file.txt", "folder1/", "folder2/folder3/" }); - - // Disable pruning, checkout a copy and ensure original and copy are the same - IProject copy = checkoutCopy(project, "-copy"); - assertEquals(project, copy); - - // Enable pruning, update copy and ensure emtpy folders are gone - CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(true); - updateProject(copy, null, false); - assertDoesNotExistInFileSystem(new IResource[] {copy.getFolder("folder1"), copy.getFolder("folder2"), copy.getFolder("folder2/folder3")}); - - // Checkout another copy and ensure that the two copies are the same (with pruning enabled) - IProject copy2 = checkoutCopy(project, "-copy2"); - assertEquals(copy, copy2); - - // Disable pruning, update copy and ensure directories come back - CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(false); - updateProject(copy, null, false); - assertEquals(project, copy); - - // Enable pruning again since it's the default - CVSProviderPlugin.getPlugin().setPruneEmptyDirectories(true); - } - - public void testGet() throws TeamException, CoreException, IOException { - - // Create a project - IProject project = createProject("testGet", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - - // Checkout a copy and modify locally - IProject copy = checkoutCopy(project, "-copy"); - //addResources(copy, new String[] { "added.txt", "folder2/", "folder2/added.txt" }, false); - deleteResources(copy, new String[] {"deleted.txt"}, false); - setContentsAndEnsureModified(copy.getFile("changed.txt")); - - // get the remote conetns - getProvider(copy).get(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - assertEquals(project, copy); - } - - public void testReadOnly() throws TeamException, CoreException, IOException { - IProject project = createProject("testReadOnly", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - // Need to check the project out as read-only - } - - public void testCleanLineDelimiters() throws TeamException, CoreException, IOException { - // Create a project - IProject project = getUniqueTestProject("testCleanLineDelimiters"); - IFile file = project.getFile("testfile"); - IProgressMonitor monitor = new NullProgressMonitor(); - - // empty file - setFileContents(file, ""); - CVSTeamProvider.cleanLineDelimiters(file, false, monitor); - assertEqualsFileContents(file, ""); - CVSTeamProvider.cleanLineDelimiters(file, true, monitor); - assertEqualsFileContents(file, ""); - - // one byte - setFileContents(file, "a"); - CVSTeamProvider.cleanLineDelimiters(file, false, monitor); - assertEqualsFileContents(file, "a"); - CVSTeamProvider.cleanLineDelimiters(file, true, monitor); - assertEqualsFileContents(file, "a"); - - // single orphan carriage return (should be preserved) - setFileContents(file, "\r"); - CVSTeamProvider.cleanLineDelimiters(file, false, monitor); - assertEqualsFileContents(file, "\r"); - CVSTeamProvider.cleanLineDelimiters(file, true, monitor); - assertEqualsFileContents(file, "\r"); - - // single line feed - setFileContents(file, "\n"); - CVSTeamProvider.cleanLineDelimiters(file, false, monitor); - assertEqualsFileContents(file, "\n"); - CVSTeamProvider.cleanLineDelimiters(file, true, monitor); - assertEqualsFileContents(file, "\r\n"); - - // single carriage return line feed - setFileContents(file, "\r\n"); - CVSTeamProvider.cleanLineDelimiters(file, true, monitor); - assertEqualsFileContents(file, "\r\n"); - CVSTeamProvider.cleanLineDelimiters(file, false, monitor); - assertEqualsFileContents(file, "\n"); - - // mixed text with orphaned CR's - setFileContents(file, "The \r\n quick brown \n fox \r\r\r\n jumped \n\n over \r\n the \n lazy dog.\r\n"); - CVSTeamProvider.cleanLineDelimiters(file, false, monitor); - assertEqualsFileContents(file, "The \n quick brown \n fox \r\r\n jumped \n\n over \n the \n lazy dog.\n"); - setFileContents(file, "The \r\n quick brown \n fox \r\r\r\n jumped \n\n over \r\n the \n lazy dog.\r\n"); - CVSTeamProvider.cleanLineDelimiters(file, true, monitor); - assertEqualsFileContents(file, "The \r\n quick brown \r\n fox \r\r\r\n jumped \r\n\r\n over \r\n the \r\n lazy dog.\r\n"); - } - - public void testKeywordSubstitution() throws TeamException, CoreException, IOException { - testKeywordSubstitution(Command.KSUBST_BINARY); // -kb - testKeywordSubstitution(Command.KSUBST_TEXT); // -ko - testKeywordSubstitution(Command.KSUBST_TEXT_EXPAND); // -kkv - } - - private void testKeywordSubstitution(KSubstOption ksubst) throws TeamException, CoreException, IOException { - // setup some known file types - Team.setAllTypes( new String[] {"xbin", "xtxt"}, new int[] {Team.BINARY, Team.TEXT}); - - // create a test project - IProject project = createProject("testKeywordSubstitution", new String[] { "dummy" }); - addResources(project, new String[] { "binary.xbin", "text.xtxt", "folder1/", "folder1/a.xtxt" }, true); - addResources(project, new String[] { "added.xbin", "added.xtxt" }, false); - assertHasKSubstOption(project, "binary.xbin", Command.KSUBST_BINARY); - assertHasKSubstOption(project, "added.xbin", Command.KSUBST_BINARY); - assertHasKSubstOption(project, "text.xtxt", CVSProviderPlugin.DEFAULT_TEXT_KSUBST_OPTION); - assertHasKSubstOption(project, "folder1/a.xtxt", CVSProviderPlugin.DEFAULT_TEXT_KSUBST_OPTION); - assertHasKSubstOption(project, "added.xtxt", CVSProviderPlugin.DEFAULT_TEXT_KSUBST_OPTION); - - // change keyword substitution - Map map = new HashMap(); - map.put(project.getFile("binary.xbin"), ksubst); - map.put(project.getFile("added.xbin"), ksubst); - map.put(project.getFile("text.xtxt"), ksubst); - map.put(project.getFile("folder1/a.xtxt"), ksubst); - map.put(project.getFile("added.xtxt"), ksubst); - - waitMsec(1500); - IStatus status = getProvider(project).setKeywordSubstitution(map, null); - assertTrue("Status should be ok, was: " + status.toString(), status.isOK()); - assertHasKSubstOption(project, "binary.xbin", ksubst); - assertHasKSubstOption(project, "text.xtxt", ksubst); - assertHasKSubstOption(project, "folder1/a.xtxt", ksubst); - assertHasKSubstOption(project, "added.xtxt", ksubst); - assertHasKSubstOption(project, "added.xbin", ksubst); - - // verify that substitution mode changed remotely and "added.xtxt", "added.xbin" don't exist - IProject copy = checkoutCopy(project, "-copy"); - assertHasKSubstOption(copy, "binary.xbin", ksubst); - assertHasKSubstOption(copy, "text.xtxt", ksubst); - assertHasKSubstOption(copy, "folder1/a.xtxt", ksubst); - assertDoesNotExistInWorkspace(copy.getFile("added.xtxt")); - assertDoesNotExistInWorkspace(copy.getFile("added.xbin")); - - // commit added files then checkout the copy again - commitResources(project, new String[] { "added.xbin", "added.xtxt" }); - IProject copy2 = checkoutCopy(project, "-copy2"); - assertHasKSubstOption(copy2, "added.xtxt", ksubst); - assertHasKSubstOption(copy2, "added.xbin", ksubst); - - // verify that local contents are up to date - assertEquals(project, copy2); - } - - public static void setFileContents(IFile file, String string) throws CoreException { - InputStream is = new ByteArrayInputStream(string.getBytes()); - if (file.exists()) { - file.setContents(is, false /*force*/, true /*keepHistory*/, null); - } else { - file.create(is, false /*force*/, null); - } - } - public static String getFileContents(IFile file) throws CoreException, IOException { - StringBuffer buf = new StringBuffer(); - Reader reader = new InputStreamReader(new BufferedInputStream(file.getContents())); - try { - int c; - while ((c = reader.read()) != -1) buf.append((char) c); - } finally { - reader.close(); - } - return buf.toString(); - } - - public static void assertEqualsFileContents(IFile file, String string) throws CoreException, IOException { - String other = getFileContents(file); - assertEquals(string, other); - } - - public static void assertHasKSubstOption(IContainer container, String filename, KSubstOption ksubst) - throws TeamException { - IFile file = container.getFile(new Path(filename)); - ICVSFile cvsFile = CVSWorkspaceRoot.getCVSFileFor(file); - ResourceSyncInfo info = cvsFile.getSyncInfo(); - assertEquals(ksubst, info.getKeywordMode()); - } -} - diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ImportTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ImportTest.java deleted file mode 100644 index 9f2326418..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ImportTest.java +++ /dev/null @@ -1,155 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.provider; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IProjectDescription; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.team.core.TeamException; -import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.team.tests.ccvs.core.EclipseTest; - -/** - * @version 1.0 - * @author ${user} - */ -public class ImportTest extends EclipseTest { - - /** - * Constructor for ImportTest. - */ - public ImportTest() { - super(); - } - - /** - * Constructor for ImportTest. - * @param name - */ - public ImportTest(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(ImportTest.class); - return new CVSTestSetup(suite); - //return new CVSTestSetup(new ImportTest("testReadOnly")); - } - - // Assert that the two containers have equal contents - protected void assertEquals(IContainer container1, IContainer container2) throws CoreException { - assertEquals(container1.getName(), container2.getName()); - List members1 = new ArrayList(); - members1.addAll(Arrays.asList(container1.members())); - members1.remove(container1.findMember("CVS")); - - List members2 = new ArrayList(); - members2.addAll(Arrays.asList(container2.members())); - members2.remove(container2.findMember("CVS")); - - assertTrue(members1.size() == members2.size()); - for (int i=0;i<members1.size();i++) { - IResource member1 = (IResource)members1.get(i); - IResource member2 = container2.findMember(member1.getName()); - assertNotNull(member2); - assertEquals(member1, member2); - } - } - - // Assert that the two files have equal contents - protected void assertEquals(IFile file1, IFile file2) throws CoreException { - assertEquals(file1.getName(), file2.getName()); - assertTrue(compareContent(file1.getContents(), file2.getContents())); - } - - // Assert that the two projects have equal contents ignoreing the project name - // and the .vcm_meta file - protected void assertEquals(IProject container1, IProject container2) throws CoreException { - List members1 = new ArrayList(); - members1.addAll(Arrays.asList(container1.members())); - members1.remove(container1.findMember(".project")); - members1.remove(container1.findMember("CVS")); - - List members2 = new ArrayList(); - members2.addAll(Arrays.asList(container2.members())); - members2.remove(container2.findMember(".project")); - members2.remove(container2.findMember("CVS")); - - assertTrue("Number of children differs for " + container1.getFullPath(), members1.size() == members2.size()); - for (int i=0;i<members1.size();i++) { - IResource member1 = (IResource)members1.get(i); - IResource member2 = container2.findMember(member1.getName()); - assertNotNull(member2); - assertEquals(member1, member2); - } - } - protected void assertEquals(IResource resource1, IResource resource2) throws CoreException { - assertEquals(resource1.getType(), resource2.getType()); - if (resource1.getType() == IResource.FILE) - assertEquals((IFile)resource1, (IFile)resource2); - else - assertEquals((IContainer)resource1, (IContainer)resource2); - } - - public void testImportAndCheckout() throws TeamException, CoreException { - // Create a test project and import it into cvs - IProject project = getUniqueTestProject("testImport"); - IResource[] result = buildResources(project, new String[] { "file1.txt", "folder1/", "folder1/a.txt" }, true); - importProject(project); - - // Check it out under a different name and validate that the results are the same - IProject copy = getWorkspace().getRoot().getProject(project.getName() + "Copy"); - CVSWorkspaceRoot.checkout(getRepository(), copy, project.getName(), null, DEFAULT_MONITOR); - assertValidCheckout(copy); - assertEquals(project, copy); - } - - public void testCheckout() throws TeamException, CoreException, IOException { - // Create a project and checkout a copy - IProject project = createProject("testCheckout", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - IProject copy = checkoutCopy(project, "-copy"); - - // 0. checkout the project again - project = checkoutProject(project, null, null); - assertEquals(project, copy, true, true); - - // 1. Delete the project but not it's contents and checkout the project again - project.delete(false, false, DEFAULT_MONITOR); - project = checkoutProject(project, null, null); - assertEquals(project, copy, true, true); - - // 2. Delete the project and its contents and use the module name instead of the project - project.delete(true, false, DEFAULT_MONITOR); - project = checkoutProject(null, project.getName(), null); - assertEquals(project, copy, true, true); - - // 3. Create a project in a custom location and check out over it - project.delete(true, false, DEFAULT_MONITOR); - IProjectDescription desc = ResourcesPlugin.getWorkspace().newProjectDescription(project.getName()); - //desc.setLocation(new Path("C:\\temp\\project")); - project.create(desc, DEFAULT_MONITOR); - project = checkoutProject(project, null, null); - assertEquals(project, copy, true, true); - - // 4. Checkout something that doesn't contain a .project - project.delete(true, false, DEFAULT_MONITOR); - project = checkoutProject(null, project.getName() + "/folder1", null); - //assertEquals(project, copy.getFolder("folder1")); - - - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/IsModifiedTests.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/IsModifiedTests.java deleted file mode 100644 index 703e305b4..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/IsModifiedTests.java +++ /dev/null @@ -1,525 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * IBM - Initial implementation - ******************************************************************************/ -package org.eclipse.team.tests.ccvs.core.provider; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.team.core.TeamException; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin; -import org.eclipse.team.internal.ccvs.core.ICVSFile; -import org.eclipse.team.internal.ccvs.core.ICVSFolder; -import org.eclipse.team.internal.ccvs.core.ICVSResource; -import org.eclipse.team.internal.ccvs.core.ICVSResourceVisitor; -import org.eclipse.team.internal.ccvs.core.IResourceStateChangeListener; -import org.eclipse.team.internal.ccvs.core.client.Command; -import org.eclipse.team.internal.ccvs.core.client.Update; -import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.team.tests.ccvs.core.EclipseTest; - -/** - * Test isModified on file, folders and projects. - */ -public class IsModifiedTests extends EclipseTest { - - Set previouslyModified = new HashSet(); - Map changedResources = new HashMap(); - IResourceStateChangeListener listener = new IResourceStateChangeListener() { - public void resourceSyncInfoChanged(IResource[] changedResources) { - try { - for (int i = 0; i < changedResources.length; i++) { - IResource resource = changedResources[i]; - ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource); - recordModificationState(cvsResource); - recordParents(cvsResource); - if (cvsResource.isFolder()) { - recordChildren((ICVSFolder)cvsResource); - } - } - } catch (CVSException e) { - fail(e.getMessage()); - } - } - private void recordChildren(ICVSFolder folder) { - try { - folder.accept(new ICVSResourceVisitor() { - public void visitFile(ICVSFile file) throws CVSException { - recordModificationState(file); - } - public void visitFolder(ICVSFolder folder) throws CVSException { - recordModificationState(folder); - folder.acceptChildren(this); - } - }); - } catch (CVSException e) { - fail(e.getMessage()); - } - } - private void recordParents(ICVSResource cvsResource) throws CVSException { - if (cvsResource.getIResource().getType() == IResource.ROOT) return; - recordModificationState(cvsResource); - recordParents(cvsResource.getParent()); - } - private void recordModificationState(ICVSResource cvsResource) throws CVSException { - IsModifiedTests.this.changedResources.put(cvsResource.getIResource(), cvsResource.isModified() ? Boolean.TRUE : Boolean.FALSE); - } - public void resourceModified(IResource[] changedResources) { - try { - for (int i = 0; i < changedResources.length; i++) { - IResource resource = changedResources[i]; - ICVSResource cvsResource = CVSWorkspaceRoot.getCVSResourceFor(resource); - IsModifiedTests.this.changedResources.put(resource, cvsResource.isModified() ? Boolean.TRUE : Boolean.FALSE); - recordParents(cvsResource); - if (cvsResource.isFolder()) { - recordChildren((ICVSFolder)cvsResource); - } - } - } catch (CVSException e) { - fail(e.getMessage()); - } - } - public void projectConfigured(IProject project) { - } - public void projectDeconfigured(IProject project) { - } - }; - - /** - * Constructor for CVSProviderTest - */ - public IsModifiedTests() { - super(); - } - - /** - * Constructor for CVSProviderTest - */ - public IsModifiedTests(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(IsModifiedTests.class); - return new CVSTestSetup(suite); - //return new CVSTestSetup(new IsModifiedTests("testUpdateIgnoreLocal")); - } - - /** - * @see junit.framework.TestCase#setUp() - */ - protected void setUp() throws Exception { - super.setUp(); - previouslyModified.clear(); - changedResources.clear(); - CVSProviderPlugin.addResourceStateChangeListener(listener); - } - - /** - * @see junit.framework.TestCase#tearDown() - */ - protected void tearDown() throws Exception { - previouslyModified.clear(); - changedResources.clear(); - CVSProviderPlugin.removeResourceStateChangeListener(listener); - super.tearDown(); - } - - /* - * Assert that the modification state of the provided resources matches the - * provided state and that the other are the opposite state. - */ - private void assertModificationState(IContainer container, String[] resources, final boolean listedResourcesShouldBeModified) throws CVSException { - final ICVSFolder rootFolder = CVSWorkspaceRoot.getCVSFolderFor(container); - final List resourceList = new ArrayList(); - final Set modifiedResources = new HashSet(); - if (resources != null) { - for (int i = 0; i < resources.length; i++) { - String string = resources[i]; - resourceList.add(new Path(string)); - } - } - rootFolder.accept(new ICVSResourceVisitor() { - public void visitFile(ICVSFile file) throws CVSException { - assertModificationState(file); - } - public void visitFolder(ICVSFolder folder) throws CVSException { - // find the deepest mistake - folder.acceptChildren(this); - assertModificationState(folder); - } - public void assertModificationState(ICVSResource resource) throws CVSException { - IPath relativePath = new Path(resource.getRelativePath(rootFolder)); - boolean resourceModified = resource.isModified(); - boolean resourceListed = resourceList.contains(relativePath); - assertTrue(resource.getIResource().getFullPath().toString() - + (resourceModified ? " should not be modified but is" : " should be modified but isn't"), - (listedResourcesShouldBeModified && (resourceModified == resourceListed)) || - (!listedResourcesShouldBeModified && (!resourceModified == resourceListed))); - - IResource iResource = resource.getIResource(); - if (resource.isModified()) { - modifiedResources.add(iResource); - if (!wasPreviouslyModified(iResource)) { - // the state has changed, make sure we got a notification - Boolean b = (Boolean)changedResources.get(iResource); - assertTrue("No notification received for state change of " + iResource.getFullPath().toString(), - b == Boolean.TRUE); - } - } else { - if (wasPreviouslyModified(iResource)) { - // the state has changed, make sure we got a notification - Boolean b = (Boolean)changedResources.get(iResource); - assertTrue("No notification received for state change of " + iResource.getFullPath().toString(), - b == Boolean.FALSE); - } - } - } - public boolean wasPreviouslyModified(IResource iResource) { - return previouslyModified.contains(iResource); - } - }); - changedResources.clear(); - previouslyModified.clear(); - previouslyModified.addAll(modifiedResources); - } - - /** - * Assert that a project (and all it's children) is clean after it is - * created and shared. - * - * @see org.eclipse.team.tests.ccvs.core.EclipseTest#createProject(java.lang.String, java.lang.String) - */ - protected IProject createProject(String prefix, String[] resources) throws CoreException, TeamException { - IProject project = super.createProject(prefix, resources); - assertModificationState(project, null, true); - return project; - } - - - public void testFileModifications() throws CoreException, TeamException { - IProject project = createProject("testFileModifications", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - // change two files, commit one and revert the other - setContentsAndEnsureModified(project.getFile("changed.txt")); - assertModificationState(project, new String[] {".", "changed.txt"}, true); - setContentsAndEnsureModified(project.getFile(new Path("folder1/a.txt"))); - assertModificationState(project, new String[] {".", "changed.txt", "folder1/", "folder1/a.txt"}, true); - commitResources(project, new String[] {"folder1/a.txt"}); - assertModificationState(project, new String[] {".", "changed.txt"}, true); - getProvider(project).get(new IResource[] {project.getFile("changed.txt")}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - assertModificationState(project, null, true); - } - - public void testFileDeletions() throws CoreException, TeamException { - IProject project = createProject("testFileDeletions", new String[] { "changed.txt", "folder1/", "folder1/deleted.txt", "folder1/a.txt" }); - // delete and commit a file - project.getFile("folder1/deleted.txt").delete(false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/deleted.txt"}, true); - commitResources(project, new String[] {"folder1/deleted.txt"}); - assertModificationState(project, null, true); - // modify, delete and revert a file - setContentsAndEnsureModified(project.getFile("changed.txt")); - assertModificationState(project, new String[] {".", "changed.txt"}, true); - project.getFile("changed.txt").delete(false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "changed.txt"}, true); - getProvider(project).get(new IResource[] {project.getFile("changed.txt")}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - assertModificationState(project, null, true); - // modify, delete and commit a file - setContentsAndEnsureModified(project.getFile("changed.txt")); - assertModificationState(project, new String[] {".", "changed.txt"}, true); - project.getFile("changed.txt").delete(false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "changed.txt"}, true); - commitResources(project, new String[] {"changed.txt"}); - assertModificationState(project, null, true); - // delete, recreate and commit - project.getFile("folder1/a.txt").delete(false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/a.txt"}, true); - IResource[] addedResources = buildResources(project, new String[] {"folder1/a.txt"}, false); - assertModificationState(project, new String[] {".", "folder1/", "folder1/a.txt"}, true); - commitResources(project, new String[] {"folder1/a.txt"}); - assertModificationState(project, null, true); - - } - - public void testFileAdditions() throws CoreException, TeamException { - IProject project = createProject("testFileAdditions", new String[] { "changed.txt", "folder1/", "folder1/deleted.txt", "folder1/a.txt" }); - // create, add and commit a file - IResource[] addedResources = buildResources(project, new String[] {"folder1/added.txt"}, false); - assertModificationState(project, new String[] {".", "folder1/", "folder1/added.txt"}, true); - getProvider(project).add(addedResources, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/added.txt"}, true); - commitResources(project, new String[] {"folder1/added.txt"}); - assertModificationState(project, null, true); - // create, add and delete a file - addResources(project, new String[] {"added.txt"}, false); - assertModificationState(project, new String[] {".", "added.txt"}, true); - project.getFile("added.txt").delete(false, false, DEFAULT_MONITOR); - assertModificationState(project, null, true); - // create and delete a file - addedResources = buildResources(project, new String[] {"folder1/another.txt"}, false); - assertModificationState(project, new String[] {".", "folder1/", "folder1/another.txt"}, true); - project.getFile("folder1/another.txt").delete(false, false, DEFAULT_MONITOR); - assertModificationState(project, null, true); - // create and ignore a file - addedResources = buildResources(project, new String[] {"ignored.txt"}, false); - assertModificationState(project, new String[] {".", "ignored.txt"}, true); - project.getFile(".cvsignore").create(new ByteArrayInputStream("ignored.txt".getBytes()), false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", ".cvsignore"}, true); - getProvider(project).add(new IResource[] {project.getFile(".cvsignore")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", ".cvsignore"}, true); - commitResources(project, new String[] {".cvsignore"}); - assertModificationState(project, null, true); - // delete the .cvsignore to see the modification come back - project.getFile(".cvsignore").delete(false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "ignored.txt", ".cvsignore"}, true); - commitResources(project, new String[] {".cvsignore"}); - assertModificationState(project, new String[] {".", "ignored.txt"}, true); - // re-add the ignore and then delete the ignored - project.getFile(".cvsignore").create(new ByteArrayInputStream("ignored.txt".getBytes()), false, DEFAULT_MONITOR); - getProvider(project).add(new IResource[] {project.getFile(".cvsignore")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", ".cvsignore"}, true); - commitResources(project, new String[] {".cvsignore"}); - assertModificationState(project, null, true); - project.getFile("ignored.txt").delete(false, DEFAULT_MONITOR); - assertModificationState(project, null, true); - // add the ignored file to version control - buildResources(project, new String[] {"ignored.txt"}, false); - assertModificationState(project, null, true); - getProvider(project).add(new IResource[] {project.getFile("ignored.txt")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "ignored.txt"}, true); - commitProject(project); - assertModificationState(project, null, true); - } - - public void testFileMoveAndCopy() throws CoreException, TeamException { - IProject project = createProject("testFileMoveAndCopy", new String[] { "changed.txt", "folder1/", "folder2/", "folder1/a.txt" }); - // move a file - project.getFile("folder1/a.txt").move(project.getFile("folder2/a.txt").getFullPath(), false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/a.txt", "folder2/", "folder2/a.txt"}, true); - // commit the source - commitResources(project, new String[] {"folder1/a.txt"}); - assertModificationState(project, new String[] {".", "folder2/", "folder2/a.txt"}, true); - // copy the destination back to the source - project.getFolder("folder1").create(false, true, DEFAULT_MONITOR); - project.getFile("folder2/a.txt").copy(project.getFile("folder1/a.txt").getFullPath(), false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/a.txt", "folder2/", "folder2/a.txt"}, true); - // add the source, delete the destination and commit - getProvider(project).add(new IResource[] {project.getFile("folder1/a.txt")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - project.getFile("folder2/a.txt").delete(false, DEFAULT_MONITOR); - commitProject(project); - assertModificationState(project, null, true); - // Do the above without committing the source - project.getFile("folder1/a.txt").move(project.getFile("folder2/a.txt").getFullPath(), false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/a.txt", "folder2/", "folder2/a.txt"}, true); - // copy the destination back to the source - project.getFile("folder2/a.txt").copy(project.getFile("folder1/a.txt").getFullPath(), false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder2/", "folder2/a.txt"}, true); - getProvider(project).add(new IResource[] {project.getFile("folder2/a.txt")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - commitProject(project); - assertModificationState(project, null, true); - } - - public void testFolderAdditions() throws CoreException, TeamException { - IProject project = createProject("testFileAdditions", new String[] { "changed.txt", "folder1/", "folder1/deleted.txt", "folder1/a.txt" }); - // create a folder - project.getFolder("folder1/folder2").create(false, true, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/folder2/"}, true); - getProvider(project).add(new IResource[] {project.getFolder("folder1/folder2/")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - assertModificationState(project, null, true); - - // create a folder - project.getFolder("folder1/folder2/folder3").create(false, true, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/folder2/", "folder1/folder2/folder3"}, true); - // add some children - buildResources(project, new String[] { - "folder1/folder2/folder3/add1.txt", - "folder1/folder2/folder3/add2.txt", - "folder1/folder2/folder3/folder4/", - "folder1/folder2/folder3/folder5/"}, false); - assertModificationState(project, new String[] {".", "folder1/", "folder1/folder2/", "folder1/folder2/folder3", - "folder1/folder2/folder3/add1.txt", - "folder1/folder2/folder3/add2.txt", - "folder1/folder2/folder3/folder4/", - "folder1/folder2/folder3/folder5/"}, true); - // delete some children - project.getFile("folder1/folder2/folder3/add2.txt").delete(false, DEFAULT_MONITOR); - project.getFolder("folder1/folder2/folder3/folder5/").delete(false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/folder2/", "folder1/folder2/folder3", - "folder1/folder2/folder3/add1.txt", - "folder1/folder2/folder3/folder4/"}, true); - // add to version control - getProvider(project).add(new IResource[] { - project.getFile("folder1/folder2/folder3/add1.txt"), - project.getFolder("folder1/folder2/folder3/folder4/")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/folder2/", "folder1/folder2/folder3", - "folder1/folder2/folder3/add1.txt"}, true); - // commit - commitResources(project, new String[] {"folder1/folder2/folder3/add1.txt"}); - assertModificationState(project, null, true); - - // create a folder - project.getFolder("folder1/ignored").create(false, true, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/ignored/"}, true); - // add some files - buildResources(project, new String[] {"folder1/ignored/file.txt"}, false); - assertModificationState(project, new String[] {".", "folder1/", "folder1/ignored/", "folder1/ignored/file.txt"}, true); - // ignore the folder - project.getFile("folder1/.cvsignore").create(new ByteArrayInputStream("ignored".getBytes()), false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/.cvsignore"}, true); - getProvider(project).add(new IResource[] {project.getFile("folder1/.cvsignore")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/.cvsignore"}, true); - commitResources(project, new String[] {"folder1/.cvsignore"}); - assertModificationState(project, null, true); - // delete the .cvsignore to see the modification come back - project.getFile("folder1/.cvsignore").delete(false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/.cvsignore", "folder1/ignored/", "folder1/ignored/file.txt"}, true); - commitResources(project, new String[] {"folder1/.cvsignore"}); - assertModificationState(project, new String[] {".", "folder1/", "folder1/ignored/", "folder1/ignored/file.txt"}, true); - // re-add the .cvsignore and then delete the ignored - project.getFile("folder1/.cvsignore").create(new ByteArrayInputStream("ignored".getBytes()), false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/.cvsignore"}, true); - getProvider(project).add(new IResource[] {project.getFile("folder1/.cvsignore")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - commitResources(project, new String[] {"folder1/.cvsignore"}); - assertModificationState(project, null, true); - project.getFolder("folder/ignored").delete(false, DEFAULT_MONITOR); - assertModificationState(project, null, true); - // add the ignored file to version control - buildResources(project, new String[] {"folder1/ignored/file.txt"}, false); - assertModificationState(project, null, true); - getProvider(project).add(new IResource[] {project.getFile("folder1/ignored/file.txt")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/ignored/", "folder1/ignored/file.txt"}, true); - commitProject(project); - assertModificationState(project, null, true); - } - - public void testFolderDeletions() throws CoreException, TeamException { - IProject project = createProject("testFileAdditions", new String[] { "changed.txt", "folder1/", "folder1/deleted.txt", "folder1/a.txt" }); - // create a folder - project.getFolder("folder1/folder2").create(false, true, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/folder2/"}, true); - // delete the folder - project.getFolder("folder1/folder2").delete(false, DEFAULT_MONITOR); - assertModificationState(project, null, true); - - // create a folder - project.getFolder("folder1/folder2").create(false, true, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/folder2/"}, true); - // add some children - buildResources(project, new String[] {"folder1/folder2/file.txt"}, false); - assertModificationState(project, new String[] {".", "folder1/", "folder1/folder2/", "folder1/folder2/file.txt"}, true); - // delete the folder - project.getFolder("folder1/folder2").delete(false, DEFAULT_MONITOR); - assertModificationState(project, null, true); - - // delete a shared folder with files - project.getFolder("folder1").delete(false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/deleted.txt", "folder1/a.txt"}, true); - // recreate folders and files - project.getFolder("folder1").create(false, true, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/deleted.txt", "folder1/a.txt"}, true); - getProvider(project).get(new IResource[] {project.getFile("folder1/deleted.txt"), project.getFile("folder1/a.txt")}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - assertModificationState(project, null, true); - - // delete a shared folder with files - project.getFolder("folder1").delete(false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/deleted.txt", "folder1/a.txt"}, true); - // commit file deletions - commitProject(project); - assertModificationState(project, null, true); - } - - public void testFolderMoveAndCopy() throws CoreException, TeamException { - IProject project = createProject("testFolderMoveAndCopy", new String[] { "changed.txt", "folder1/", "folder2/", "folder1/a.txt" , "folder1/folder3/file.txt"}); - // move a file - project.getFolder("folder1/folder3").move(project.getFolder("folder2/folder3").getFullPath(), false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/folder3", "folder1/folder3/file.txt", "folder2/", "folder2/folder3/", "folder2/folder3/file.txt"}, true); - // commit the source - commitResources(project, new String[] {"folder1/folder3"}); - assertModificationState(project, new String[] {".", "folder2/", "folder2/folder3/", "folder2/folder3/file.txt"}, true); - // copy the destination back to the source - project.getFolder("folder2/folder3/").copy(project.getFolder("folder1/folder3").getFullPath(), false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/folder3", "folder1/folder3/file.txt", "folder2/", "folder2/folder3/", "folder2/folder3/file.txt"}, true); - // add the source, delete the destination and commit - getProvider(project).add(new IResource[] {project.getFile("folder1/folder3/file.txt")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - project.getFolder("folder2/folder3").delete(false, DEFAULT_MONITOR); - commitProject(project); - assertModificationState(project, null, true); - // Do the above without committing the source - project.getFolder("folder1/folder3").move(project.getFolder("folder2/folder3").getFullPath(), false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder1/", "folder1/folder3", "folder1/folder3/file.txt", "folder2/", "folder2/folder3/", "folder2/folder3/file.txt"}, true); - // copy the destination back to the source - project.getFolder("folder2/folder3/").copy(project.getFolder("folder1/folder3").getFullPath(), false, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "folder2/", "folder2/folder3/", "folder2/folder3/file.txt"}, true); - getProvider(project).add(new IResource[] {project.getFolder("folder2/folder3/")}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - commitProject(project); - assertModificationState(project, null, true); - } - - public void testUpdate() throws TeamException, CoreException, IOException { - // Create a test project, import it into cvs and check it out - IProject project = createProject("testUpdate", new String[] { "changed.txt", "merged.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - - // Check the project out under a different name - IProject copy = checkoutCopy(project, "-copy"); - assertModificationState(copy, null, true); - - // Perform some operations on the copy and commit - addResources(copy, new String[] { "added.txt", "folder2/", "folder2/added.txt" }, false); - setContentsAndEnsureModified(copy.getFile("changed.txt")); - setContentsAndEnsureModified(copy.getFile("merged.txt")); - getProvider(copy).delete(new IResource[] {copy.getFile("deleted.txt")}, DEFAULT_MONITOR); - assertModificationState(copy, new String[] {".", "added.txt", "folder2/", "folder2/added.txt", "changed.txt", "merged.txt", "deleted.txt"}, true); - getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - assertModificationState(copy, null, true); - - // update the project and check status - setContentsAndEnsureModified(project.getFile("merged.txt")); - getProvider(project).update(new IResource[] {project}, Command.NO_LOCAL_OPTIONS, null, true /*createBackups*/, DEFAULT_MONITOR); - assertModificationState(project, new String[] {".", "merged.txt"}, true); - // can't commit because of merge - // commitProject(project); - // assertModificationState(project, null, true); - } - - public void testUpdateIgnoreLocal() throws TeamException, CoreException, IOException { - // Create a test project, import it into cvs and check it out - IProject project = createProject("testUpdateIgnoreLocal", new String[] { "changed.txt", "merged.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - - // modifiy a file - setContentsAndEnsureModified(project.getFile("changed.txt")); - assertModificationState(project, new String[] {".", "changed.txt"}, true); - - // peform un update -C - getProvider(project).update(new IResource[] {project}, new Command.LocalOption[] {Update.IGNORE_LOCAL_CHANGES}, null, true /*createBackups*/, DEFAULT_MONITOR); - assertModificationState(project, null, true); - } - - public void testExternalModifications() { - } - -} - diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/LinkResourcesTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/LinkResourcesTest.java deleted file mode 100644 index 8a61dafc8..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/LinkResourcesTest.java +++ /dev/null @@ -1,67 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * IBM - Initial implementation - ******************************************************************************/ -package org.eclipse.team.tests.ccvs.core.provider; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.Path; -import org.eclipse.team.core.RepositoryProvider; -import org.eclipse.team.core.TeamException; -import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.team.tests.ccvs.core.EclipseTest; - -/** - * Test linked resources - */ -public class LinkResourcesTest extends EclipseTest { - - /** - * Constructor for CVSProviderTest - */ - public LinkResourcesTest() { - super(); - } - - /** - * Constructor for CVSProviderTest - */ - public LinkResourcesTest(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(LinkResourcesTest.class); - return new CVSTestSetup(suite); - //return new CVSTestSetup(new WatchEditTest("testReadOnly")); - } - - - public void testMapSuccess() throws CoreException, TeamException { - IProject project = getUniqueTestProject("testLinkSuccess"); - buildResources(project, new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }, true); - IFolder folder = project.getFolder("link"); - folder.createLink(new Path("C:/temp"), IResource.ALLOW_MISSING_LOCAL, null); - RepositoryProvider.map(project, CVSProviderPlugin.getTypeId()); - } - - public void testLinkSuccess() throws CoreException, TeamException { - IProject project = createProject("testLinkFailure", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - IFolder folder = project.getFolder("link"); - folder.createLink(new Path("C:/temp"), IResource.ALLOW_MISSING_LOCAL, null); - assertIsIgnored(folder); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ModuleTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ModuleTest.java deleted file mode 100644 index a870bae8f..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ModuleTest.java +++ /dev/null @@ -1,281 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.provider; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; - -import junit.framework.Assert; -import junit.framework.Test; -import junit.framework.TestSuite; -import org.eclipse.core.internal.plugins.PluginDescriptor; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IProjectDescription; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspace; -import org.eclipse.core.resources.IWorkspaceRoot; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.IPluginDescriptor; -import org.eclipse.core.runtime.IPluginRegistry; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.team.core.TeamException; -import org.eclipse.team.core.sync.IRemoteSyncElement; -import org.eclipse.team.internal.ccvs.core.CVSTag; -import org.eclipse.team.internal.ccvs.core.ICVSFolder; -import org.eclipse.team.internal.ccvs.core.ICVSResource; -import org.eclipse.team.internal.ccvs.core.client.Command; -import org.eclipse.team.internal.ccvs.core.client.Session; -import org.eclipse.team.internal.ccvs.core.client.Command.LocalOption; -import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; -import org.eclipse.team.internal.ccvs.core.resources.RemoteFolder; -import org.eclipse.team.internal.ccvs.core.resources.RemoteModule; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.team.tests.ccvs.core.EclipseTest; - -/** - * This class tests the Command framework using simple CVS commands - */ -public class ModuleTest extends EclipseTest { - - public static final String RESOURCE_PATH = "resources/CommandTest/"; - - public ModuleTest() { - super(null); - } - - public ModuleTest(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(ModuleTest.class); - //return new CVSTestSetup(suite); - return new CVSTestSetup(new ModuleTest("testAliasForFiles")); - } - - private static boolean isSetUp = false; - - private static RemoteModule[] remoteModules; - - public void setUp() throws TeamException, CoreException, IOException { - if (isSetUp) return; - - // upload the modules definitions file - PluginDescriptor testPlugin = (PluginDescriptor)Platform.getPluginRegistry().getPluginDescriptor("org.eclipse.team.tests.cvs.core"); - String filePath = testPlugin.getLocation().concat(RESOURCE_PATH + "CVSROOT/modules"); - URL url = null; - try { - url = new URL (filePath); - } catch (java.net.MalformedURLException e) { - assertTrue("Bad URL for " + filePath, true); - } - - waitMsec(1000); - - IProject cvsroot = checkoutProject(null, "CVSROOT", null); - InputStream in = url.openStream(); - try { - cvsroot.getFile("modules").setContents(in, false, false, DEFAULT_MONITOR); - } finally { - in.close(); - } - commitProject(cvsroot); - - uploadProject("common"); - - remoteModules = RemoteModule.getRemoteModules(getRepository(), null, DEFAULT_MONITOR); - - isSetUp = true; - } - - protected void uploadProject(String projectName) throws TeamException, IOException, CoreException { - // locate the test case contents in the plugin resources - IPluginRegistry registry = Platform.getPluginRegistry(); - IPluginDescriptor descriptor = registry.getPluginDescriptor("org.eclipse.team.tests.cvs.core"); - URL baseURL = descriptor.getInstallURL(); - URL url = new URL(baseURL, RESOURCE_PATH + projectName); - url = Platform.resolve(url); - Assert.assertTrue(url.getProtocol().equals("file")); - IPath path = new Path(url.getPath()); - - // create a project rooted there - IWorkspace workspace = ResourcesPlugin.getWorkspace(); - IWorkspaceRoot workspaceRoot = workspace.getRoot(); - IProject project = workspaceRoot.getProject(projectName); - IProjectDescription projectDescription = workspace.newProjectDescription(projectName); - projectDescription.setLocation(path); - project.create(projectDescription, null); - project.open(null); - - // import the project into CVS - Session s = new Session(getRepository(), CVSWorkspaceRoot.getCVSFolderFor(project)); - s.open(DEFAULT_MONITOR); - try { - Command.IMPORT.execute(s, Command.NO_GLOBAL_OPTIONS, - new LocalOption[] {Command.makeArgumentOption(Command.MESSAGE_OPTION, "")}, - new String[] { projectName, "start", "vendor"}, - null, - DEFAULT_MONITOR); - } finally { - s.close(); - } - - // delete the project locally - project.delete(false /*deleteContent*/, false /*force*/, null); - } - - // XXX Temporary method of checkout (i.e. with vcm_meta - protected IProject checkoutProject(String projectName, CVSTag tag) throws TeamException { - IProject project = super.checkoutProject(getWorkspace().getRoot().getProject(projectName), null, tag); - ICVSFolder parent = (ICVSFolder)CVSWorkspaceRoot.getCVSResourceFor(project); - ICVSResource vcmmeta = CVSWorkspaceRoot.getCVSResourceFor(project.getFile(".vcm_meta")); - if ( ! vcmmeta.isManaged() && ! parent.getFolderSyncInfo().getIsStatic()) { - getProvider(project).add(new IResource[] {project.getFile(".vcm_meta")}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - waitMsec(1000); - commitProject(project); - } - return project; - } - - /* - * Test the following definition - * - * # self referencing modules - * project1 project1 - */ - public void testSelfReferencingModule() throws TeamException, CoreException, IOException { - uploadProject("project1"); - IProject project1 = checkoutProject("project1", null); - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project1, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertEquals(Path.EMPTY, CVSWorkspaceRoot.getCVSResourceFor(project1), (ICVSResource)tree.getRemote(), false, false); - RemoteModule module = getRemoteModule("project1"); - assertEquals(Path.EMPTY, (RemoteFolder)tree.getRemote(), module, false); - } - - /* - * Test the following definition - * - * # checkout docs in flattened structure - * docs -d docs common/docs - * macros common/macros - */ - public void testFlattenedStructure() throws TeamException, CoreException, IOException { - - IProject docs = checkoutProject("docs", null); - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(docs, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertEquals(Path.EMPTY, CVSWorkspaceRoot.getCVSResourceFor(docs), (ICVSResource)tree.getRemote(), false, false); - RemoteModule module = getRemoteModule("docs"); - assertEquals(Path.EMPTY, (RemoteFolder)tree.getRemote(), module, false); - - IProject macros = checkoutProject("macros", null); - tree = CVSWorkspaceRoot.getRemoteSyncTree(macros, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertEquals(Path.EMPTY, CVSWorkspaceRoot.getCVSResourceFor(macros), (ICVSResource)tree.getRemote(), false, false); - module = getRemoteModule("macros"); - assertEquals(Path.EMPTY, (RemoteFolder)tree.getRemote(), module, false); - - } - - /* - * Test the following definition - * - * # include docs with project - * project2 project2 &docs - * # only project2 - * project2-only project2 - */ - public void testIncludeAndExcludeDocs() throws TeamException, CoreException, IOException { - uploadProject("project2"); - IProject project2 = checkoutProject("project2", null); - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project2, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertEquals(Path.EMPTY, CVSWorkspaceRoot.getCVSResourceFor(project2), (ICVSResource)tree.getRemote(), false, false); - - RemoteModule module = getRemoteModule("project2"); - assertEquals(Path.EMPTY, (RemoteFolder)tree.getRemote(), module, false); - - project2 = checkoutProject("project2-only", null); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project2, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertEquals(Path.EMPTY, CVSWorkspaceRoot.getCVSResourceFor(project2), (ICVSResource)tree.getRemote(), false, false); - - module = getRemoteModule("project2-only"); - assertEquals(Path.EMPTY, (RemoteFolder)tree.getRemote(), module, false); - - } - - /* - * Test the following definition - * - * # a use of alias - * project3-src project3/src - * project3-src_file -a project3-src/file.c mc-src/file.h - * project3-sub project3/sub &project3-src_file - */ - public void testAliasForFiles() throws TeamException, CoreException, IOException { - uploadProject("project3"); - IProject project3 = checkoutProject("project3-sub", null); - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project3, CVSTag.DEFAULT, DEFAULT_MONITOR); -// assertEquals("Local does not match remote", Session.getManagedResource(project3), (ICVSResource)tree.getRemote(), false, false); - - project3 = checkoutProject("project3-src", null); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project3, CVSTag.DEFAULT, DEFAULT_MONITOR); -// assertEquals("Local does not match remote", Session.getManagedResource(project3), (ICVSResource)tree.getRemote(), false, false); - - project3 = checkoutProject("project3-src_file", null); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project3, CVSTag.DEFAULT, DEFAULT_MONITOR); -// assertEquals("Local does not match remote", Session.getManagedResource(project3), (ICVSResource)tree.getRemote(), false, false); - } - - /* - * Test the following definition - * - * # using aliases to provide packaging - * project7-common -a project7/common - * project7-pc -a project7-common project7/pc - * project7-linux -a project7-common project7/linux - */ - public void testAliases() throws TeamException, CoreException, IOException { - uploadProject("project7"); - IProject project7 = checkoutProject("project7-common", null); - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project7, CVSTag.DEFAULT, DEFAULT_MONITOR); -// assertEquals("Local does not match remote", Session.getManagedResource(project7), (ICVSResource)tree.getRemote(), false, false); - - project7 = checkoutProject("project7-pc", null); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project7, CVSTag.DEFAULT, DEFAULT_MONITOR); -// assertEquals("Local does not match remote", Session.getManagedResource(project7), (ICVSResource)tree.getRemote(), false, false); - - project7 = checkoutProject("project7-linux", null); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project7, CVSTag.DEFAULT, DEFAULT_MONITOR); -// assertEquals("Local does not match remote", Session.getManagedResource(project7), (ICVSResource)tree.getRemote(), false, false); - } - - - /* - * Test the following definition - * - * # simple use of module alias - * project8-alias -a project8 common - */ - public void testSimpleAlias() throws TeamException, CoreException, IOException { - uploadProject("project8"); - - // XXX Module checkout will not work yet - // IProject project8 = checkoutProject("project8-alias", null); - - RemoteModule module = getRemoteModule("project8-alias"); - } - - public RemoteModule getRemoteModule(String moduleName) { - for (int i = 0; i < remoteModules.length; i++) { - RemoteModule module = remoteModules[i]; - // XXX shouldn't be getName - if (module.getName().equals(moduleName)) - return module; - } - return null; - } -} - diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/RemoteResourceTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/RemoteResourceTest.java deleted file mode 100644 index 19fc504ce..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/RemoteResourceTest.java +++ /dev/null @@ -1,306 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.provider; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import java.io.IOException; -import java.io.InputStream; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.Path; -import org.eclipse.team.core.TeamException; -import org.eclipse.team.core.sync.IRemoteResource; -import org.eclipse.team.core.sync.IRemoteSyncElement; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.CVSTag; -import org.eclipse.team.internal.ccvs.core.CVSTeamProvider; -import org.eclipse.team.internal.ccvs.core.ICVSFolder; -import org.eclipse.team.internal.ccvs.core.ICVSRemoteFile; -import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder; -import org.eclipse.team.internal.ccvs.core.ICVSRemoteResource; -import org.eclipse.team.internal.ccvs.core.ICVSResource; -import org.eclipse.team.internal.ccvs.core.ILogEntry; -import org.eclipse.team.internal.ccvs.core.client.Command; -import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; -import org.eclipse.team.internal.ccvs.core.resources.RemoteFolder; -import org.eclipse.team.internal.ccvs.core.resources.RemoteFolderTree; -import org.eclipse.team.internal.ccvs.core.resources.RemoteFolderTreeBuilder; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.team.tests.ccvs.core.EclipseTest; - -public class RemoteResourceTest extends EclipseTest { - - public RemoteResourceTest() { - super(); - } - - public RemoteResourceTest(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(RemoteResourceTest.class); - return new CVSTestSetup(suite); - //return new CVSTestSetup(new RemoteResourceTest("testBuildRemoteTree")); - } - - protected void assertRemoteMatchesLocal(String message, RemoteFolder remote, IContainer container) throws CVSException, IOException, CoreException { - assertEquals(Path.EMPTY, (ICVSResource)remote, CVSWorkspaceRoot.getCVSFolderFor(container), false, false); - } - - protected void getMembers(ICVSRemoteFolder folder, boolean deep) throws TeamException { - IRemoteResource[] children = folder.members(DEFAULT_MONITOR); - if (deep) { - for (int i=0;i<children.length;i++) { - if (children[i].isContainer()) - getMembers((ICVSRemoteFolder)children[i], deep); - } - } - } - - /** - * RemoteFolderTreeBuilder test - * - * Perform some remote additions, changes and deletions - */ - public void testSimpleChanges() throws TeamException, CoreException, IOException { - - // Create a test project and a copy of it - IProject project = createProject("testRemoteTreeBuilder", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - IProject copy = checkoutCopy(project, "-copy"); - - // Make some changes to the copy and commit - IResource[] newResources = buildResources(copy, new String[] { "added.txt", "folder2/", "folder2/added.txt" }, false); - setContentsAndEnsureModified(copy.getFile("changed.txt")); - CVSTeamProvider provider = getProvider(copy); - provider.add(newResources, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - provider.delete(new IResource[] {copy.getFile("deleted.txt")}, DEFAULT_MONITOR); - provider.checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - - // Build the remote tree from the original and ensure it matches the copy - RemoteFolderTree tree = RemoteFolderTreeBuilder.buildRemoteTree(getRepository(), project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertRemoteMatchesLocal("testSimpleChanges", tree, copy); - } - - /** - * RemoteFolderTreeBuilder test - * - * Create a remote tree from a local workspace with no remote changes. - */ - public void testNoRemoteChanges() throws TeamException, CoreException, IOException { - IProject project = createProject("testNoRemoteChanges", new String[] { "file1.txt", "file2.txt", "folder1/a.txt", "folder2/folder3/b.txt"}); - RemoteFolderTree tree = RemoteFolderTreeBuilder.buildRemoteTree(getRepository(), project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertRemoteMatchesLocal("testNoRemoteChanges", tree, project); - } - - /** - * RemoteFolderTreeBuilder test - * - * Create a base remote tree from a local workspace with no remote changes. - */ - public void testGetBase() throws TeamException, CoreException, IOException { - IProject project = createProject("testGetBase", new String[] { "file1.txt", "file2.txt", "folder1/a.txt", "folder2/folder3/b.txt"}); - RemoteFolderTree tree = RemoteFolderTreeBuilder.buildBaseTree(getRepository(), CVSWorkspaceRoot.getCVSFolderFor(project), CVSTag.DEFAULT, DEFAULT_MONITOR); - assertRemoteMatchesLocal("testGetBase", tree, project); - } - - /** - * RemoteFolderTreeBuilder test - * - * Add a nested folder structure remotely and build the remote tree - * from the root. - */ - public void testFolderAddition() throws TeamException, CoreException, IOException { - - // Create a test project - IProject project = createProject("testFolderAddition", new String[] { "file1.txt", "file2.txt", "folder1/", "folder1/a.txt"}); - - // Checkout and modify a copy - IProject copy = checkoutCopy(project, "-copy"); - addResources(copy, new String[] { "folder2/folder3/b.txt" }, false); - getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - - // Build the remote tree from the project - RemoteFolderTree tree = RemoteFolderTreeBuilder.buildRemoteTree(getRepository(), project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertRemoteMatchesLocal("testFolderAddition", tree, copy); - } - - /** - * RemoteFolderTreeBuilder test - * - * Add a nested folder structure remotely and build the remote tree - * from a child - */ - public void testNonRootBuild() throws CoreException, TeamException, IOException { - - // Create a test project - IProject project = createProject("testNonRootBuild", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder2/", "folder2/a.txt", "folder2/folder3/", "folder2/folder3/b.txt", "folder2/folder3/c.txt"}); - - // Checkout and modify a copy - IProject copy = checkoutCopy(project, "-copy"); - setContentsAndEnsureModified(copy.getFile("folder2/folder3/c.txt")); - addResources(copy, new String[] { "folder2/folder3/add.txt" }, false); - getProvider(copy).delete(new IResource[] {copy.getFile("folder2/folder3/b.txt")}, DEFAULT_MONITOR); - getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - - // Build the remote tree from the project - RemoteFolderTree tree = RemoteFolderTreeBuilder.buildRemoteTree(getRepository(), project.getFolder("folder2"), CVSTag.DEFAULT, DEFAULT_MONITOR); - assertRemoteMatchesLocal("testNonRootBuild", tree, copy.getFolder("folder2")); - } - - /** - * RemoteResource test - * - */ - public void testGetRemoteResource() throws CoreException, TeamException, IOException { - IProject project = createProject("testGetRemoteResource", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder2/", "folder2/a.txt", "folder2/folder3/", "folder2/folder3/b.txt", "folder2/folder3/c.txt"}); - ICVSRemoteResource file = CVSWorkspaceRoot.getRemoteResourceFor(project.getFile("folder1/a.txt")); - assertTrue("File should exist remotely", file.exists(DEFAULT_MONITOR)); - assertEquals(Path.EMPTY, (ICVSResource)file, (ICVSResource)CVSWorkspaceRoot.getRemoteResourceFor(project.getFile("folder1/a.txt")), false, false); - ICVSRemoteResource folder = CVSWorkspaceRoot.getRemoteResourceFor(project.getFolder("folder2/folder3/")); - getMembers((ICVSRemoteFolder)folder, true); - assertTrue("Folder should exist remotely", folder.exists(DEFAULT_MONITOR)); - // XXX this didn't work right. I'll need to check into it later -// assertEquals("Remote folder should match local folder", (ICVSResource)folder, (ICVSResource)Client.getManagedFolder(project.getFolder("folder2/folder3/").getLocation().toFile())); - } - - /* - * Test that the fetch of a tagged tree matches what is checked out for that tag - */ - public void testVersionTag() throws TeamException, CoreException, IOException { - // Create a test project and version it - CVSTag v1Tag = new CVSTag("v1", CVSTag.VERSION); - IProject project = createProject("testVersionTag", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt", "folder2/folder3/c.txt"}); - tagProject(project, v1Tag); - - // Make some changes, additions (including folders) and deletions and commit - IFile file = project.getFile("folder1/a.txt"); - file.setContents(getRandomContents(), false, false, null); - addResources(project, new String[] { "folder2/folder3/add.txt" }, false); - deleteResources(project, new String[] {"folder1/b.txt"}, false); - getProvider(project).checkin(new IResource[] {project}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - - // Fetch the remote tree for the version - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, v1Tag, DEFAULT_MONITOR); - - // Check out the project version - project = checkoutCopy(project, v1Tag); - - // Compare the two - assertEquals(Path.EMPTY, (ICVSResource)tree.getRemote(), (ICVSResource)CVSWorkspaceRoot.getCVSResourceFor(project), false, false); - } - - /* - * Test the fetching of the contents of an empty file - */ - public void testEmptyFile() throws TeamException, CoreException, IOException { - - // Create a project with an empty file - IProject project = createProject("testEmptyFile", new String[] { "file.txt"}); - IFile file = project.getFile("file.txt"); - setContentsAndEnsureModified(file, ""); - commitResources(project, new String[] {"file.txt"}); - - ICVSRemoteResource remote = CVSWorkspaceRoot.getRemoteResourceFor(file); - InputStream in = remote.getContents(DEFAULT_MONITOR); - int count = 0; - while(in.read() != -1) { - count++; - } - assertTrue("Remote file should be empty", count==0); - } - - /* - * Test the fetching of the contents from multiple remote revisions of a file - */ - public void testFileRevisions() throws TeamException, CoreException, IOException { - - // Create a project with an empty file - IProject project = createProject("testFileRevisions", new String[] { "file.txt"}); - setContentsAndEnsureModified(project.getFile("file.txt"), "hi there"); - commitResources(project, new String[] {"file.txt"}); - setContentsAndEnsureModified(project.getFile("file.txt"), "bye there"); - commitResources(project, new String[] {"file.txt"}); - - ICVSRemoteFile remote = (ICVSRemoteFile)CVSWorkspaceRoot.getRemoteResourceFor(project.getFile("file.txt")); - ILogEntry[] entries = remote.getLogEntries(DEFAULT_MONITOR); - for (int i=0;i<entries.length;i++) { - InputStream in = entries[i].getRemoteFile().getContents(DEFAULT_MONITOR); - - if (entries[i].getRevision().equals("1.2")) { - int count = 0; - byte[] buffer = new byte[1024]; - int c; - while((c = in.read()) != -1) { - buffer[count] = (byte)c; - count++; - } - String contents = new String(buffer, 0, count); - assertEquals("the contents of revision 1.2 are not equal", contents, "hi there"); - } else if (entries[i].getRevision().equals("1.3")) { - int count = 0; - byte[] buffer = new byte[1024]; - int c; - while((c = in.read()) != -1) { - buffer[count] = (byte)c; - count++; - } - String contents = new String(buffer, 0, count); - assertEquals("the contents of revision 1.3 are not equal", contents, "bye there"); - } - } - } - - public void testTag() throws TeamException, CoreException, IOException { - IProject project = createProject("testTag", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder2/folder3/b.txt", "folder2/folder3/c.txt"}); - ICVSRemoteFolder remote = (ICVSRemoteFolder)CVSWorkspaceRoot.getRemoteResourceFor(project); - CVSTag tag = new CVSTag("v1", CVSTag.VERSION); - remote.tag(tag, Command.NO_LOCAL_OPTIONS, DEFAULT_MONITOR); - ICVSRemoteFolder v1 = (ICVSRemoteFolder)CVSWorkspaceRoot.getRemoteTree(project, tag, DEFAULT_MONITOR); - assertEquals(Path.EMPTY, remote, v1, false); - CVSTag tag2 = new CVSTag("v2", CVSTag.VERSION); - v1.tag(tag2, Command.NO_LOCAL_OPTIONS, DEFAULT_MONITOR); - ICVSRemoteFolder v2 = (ICVSRemoteFolder)CVSWorkspaceRoot.getRemoteTree(project, tag2, DEFAULT_MONITOR); - assertEquals(Path.EMPTY, remote, v2, false); - } - - public void testExists() throws TeamException, CoreException, IOException, InterruptedException { - IProject project = createProject("testExists", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder2/", "folder2/a.txt", "folder2/folder3/", "folder2/folder3/b.txt", "folder2/folder3/c.txt"}); - ICVSRemoteResource resource1 = CVSWorkspaceRoot.getRemoteResourceFor(project.getFile("file1.txt")); - assertTrue(resource1.exists(DEFAULT_MONITOR)); - ICVSRemoteResource resource2 = (ICVSRemoteFolder)CVSWorkspaceRoot.getRemoteResourceFor(project.getFolder("folder2/folder3/")); - assertTrue(resource2.exists(DEFAULT_MONITOR)); - deleteResources(project, new String[] {"file1.txt", "folder2/folder3/b.txt", "folder2/folder3/c.txt" }, true); - assertTrue( ! resource1.exists(DEFAULT_MONITOR)); - assertTrue(resource2.exists(DEFAULT_MONITOR)); - if (CVSTestSetup.INITIALIZE_REPO) { - CVSTestSetup.executeRemoteCommand(getRepository(), "rm -rf " + ((ICVSFolder)resource2).getFolderSyncInfo().getRemoteLocation()); - assertTrue( ! resource2.exists(DEFAULT_MONITOR)); - } - } - -// /** -// * Test building a sync tree using the RemoteFolderTreeBuilder using a remote resource as the -// * starting point instead of a local one. -// */ -// public void testBuildRemoteTree() throws TeamException, CoreException, IOException, InterruptedException { -// // Create a project and then delete it locally -// IProject project = createProject("testBuildRemoteTree", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder2/", "folder2/a.txt", "folder2/folder3/", "folder2/folder3/b.txt", "folder2/folder3/c.txt"}); -// String name = project.getName(); -// project.delete(true, false, DEFAULT_MONITOR); -// // Create a remote resource for the project and build a sync tree from it -// RemoteFolder folder = new RemoteFolder(null, getRepository(), new Path(name), null); -// RemoteFolderTree tree = RemoteFolderTreeBuilder.buildRemoteTree((CVSRepositoryLocation)folder.getRepository(), folder, null, DEFAULT_MONITOR); -// // Reload the project from the repository and ensure that the tree and project are equal. -// checkoutProject(project, name, null); -// assertEquals(Path.EMPTY, CVSWorkspaceRoot.getCVSResourceFor(project), tree, false, true); -// } -} - diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ResourceDeltaTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ResourceDeltaTest.java deleted file mode 100644 index aaf5a57d8..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/ResourceDeltaTest.java +++ /dev/null @@ -1,158 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * IBM - Initial API and implementation - ******************************************************************************/ -package org.eclipse.team.tests.ccvs.core.provider; - -import junit.framework.Test; -import junit.framework.TestSuite; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IMarker; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.Path; -import org.eclipse.team.core.TeamException; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin; -import org.eclipse.team.internal.ccvs.core.ICVSFile; -import org.eclipse.team.internal.ccvs.core.ICVSFolder; -import org.eclipse.team.internal.ccvs.core.ICVSResourceVisitor; -import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; -import org.eclipse.team.internal.ccvs.core.syncinfo.ResourceSyncInfo; -import org.eclipse.team.internal.ccvs.core.util.AddDeleteMoveListener; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.team.tests.ccvs.core.EclipseTest; - -public class ResourceDeltaTest extends EclipseTest { - - /** - * Constructor for ResourceDeltaTest. - */ - public ResourceDeltaTest() { - super(); - } - - /** - * Constructor for ResourceDeltaTest. - * @param name - */ - public ResourceDeltaTest(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(ResourceDeltaTest.class); - return new CVSTestSetup(suite); - //return new CVSTestSetup(new ResourceDeltaTest("testOrphanedSubtree")); - } - - public void assertNotManaged(ICVSFile cvsFile) throws CVSException { - assertTrue("File " + cvsFile.getName() + " should not be managed", ! cvsFile.isManaged()); - } - - public void assertNotManaged(ICVSFolder cvsFolder) throws CVSException { - assertTrue("Folder " + cvsFolder.getName() + " should not be managed", ! cvsFolder.isManaged()); - assertTrue("Folder " + cvsFolder.getName() + " should not be a cvs folder", ! cvsFolder.isCVSFolder()); - cvsFolder.acceptChildren(new ICVSResourceVisitor() { - public void visitFile(ICVSFile file) throws CVSException { - assertNotManaged(file); - } - public void visitFolder(ICVSFolder folder) throws CVSException { - assertNotManaged(folder); - } - }); - } - - public void assertAdditionMarkerFor(IResource resource, boolean exists) throws CoreException { - // Addition markers are no longer used - } - - public void assertDeletionMarkerFor(IResource resource, boolean exists) throws CoreException { - if ( ! CVSProviderPlugin.getPlugin().getShowTasksOnAddAndDelete()) return; - IMarker marker = null; - if (resource.getParent().exists()) { - String name = resource.getName(); - IMarker[] markers = resource.getParent().findMarkers(AddDeleteMoveListener.DELETION_MARKER, false, IResource.DEPTH_ZERO); - for (int i = 0; i < markers.length; i++) { - IMarker iMarker = markers[i]; - String markerName = (String)iMarker.getAttribute(AddDeleteMoveListener.NAME_ATTRIBUTE); - if (markerName.equals(name)) { - marker = iMarker; - break; - } - } - } - if (exists) { - assertTrue("Deletion marker doesn't exist for " + resource.getName(), marker != null); - } else { - assertTrue("Deletion marker exists for " + resource.getName(), marker == null); - } - } - - public void testOrphanedSubtree() throws TeamException, CoreException { - IProject project = createProject("testOrphanedSubtree", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt", "folder1/folder2/b.txt"}); - IFolder folder = project.getFolder(new Path("folder1")); - folder.move(new Path("moved"), false, false, null); - folder = project.getFolder(new Path("moved")); - ICVSFolder cvsFolder = CVSWorkspaceRoot.getCVSFolderFor(folder); - assertNotManaged(cvsFolder); - assertAdditionMarkerFor(folder, true); - } - - public void testOrphanedSubsubtree() throws TeamException, CoreException { - IProject project = createProject("testOrphanedSubsubtree", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt", "folder1/folder2/b.txt"}); - IFolder folder = project.getFolder(new Path("folder1")); - IFolder target = project.getFolder("sub"); - target.create(false, true, null); - folder.move(new Path("sub/moved"), false, false, null); - folder = project.getFolder(new Path("sub/moved")); - ICVSFolder cvsFolder = CVSWorkspaceRoot.getCVSFolderFor(folder); - assertNotManaged(cvsFolder); - assertAdditionMarkerFor(target, true); - assertAdditionMarkerFor(folder, false); - } - - public void testDeletionHandling() throws TeamException, CoreException { - IProject project = createProject("testDeletionHandling", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt", "folder1/folder2/b.txt"}); - addResources(project, new String[] {"added.txt"}, false); - assertAdditionMarkerFor(project.getFile("added.txt"), false); - deleteResources(project, new String[] {"added.txt", "deleted.txt"}, false); - ICVSFile file = CVSWorkspaceRoot.getCVSFileFor(project.getFile("added.txt")); - assertNotManaged(file); - assertDeletionMarkerFor(project.getFile("added.txt"), false); - file = CVSWorkspaceRoot.getCVSFileFor(project.getFile("deleted.txt")); - assertTrue("File " + file.getName() + " should be managed", file.isManaged()); - ResourceSyncInfo info = file.getSyncInfo(); - assertTrue("File " + file.getName() + " should be marked as deleted", info.isDeleted()); - assertDeletionMarkerFor(project.getFile("deleted.txt"), true); - } - - public void testFileAdditionHandling() throws TeamException, CoreException { - IProject project = createProject("testFileAdditionHandling", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt", "folder1/folder2/b.txt"}); - deleteResources(project, new String[] {"deleted.txt"}, false); - assertDeletionMarkerFor(project.getFile("deleted.txt"), true); - addResources(project, new String[] {"deleted.txt"}, false); - ICVSFile file = CVSWorkspaceRoot.getCVSFileFor(project.getFile("deleted.txt")); - assertTrue("File " + file.getName() + " should be managed", file.isManaged()); - ResourceSyncInfo info = file.getSyncInfo(); - assertTrue("File " + file.getName() + " should not be marked as deleted", ! info.isDeleted()); - assertTrue("File " + file.getName() + " should not be marked as addition", ! info.isAdded()); - assertDeletionMarkerFor(project.getFile("deleted.txt"), false); - } - - public void testFolderAdditionHandling() throws TeamException, CoreException { - IProject project = createProject("testFolderAdditionHandling", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt", "folder1/folder2/b.txt"}); - IFolder folder = project.getFolder("newfolder"); - folder.create(false, true, null); - assertAdditionMarkerFor(folder, true); - getProvider(project).add(new IResource[] {folder}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - assertAdditionMarkerFor(folder, false); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/SyncElementTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/SyncElementTest.java deleted file mode 100644 index 5093fde75..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/SyncElementTest.java +++ /dev/null @@ -1,834 +0,0 @@ -package org.eclipse.team.tests.ccvs.core.provider; -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ -import java.io.IOException; - -import junit.framework.AssertionFailedError; -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IProjectDescription; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.team.core.TeamException; -import org.eclipse.team.core.sync.ILocalSyncElement; -import org.eclipse.team.core.sync.IRemoteResource; -import org.eclipse.team.core.sync.IRemoteSyncElement; -import org.eclipse.team.core.sync.RemoteSyncElement; -import org.eclipse.team.internal.ccvs.core.CVSTag; -import org.eclipse.team.internal.ccvs.core.ICVSFolder; -import org.eclipse.team.internal.ccvs.core.ICVSResource; -import org.eclipse.team.internal.ccvs.core.client.Command; -import org.eclipse.team.internal.ccvs.core.client.Update; -import org.eclipse.team.internal.ccvs.core.resources.CVSRemoteSyncElement; -import org.eclipse.team.internal.ccvs.core.resources.CVSWorkspaceRoot; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.team.tests.ccvs.core.EclipseTest; - -public class SyncElementTest extends EclipseTest { - - /** - * Constructor for SyncElementTest. - */ - public SyncElementTest() { - super(); - } - - /** - * Constructor for SyncElementTest. - * @param name - */ - public SyncElementTest(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(SyncElementTest.class); - return new CVSTestSetup(suite); - //return new CVSTestSetup(new SyncElementTest("testAdditionConflicts")); - } - - /* - * Get the child in the sync tree - */ - protected ILocalSyncElement getChild(ILocalSyncElement tree, IPath path) throws TeamException { - if (path.segmentCount() == 0) - return tree; - ILocalSyncElement[] children = tree.members(DEFAULT_MONITOR); - for (int i=0;i<children.length;i++) { - if (children[i].getName().equals(path.segment(0))) - return getChild(children[i], path.removeFirstSegments(1)); - } - assertTrue("Child " + path.toString() + " does not exist", false); - return null; - } - - /* - * Assert that the specified resources in the tree have the specified sync kind - * Ignore conflict types if they are not specified in the assert statement - */ - public void assertSyncEquals(String message, ILocalSyncElement tree, String[] resources, int[] syncKinds, int granularity) throws TeamException { - assertTrue(resources.length == syncKinds.length); - for (int i=0;i<resources.length;i++) { - int conflictTypeMask = 0x0F; // ignore manual and auto merge sync types for now. - ILocalSyncElement child = getChild(tree, new Path(resources[i])); - int kind = child.getSyncKind(granularity, DEFAULT_MONITOR) & conflictTypeMask; - int kindOther = syncKinds[i] & conflictTypeMask; - assertTrue(message + ": improper sync state for " + resources[i] + " expected " + - RemoteSyncElement.kindToString(kindOther) + " but was " + - RemoteSyncElement.kindToString(kind), kind == kindOther); - } - } - - public void assertSyncEquals(String message, ILocalSyncElement tree, String[] resources, int[] syncKinds) throws TeamException { - assertSyncEquals(message, tree, resources, syncKinds, ILocalSyncElement.GRANULARITY_TIMESTAMP); - } - - /* - * Update the sync info of the resources so they can be committed - */ - public void makeOutgoing(IRemoteSyncElement tree, String[] hierarchy) throws CoreException, TeamException { - for (int i=0;i<hierarchy.length;i++) { - ((CVSRemoteSyncElement)getChild(tree, new Path(hierarchy[i]))).makeOutgoing(DEFAULT_MONITOR); - } - } - - public void makeIncoming(IRemoteSyncElement tree, String[] hierarchy) throws CoreException, TeamException { - for (int i=0;i<hierarchy.length;i++) { - ((CVSRemoteSyncElement)getChild(tree, new Path(hierarchy[i]))).makeIncoming(DEFAULT_MONITOR); - } - } - - public void makeInSync(IRemoteSyncElement tree, String[] hierarchy) throws CoreException, TeamException { - for (int i=0;i<hierarchy.length;i++) { - ((CVSRemoteSyncElement)getChild(tree, new Path(hierarchy[i]))).makeInSync(DEFAULT_MONITOR); - } - } - /* - * Assert that the named resources have no local resource or sync info - */ - public void assertDeleted(String message, IRemoteSyncElement tree, String[] resources) throws CoreException, TeamException { - for (int i=0;i<resources.length;i++) { - try { - ILocalSyncElement element = getChild(tree, new Path(resources[i])); - if (! element.getLocal().exists()) - break; - } catch (AssertionFailedError e) { - break; - } - assertTrue(message + ": resource " + resources[i] + " still exists in some form", false); - } - } - - /* - * Perform a simple test that checks for the different types of incoming changes - */ - public void testIncomingChanges() throws TeamException, CoreException, IOException { - // Create a test project - IProject project = createProject("testIncomingChanges", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"}); - - // Checkout and modify a copy - IProject copy = checkoutCopy(project, "-copy"); - setContentsAndEnsureModified(copy.getFile("folder1/a.txt")); - addResources(copy, new String[] { "folder2/folder3/add.txt" }, false); - deleteResources(copy, new String[] {"folder1/b.txt"}, false); - getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - - // Get the sync tree for the project - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testIncomingChanges", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt", "folder2/", "folder2/folder3/", "folder2/folder3/add.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.CHANGE, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.DELETION, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION}); - - // Catch up to the incoming changes - // XXX SPECIAL CASE: Update must be run on a resource whose parent is managed at the time of the update. - makeInSync(tree, new String[] {"folder2/", "folder2/folder3/"}); - updateResources(project, new String[] {"folder1/a.txt", "folder1/b.txt", /* "folder2/", "folder2/folder3/", */ "folder2/folder3/add.txt"}, false); - - // Verify that we are in sync (except for "folder1/b.txt", which was deleted) - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testIncomingChanges", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder2/", "folder2/folder3/", "folder2/folder3/add.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC}); - - // Ensure "folder1/b.txt" was deleted - assertDeleted("testIncomingChanges", tree, new String[] {"folder1/b.txt"}); - - // Verify that the copy equals the original - assertEquals(project, copy); - } - - /* - * Perform a simple test that checks for the different types of outgoing changes - */ - public void testOutgoingChanges() throws TeamException, CoreException { - // Create a test project (which commits it as well) - IProject project = createProject("testIncomingChanges", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"}); - - // Make some modifications - setContentsAndEnsureModified(project.getFile("folder1/a.txt")); - addResources(project, new String[] { "folder2/folder3/add.txt" }, false); - deleteResources(project, new String[] {"folder1/b.txt"}, false); - - // Get the sync tree for the project - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testOutgoingChanges", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt", "folder2/", "folder2/folder3/", "folder2/folder3/add.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.CHANGE, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.DELETION, - IRemoteSyncElement.IN_SYNC, /* adding a folder creates it remotely */ - IRemoteSyncElement.IN_SYNC, /* adding a folder creates it remotely */ - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.ADDITION}); - - // Commit the changes - commitResources(project, new String[] {"folder1/a.txt", "folder1/b.txt", "folder2/folder3/add.txt"}); - - // Ensure we're in sync - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testOutgoingChanges", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder2/", "folder2/folder3/", "folder2/folder3/add.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC}); - - // Ensure deleted resource "folder1/b.txt" no longer exists - assertDeleted("testOutgoingChanges", tree, new String[] {"folder1/b.txt"}); - } - - /* - * Perform a test that checks for outgoing changes that are CVS questionables (no add or remove) - */ - public void testOutgoingQuestionables() throws TeamException, CoreException { - // Create a test project (which commits it as well) - IProject project = createProject("testIncomingChanges", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"}); - - // Make some modifications - buildResources(project, new String[] {"folder2/folder3/add.txt"}, false); - IFile file = project.getFile("folder1/b.txt"); - file.delete(true, DEFAULT_MONITOR); - - // Get the sync tree for the project - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testOutgoingQuestionables", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt", "folder2/", "folder2/folder3/", "folder2/folder3/add.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.DELETION, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.ADDITION}); - - // Update the resource sync info so the resources can be commited - // Merge won't work for folders so we'll add them explicilty!!! - addResources(project, new String[] {"folder2/", "folder2/folder3/", "folder2/folder3/add.txt"}, false); - deleteResources(project, new String[] {"folder1/b.txt"}, false); - commitResources(project, new String[] {"folder1/b.txt", "folder2/folder3/add.txt"}); - - // Ensure we are in sync - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testOutgoingQuestionables", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder2/", "folder2/folder3/", "folder2/folder3/add.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC}); - - // Ensure "folder1/b.txt" was deleted - assertDeleted("testOutgoingQuestionables", tree, new String[] {"folder1/b.txt"}); - } - - /* - * Test simple file conflicts - */ - public void testFileConflict() throws TeamException, CoreException, IOException { - // Create a test project (which commits it as well) - IProject project = createProject("testFileConflict", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"}); - - // Checkout a copy and make some modifications - IProject copy = checkoutCopy(project, "-copy"); - appendText(copy.getFile("file1.txt"), "prefix\n", true); - setContentsAndEnsureModified(copy.getFile("folder1/a.txt"), "Use a custom string to avoid intermitant errors!"); - getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - - // Make the same modifications to the original (We need to test both M and C!!!) - appendText(project.getFile("file1.txt"), "\npostfix", false); // This will test merges (M) - setContentsAndEnsureModified(project.getFile("folder1/a.txt")); - - // Get the sync tree for the project - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testFileConflict", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt"}, - new int[] { - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE }); - - // Catch up to the file1.txt conflict using UPDATE with ignoreLocalChanges - getProvider(project).update(new IResource[] {project.getFile("file1.txt")}, - new Command.LocalOption[] {Update.IGNORE_LOCAL_CHANGES, Command.DO_NOT_RECURSE}, - null, true /*createBackups*/, DEFAULT_MONITOR); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testFileConflict", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE }); - - // Release the folder1/a.txt conflict by merging and then committing - makeOutgoing(tree, new String[] {"folder1/a.txt"}); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testFileConflict", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.CHANGE }); - getProvider(project).checkin(new IResource[] {project.getFile("folder1/a.txt")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testFileConflict", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC }); - } - - /* - * Test conflicts involving additions - */ - public void testAdditionConflicts() throws TeamException, CoreException { - - // CASE 1: The user adds (using CVS add) a remotely added file - // (a) catchup is simply get? - // (b) release must do a merge - // CASE 2: The user adds (but not using cvs add) a remotely added file - // (a) catchup is simply get? - // (b) release must do a merge - // CASE 3: The user adds a remotely added then deleted file - // catchup is not applicable - // release is normal - - // Create a test project (which commits it as well) and add an uncommited resource - IProject project = createProject("testAdditionConflicts", new String[] { "file.txt"}); - addResources(project, new String[] { "add1a.txt", "add1b.txt" }, false); - addResources(project, new String[] { "add3.txt" }, false); - buildResources(project, new String[] {"add2a.txt", "add2b.txt"}, false); - - // Checkout a copy, add the same resource and commit - IProject copy = checkoutCopy(project, "-copy"); - addResources(copy, new String[] { "add1a.txt", "add1b.txt", "add2a.txt", "add2b.txt", "add3.txt"}, true); - deleteResources(copy, new String[] { "add3.txt"}, true); - - // Get the sync tree for the project - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testAdditionConflicts", tree, - new String[] { "file.txt", "add1a.txt", "add1b.txt", "add2a.txt", "add2b.txt", "add3.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.ADDITION }); - - // Release the conflict cases (MERGE is not required for add3.txt but we do it anyway to ensure it doesn't cause problems) - makeOutgoing(tree, new String[]{"add1b.txt", "add2b.txt", "add3.txt"}); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testAdditionConflicts", tree, - new String[] { "file.txt", "add1b.txt", "add2b.txt", "add3.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.CHANGE, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.CHANGE, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.ADDITION }); - getProvider(project).checkin(new IResource[] {project.getFile("add1b.txt"), project.getFile("add2b.txt"), project.getFile("add3.txt")}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testAdditionConflicts", tree, - new String[] { "file.txt", "add1b.txt", "add2b.txt", "add3.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC }); - - // Catch-up to conflicting cases using UPDATE - // XXX SPECIAL CASE: We need to unmanage the resources and delete it before getting the remote - makeIncoming(tree, new String[] {"add1a.txt"}); - IFile file = project.getFile("add1a.txt"); - file.delete(false, DEFAULT_MONITOR); - file = project.getFile("add2a.txt"); - file.delete(false, DEFAULT_MONITOR); - getProvider(project).update(new IResource[] {project.getFile("add1a.txt"), project.getFile("add2a.txt")}, - new Command.LocalOption[] {Command.DO_NOT_RECURSE}, - null, true /*createBackups*/, DEFAULT_MONITOR); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testAdditionConflicts", tree, - new String[] { "add1a.txt", "add2a.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC }); - } - - /* - * Test conflicts involving deletions - */ - public void testDeletionConflicts() throws TeamException, CoreException { - - // CASE 1: The user deletes a remotely modified file - // (a) catchup must do an update - // (b) release must do a merge - // CASE 2: The user deletes (and removes) a remotely modified file - // (a) catchup must do an unmanage and update - // (b) release must do a merge - // CASE 3: The user modified a remotely deleted file - // (a) catchup must do an unmanage and local delete - // (b) release must do a merge - // CASE 4: The user deletes a remotely deleted file - // (a) catchup can update (or unmanage?) - // (b) release must unmanage - // CASE 5: The user deletes (and removes) a remotely deleted file - // (a) catchup can update (or unmanage?) - // (b) release must unmanage - - // Perform the test case for case A first - - // Create a test project (which commits it as well) and delete the resource without committing - IProject project = createProject("testDeletionConflictsA", new String[] { "delete1.txt", "delete2.txt", "delete3.txt", "delete4.txt", "delete5.txt"}); - IFile file = project.getFile("delete1.txt"); // WARNING: This does a "cvs remove"!!! - file.delete(false, DEFAULT_MONITOR); - deleteResources(project, new String[] {"delete2.txt"}, false); - setContentsAndEnsureModified(project.getFile("delete3.txt")); - file = project.getFile("delete4.txt"); - file.delete(false, DEFAULT_MONITOR); - deleteResources(project, new String[] {"delete5.txt"}, false); - - // Checkout a copy and commit the deletion - IProject copy = checkoutCopy(project, "-copy"); - setContentsAndEnsureModified(copy.getFile("delete1.txt")); - setContentsAndEnsureModified(copy.getFile("delete2.txt")); - deleteResources(copy, new String[] {"delete3.txt", "delete4.txt", "delete5.txt"}, false); - getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - - // Get the sync tree for the project - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testDeletionConflictsA", tree, - new String[] { "delete1.txt", "delete2.txt", "delete3.txt", "delete4.txt", "delete5.txt"}, - new int[] { - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE, - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE, - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC }); - - // Catch up to remote changes. - // XXX SPECIAL CASE: delete1.txt must be unmanaged before the catch-up - makeIncoming(tree, new String[] {"delete1.txt"}); - // XXX SPECIAL CASE: delete2.txt must be unmanaged before the catch-up - makeIncoming(tree, new String[] {"delete2.txt"}); - // XXX SPECIAL CASE: delete3.txt must ignore local changes (and -C doesn't work so we'll unmanage and delete the local resource) - makeIncoming(tree, new String[] {"delete3.txt"}); - project.getFile("delete3.txt").delete(false, DEFAULT_MONITOR); - updateResources(project, new String[] {"delete1.txt", "delete2.txt", "delete3.txt", "delete4.txt", "delete5.txt"}, true); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testDeletionConflictsA", tree, - new String[] { "delete1.txt", "delete2.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC }); - assertDeleted("testDeletionConflictsA", tree, new String[] {"delete3.txt", "delete4.txt", "delete5.txt"}); - - // Now redo the test case for case B - - // Create a test project (which commits it as well) and delete the resource without committing - project = createProject("testDeletionConflictsB", new String[] { "delete1.txt", "delete2.txt", "delete3.txt", "delete4.txt", "delete5.txt"}); - file = project.getFile("delete1.txt"); - file.delete(false, DEFAULT_MONITOR); - deleteResources(project, new String[] {"delete2.txt"}, false); - setContentsAndEnsureModified(project.getFile("delete3.txt")); - file = project.getFile("delete4.txt"); - file.delete(false, DEFAULT_MONITOR); - deleteResources(project, new String[] {"delete5.txt"}, false); - - // Checkout a copy and commit the deletion - copy = checkoutCopy(project, "-copy"); - setContentsAndEnsureModified(copy.getFile("delete1.txt")); - setContentsAndEnsureModified(copy.getFile("delete2.txt")); - deleteResources(copy, new String[] {"delete3.txt", "delete4.txt", "delete5.txt"}, false); - getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - - // Get the sync tree for the project - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testDeletionConflictsB", tree, - new String[] { "delete1.txt", "delete2.txt", "delete3.txt", "delete4.txt", "delete5.txt"}, - new int[] { - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE, - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE, - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC }); - - // Release the resources - // XXX SPECIAL CASE: "delete1.txt", "delete2.txt" and "delete3.txt" must be merged - makeOutgoing(tree, new String[]{"delete1.txt", "delete2.txt", "delete3.txt"}); - // XXX SPECIAL CASE: "delete4.txt" and "delete5.txt" must be unmanaged - unmanageResources(project, new String[]{"delete4.txt", "delete5.txt"}); - commitResources(project, new String[] { "delete1.txt", "delete2.txt", "delete3.txt", "delete4.txt", "delete5.txt"}); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testDeletionConflictsB", tree, - new String[] { "delete3.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC }); - assertDeleted("testDeletionConflictsB", tree, new String[] {"delete1.txt", "delete2.txt", "delete4.txt", "delete5.txt"}); - } - - /* - * Test the creation and sync of an empty local project that has remote contents - */ - public void testSyncOnEmptyProject() throws TeamException { - } - - /* - * Test syncing on a folder that has been deleted from the server - */ - public void testSyncOnDeletedFolder() throws TeamException { - } - - /* - * Test syncing on a folder that is empty on the server and has been pruned, then added locally - */ - public void testSyncOnPrunedFolder() throws TeamException { - } - - /* - * Test sync involving pruned directories - */ - public void testSyncWithPruning() throws TeamException { - } - - /* - * Test a conflict with an incomming foler addition and an unmanaqged lcoal folder - */ - public void testFolderConflict() throws TeamException, CoreException { - - // Create a test project (which commits it as well) and delete the resource without committing - IProject project = createProject("testFolderConflict", new String[] { "file.txt"}); - - // Checkout a copy and add some folders - IProject copy = checkoutCopy(project, "-copy"); - addResources(copy, new String[] {"folder1/file.txt", "folder2/file.txt"}, true); - - // Add a folder to the original project (but not using cvs) - IResource[] resources = buildResources(project, new String[] {"folder1/"}); - ((IFolder)resources[0]).create(false, true, DEFAULT_MONITOR); - - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testFolderConflict", tree, - new String[] { "file.txt", "folder1/", "folder1/file.txt", "folder2/", "folder2/file.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION}); - - makeInSync(tree, new String[] {"folder1/"}); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testFolderConflict", tree, - new String[] { "file.txt", "folder1/", "folder1/file.txt", "folder2/", "folder2/file.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION}); - } - - /* - * Test that a deleted file can still be deleted through the team provider - */ - public void testOutgoingDeletion() throws TeamException, CoreException { - - // Create a test project (which commits it as well) - IProject project = createProject("testOutgoingDeletion", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"}); - - // Delete a file - IFile file = project.getFile("folder1/b.txt"); - file.delete(true, DEFAULT_MONITOR); // WARNING: As of 2002/03/05, this is equivalent to a cvs remove - - // Get the sync tree for the project - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testOutgoingDeletion", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.DELETION}); - - // Commit the deletion - getProvider(file).checkin(new IResource[] {file}, IResource.DEPTH_ZERO, DEFAULT_MONITOR); - - // Get the sync tree again for the project and ensure others aren't effected - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testOutgoingDeletion", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC}); - - // Assert that deletion no longer appears in remote tree - assertDeleted("testOutgoingDeletion", tree, new String[] {"folder1/b.txt"}); - } - - /* - * Test catching up to an incoming addition - */ - public void testIncomingAddition() throws TeamException, CoreException { - // Create a test project - IProject project = createProject("testIncomingAddition", new String[] { "file1.txt", "folder1/", "folder1/a.txt"}); - - // Checkout and modify a copy - IProject copy = checkoutCopy(project, "-copy"); - addResources(copy, new String[] { "folder1/add.txt" }, true); - - // Get the sync tree for the project - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testIncomingAddition", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/add.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION}); - - // Get the resource from the tree - ILocalSyncElement element = getChild(tree, new Path("folder1/add.txt")); - - // Catch up to the addition by updating - getProvider(project).update(new IResource[] {element.getLocal()}, new Command.LocalOption[] {Command.DO_NOT_RECURSE}, - null, true /*createBackups*/, DEFAULT_MONITOR); - - // Get the sync tree again for the project and ensure the added resource is in sync - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testIncomingAddition", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/add.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC}); - } - - /* - * Test changes using a granularity of contents - */ - public void testGranularityContents() throws TeamException, CoreException, IOException { - // Create a test project (which commits it as well) - IProject project = createProject("testGranularityContents", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"}); - - // Checkout a copy and make some modifications - IProject copy = checkoutCopy(project, "-copy"); - appendText(copy.getFile("file1.txt"), "", true); - setContentsAndEnsureModified(copy.getFile("folder1/a.txt")); - getProvider(copy).checkin(new IResource[] {copy}, IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - - // Make the same modifications to the original - appendText(project.getFile("file1.txt"), "", false); - setContentsAndEnsureModified(project.getFile("folder1/a.txt"), "unique text"); - - // Get the sync tree for the project - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testGranularityContents", tree, - new String[] { "file1.txt", "folder1/", "folder1/a.txt"}, - new int[] { - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE }, - IRemoteSyncElement.GRANULARITY_CONTENTS); - } - - public void testGetBase() throws TeamException, CoreException, IOException { - // Create a test project (which commits it as well) - IProject project = createProject("testIncomingChanges", new String[] { "file1.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"}); - - // Checkout and modify a copy - IProject copy = checkoutCopy(project, "-copy"); - - // Make some modifications - setContentsAndEnsureModified(project.getFile("folder1/a.txt")); - addResources(project, new String[] { "folder1/add.txt" }, false); - deleteResources(project, new String[] {"folder1/b.txt"}, false); - - // Get the sync tree for the project - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertEquals(Path.EMPTY, (ICVSResource)tree.getBase(), CVSWorkspaceRoot.getCVSResourceFor(copy), false, false); - - } - - public void testSimpleMerge() throws TeamException, CoreException, IOException { - // Create a test project (which commits it as well) - IProject project = createProject("testSimpleMerge", new String[] { "file1.txt", "file2.txt", "file3.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"}); - - // Checkout and modify a copy - IProject copy = checkoutCopy(project, "-copy"); - copy.refreshLocal(IResource.DEPTH_INFINITE, DEFAULT_MONITOR); - - tagProject(project, new CVSTag("v1", CVSTag.VERSION)); - tagProject(project, new CVSTag("branch1", CVSTag.BRANCH)); - - getProvider(copy).update(new IResource[] {copy}, Command.NO_LOCAL_OPTIONS, - new CVSTag("branch1", CVSTag.BRANCH), true /*createBackups*/, DEFAULT_MONITOR); - - // make changes on the branch - addResources(copy, new String[] {"addition.txt", "folderAddition/", "folderAddition/new.txt"}, true); - deleteResources(copy, new String[] {"folder1/b.txt"}, true); - changeResources(copy, new String[] {"file1.txt", "file2.txt"}, true); - - // make change to workspace working on HEAD - changeResources(project, new String[] {"file2.txt"}, false); - changeResources(project, new String[] {"file3.txt"}, true); - - IRemoteResource base = CVSWorkspaceRoot.getRemoteTree(project, new CVSTag("v1", CVSTag.VERSION), DEFAULT_MONITOR); - IRemoteResource remote = CVSWorkspaceRoot.getRemoteTree(project, new CVSTag("branch1", CVSTag.BRANCH), DEFAULT_MONITOR); - IRemoteSyncElement tree = new CVSRemoteSyncElement(true /*three way*/, project, base, remote); - - // watch for empty directories and the prune option!!! - assertSyncEquals("testSimpleMerge sync check", tree, - new String[] { "addition.txt", "folderAddition/", "folderAddition/new.txt", - "folder1/b.txt", "file1.txt", "file2.txt", "file3.txt"}, - new int[] { IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.ADDITION, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.DELETION, - IRemoteSyncElement.INCOMING | IRemoteSyncElement.CHANGE, - IRemoteSyncElement.CONFLICTING | IRemoteSyncElement.CHANGE, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.CHANGE }); - } - - public void testSyncOnBranch() throws TeamException, CoreException, IOException { - - // Create a test project and a branch - IProject project = createProject("testSyncOnBranch", new String[] { "file1.txt", "file2.txt", "file3.txt", "folder1/", "folder1/a.txt", "folder1/b.txt"}); - CVSTag branch = new CVSTag("branch1", CVSTag.BRANCH); - tagProject(project, branch); - getProvider(project).update(new IResource[] {project}, Command.NO_LOCAL_OPTIONS, branch, true /*createBackups*/, DEFAULT_MONITOR); - - // Checkout and modify a copy - IProject copy = checkoutCopy(project, branch); - addResources(copy, new String[] {"addition.txt", "folderAddition/", "folderAddition/new.txt"}, true); - deleteResources(copy, new String[] {"folder1/b.txt"}, true); - changeResources(copy, new String[] {"file1.txt", "file2.txt"}, true); - - // Sync on the original and assert the result equals the copy - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, null, DEFAULT_MONITOR); - assertEquals(Path.EMPTY, (ICVSResource)tree.getRemote(), CVSWorkspaceRoot.getCVSResourceFor(copy), false, false); - } - - public void testRenameProject() throws TeamException, CoreException, IOException { - String[] resourceNames = new String[] { "changed.txt", "folder1/", "folder1/a.txt" }; - int[] inSync = new int[] {IRemoteSyncElement.IN_SYNC, IRemoteSyncElement.IN_SYNC, IRemoteSyncElement.IN_SYNC}; - IProject project = createProject("testRenameProject", new String[] { "changed.txt", "folder1/", "folder1/a.txt" }); - - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("sync should be in sync", tree, resourceNames, inSync); - IProjectDescription desc = project.getDescription(); - String newName = project.getName() + "_renamed"; - desc.setName(newName); - project.move(desc, false, null); - project = ResourcesPlugin.getWorkspace().getRoot().getProject(newName); - assertTrue(project.exists()); - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("sync should be in sync", tree, resourceNames, inSync); - } - - public void testFolderDeletion() throws TeamException, CoreException { - - IProject project = createProject("testFolderDeletion", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt", "folder1/folder2/file.txt"}); - - // Delete a folder and ensure that the file is managed but doesn't exist - // (Special behavior is provider by the CVS move/delete hook but this is not part of CVS core) - project.getFolder("folder1").delete(false, false, null); - ICVSFolder folder = CVSWorkspaceRoot.getCVSFolderFor(project.getFolder("folder1")); - assertTrue("Deleted folder not in proper state", ! folder.exists() && folder.isManaged() && folder.isCVSFolder()); - - // The files should show up as outgoing deletions - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testFolderDeletion sync check", tree, - new String[] { "folder1", "folder1/a.txt", "folder1/folder2", "folder1/folder2/file.txt"}, - new int[] { IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.DELETION, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.DELETION}); - - // commit folder1/a.txt - commitResources(project, new String[] { "folder1/a.txt" }); - - // Resync and verify that above file is gone and others remain the same - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertSyncEquals("testFolderDeletion sync check", tree, - new String[] { "folder1", "folder1/folder2", "folder1/folder2/file.txt"}, - new int[] { IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.IN_SYNC, - IRemoteSyncElement.OUTGOING | IRemoteSyncElement.DELETION}); - assertDeleted("testFolderDeletion", tree, new String[] {"folder1/a.txt"}); - - // Commit folder1/folder2/file.txt - commitResources(project, new String[] { "folder1/folder2/file.txt" }); - - // Resync and verify that all are deleted - tree = CVSWorkspaceRoot.getRemoteSyncTree(project, CVSTag.DEFAULT, DEFAULT_MONITOR); - assertDeleted("testFolderDeletion", tree, new String[] {"folder1", "folder1/folder2", "folder1/folder2/file.txt"}); - } - /** - * There is special handling required when building a sync tree for a tag when there are undiscovered folders - * that only contain other folders. - */ - public void testTagRetrievalForFolderWithNoFile() throws TeamException, CoreException { - IProject project = createProject("testTagRetrievalForFolderWithNoFile", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt"}); - // Checkout, branch and modify a copy - IProject copy = checkoutCopy(project, "-copy"); - CVSTag version = new CVSTag("v1", CVSTag.BRANCH); - CVSTag branch = new CVSTag("branch1", CVSTag.BRANCH); - getProvider(copy).makeBranch(new IResource[] {copy}, version, branch, true, DEFAULT_MONITOR); - addResources(copy, new String[] {"folder2/folder3/a.txt"}, true); - - // Fetch the tree corresponding to the branch using the original as the base. - // XXX This will fail for CVSNT with directory pruning on - IRemoteSyncElement tree = CVSWorkspaceRoot.getRemoteSyncTree(project, branch, DEFAULT_MONITOR); - } -}
\ No newline at end of file diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/WatchEditTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/WatchEditTest.java deleted file mode 100644 index b3e726648..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/core/provider/WatchEditTest.java +++ /dev/null @@ -1,146 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * IBM - Initial implementation - ******************************************************************************/ -package org.eclipse.team.tests.ccvs.core.provider; - -import java.io.IOException; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IResourceVisitor; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.team.core.TeamException; -import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin; -import org.eclipse.team.internal.ccvs.core.CVSTag; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.team.tests.ccvs.core.EclipseTest; - -/** - * Test the cvs watch/edit functionality - */ -public class WatchEditTest extends EclipseTest { - - /** - * Constructor for CVSProviderTest - */ - public WatchEditTest() { - super(); - } - - /** - * Constructor for CVSProviderTest - */ - public WatchEditTest(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(WatchEditTest.class); - return new CVSTestSetup(suite); - //return new CVSTestSetup(new WatchEditTest("testReadOnly")); - } - - private void setReadOnly(boolean b) { - CVSProviderPlugin.getPlugin().getPluginPreferences().setValue(CVSProviderPlugin.READ_ONLY, b); - } - - /** - * Method assertAllFilesReadOnly. - * @param copy - */ - private void assertAllFilesReadOnly(IContainer folder) throws CoreException { - folder.accept(new IResourceVisitor() { - public boolean visit(IResource resource) throws CoreException { - if (resource.getType() == IResource.FILE) { - assertTrue(resource.isReadOnly()); - } - return true; - } - }); - } - - public void testReadOnlyCheckout() throws CoreException, TeamException { - // Create a project - IProject project = createProject("testReadOnlyCheckout", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - // XXX project will not be read-only at this point because "cvs add" followed by a "cvs commit" doesn't set the resource "read-only" - IProject copy = checkoutCopy(project, "copy"); - assertReadOnly(new IResource[] {copy}, true /* isReadOnly */, true /* recurse */); - } - - public void testEditUnedit() throws CoreException, TeamException, IOException { - // Create a project - IProject project = createProject("testEditUnedit", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - // XXX project will not be read-only at this point because "cvs add" followed by a "cvs commit" doesn't set the resource "read-only" - IProject copy = checkoutCopy(project, "copy"); - assertReadOnly(new IResource[] {copy}, true /* isReadOnly */, true /* recurse */); - editResources(copy, new String[] {"changed.txt", "deleted.txt"}); - setContentsAndEnsureModified(copy.getFile("changed.txt")); - deleteResources(copy, new String[] {"deleted.txt"}, false); - uneditResources(copy, new String[] {"changed.txt", "deleted.txt"}); - assertEquals(project, copy); - } - - public void testCommit() throws CoreException, TeamException, IOException { - // Create a project - IProject project = createProject("testCommit", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - // XXX project will not be read-only at this point because "cvs add" followed by a "cvs commit" doesn't set the resource "read-only" - IProject copy = checkoutCopy(project, "copy"); - editResources(copy, new String[] {"changed.txt"}); - setContentsAndEnsureModified(copy.getFile("changed.txt")); - commitProject(copy); - assertReadOnly(new IResource[] {copy.getFile("changed.txt")}, true /* isReadOnly */, true /* recurse */); - } - - public void testEditMergeUnedit() throws CoreException, TeamException, IOException { - // Create a project - IProject project = createProject("testEditMergeUnedit", new String[] { "changed.txt", "deleted.txt", "folder1/", "folder1/a.txt" }); - // XXX project will not be read-only at this point because "cvs add" followed by a "cvs commit" doesn't set the resource "read-only" - IProject copy = checkoutCopy(project, "copy"); - IProject copy2 = checkoutCopy(project, "copy2"); - // Modify the second copy and commit changes - editResources(copy2, new String[] {"changed.txt"}); - setContentsAndEnsureModified(copy2.getFile("changed.txt")); - commitProject(copy2); - // Edit first copy, merge then unedit - editResources(copy, new String[] {"changed.txt"}); - setContentsAndEnsureModified(copy.getFile("changed.txt")); - updateProject(copy, CVSTag.DEFAULT, false); - // XXX Update may or may not make the file read-only so it may need to be re-edited - if (copy.getFile("changed.txt").isReadOnly()) { - editResources(copy, new String[] {"changed.txt"}); - } - uneditResources(copy, new String[] {"changed.txt", "deleted.txt"}); - IFile backup = copy.getFile(".#changed.txt.1.1"); - if (backup.exists()) backup.delete(true, false, null); - assertEquals(project, copy); - } - - /** - * @see junit.framework.TestCase#setUp() - */ - protected void setUp() throws Exception { - super.setUp(); - setReadOnly(true); - } - - /** - * @see junit.framework.TestCase#tearDown() - */ - protected void tearDown() throws Exception { - super.tearDown(); - setReadOnly(false); - } - -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/CVSUITestCase.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/CVSUITestCase.java deleted file mode 100644 index d8feca154..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/CVSUITestCase.java +++ /dev/null @@ -1,458 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import java.io.File; -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import org.eclipse.compare.structuremergeviewer.DiffNode; -import org.eclipse.compare.structuremergeviewer.IDiffContainer; -import org.eclipse.compare.structuremergeviewer.IDiffElement; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IWorkspace; -import org.eclipse.core.resources.IWorkspaceDescription; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.dialogs.Dialog; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.swt.widgets.Display; -import org.eclipse.team.core.RepositoryProvider; -import org.eclipse.team.internal.ccvs.core.CVSProviderPlugin; -import org.eclipse.team.internal.ccvs.core.CVSTag; -import org.eclipse.team.internal.ccvs.core.ICVSFolder; -import org.eclipse.team.internal.ccvs.core.ICVSRemoteFolder; -import org.eclipse.team.internal.ccvs.core.connection.CVSRepositoryLocation; -import org.eclipse.team.internal.ccvs.ui.CVSUIPlugin; -import org.eclipse.team.internal.ccvs.ui.ICVSUIConstants; -import org.eclipse.team.internal.ccvs.ui.ReleaseCommentDialog; -import org.eclipse.team.internal.ccvs.ui.actions.AddToWorkspaceAction; -import org.eclipse.team.internal.ccvs.ui.actions.CommitAction; -import org.eclipse.team.internal.ccvs.ui.actions.ReplaceWithRemoteAction; -import org.eclipse.team.internal.ccvs.ui.actions.TagAction; -import org.eclipse.team.internal.ccvs.ui.actions.UpdateAction; -import org.eclipse.team.internal.ccvs.ui.repo.RepositoryManager; -import org.eclipse.team.internal.ccvs.ui.sync.CVSSyncCompareInput; -import org.eclipse.team.internal.ccvs.ui.sync.CommitSyncAction; -import org.eclipse.team.internal.ccvs.ui.sync.ForceCommitSyncAction; -import org.eclipse.team.internal.ccvs.ui.sync.ForceUpdateSyncAction; -import org.eclipse.team.internal.ccvs.ui.sync.UpdateSyncAction; -import org.eclipse.team.internal.ccvs.ui.wizards.SharingWizard; -import org.eclipse.team.internal.ui.IPromptCondition; -import org.eclipse.team.internal.ui.sync.ITeamNode; -import org.eclipse.team.internal.ui.sync.SyncSet; -import org.eclipse.team.internal.ui.sync.SyncView; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.ui.IActionDelegate; -import org.eclipse.ui.IObjectActionDelegate; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PartInitException; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.WorkbenchException; - -public class CVSUITestCase extends LoggingTestCase { - protected static Set installedTrap = new HashSet(); - private List testWindows; - protected IWorkbenchWindow testWindow; - protected CVSRepositoryLocation testRepository; - - public CVSUITestCase(String name) { - super(name); - testWindows = new ArrayList(3); - } - - protected void setUp() throws Exception { - super.setUp(); - testRepository = CVSTestSetup.repository; - testWindow = openTestWindow(); - - Display display = testWindow.getShell().getDisplay(); - if (! installedTrap.contains(display)) { - installedTrap.add(display); - Util.waitForErrorDialog(display, 10000 /*ms*/, new Waiter() { - public boolean notify(Object object) { - Dialog dialog = (Dialog) object; - printWarning("Encountered error dialog with title: " + dialog.getShell().getText(), null, null); - dialog.close(); - return true; - } - }); - } - - // disable auto-build - IWorkspace workspace = ResourcesPlugin.getWorkspace(); - IWorkspaceDescription description = workspace.getDescription(); - description.setAutoBuilding(false); - workspace.setDescription(description); - - // disable CVS console - CVSProviderPlugin.getPlugin().setConsoleListener(null); - - // disable CVS markers and prompts - IPreferenceStore store = CVSUIPlugin.getPlugin().getPreferenceStore(); - store.setValue(ICVSUIConstants.PREF_SHOW_MARKERS, false); - CVSProviderPlugin.getPlugin().setShowTasksOnAddAndDelete(false); - - // disable CVS GZIP compression - store.setValue(ICVSUIConstants.PREF_COMPRESSION_LEVEL, 0); - CVSProviderPlugin.getPlugin().setCompressionLevel(0); - - // wait for UI to settle - Util.processEventsUntil(100); - } - - protected void tearDown() throws Exception { - // wait for UI to settle - Util.processEventsUntil(100); - closeAllTestWindows(); - super.tearDown(); - } - - /** - * Open a test window with the empty perspective. - */ - protected IWorkbenchWindow openTestWindow() { - try { - IWorkbenchWindow win = PlatformUI.getWorkbench().openWorkbenchWindow( - EmptyPerspective.PERSP_ID, ResourcesPlugin.getWorkspace()); - testWindows.add(win); - return win; - } catch (WorkbenchException e) { - fail(); - return null; - } - } - - /** - * Close all test windows. - */ - protected void closeAllTestWindows() { - Iterator iter = testWindows.iterator(); - IWorkbenchWindow win; - while (iter.hasNext()) { - win = (IWorkbenchWindow) iter.next(); - win.close(); - } - testWindows.clear(); - } - - /** - * Checks out the projects with the specified tags from the test repository. - */ - protected void actionCheckoutProjects(String[] projectNames, CVSTag[] tags) throws Exception { - ICVSRemoteFolder[] projects = lookupRemoteProjects(projectNames, tags); - AddToWorkspaceAction action = new AddToWorkspaceAction() { - protected IPromptCondition getOverwriteLocalAndFileSystemPrompt() { - return new DummyPromptCondition(); - } - }; - runActionDelegate(action, projects, "Repository View Checkout action"); - timestampGranularityHiatus(); - } - - /** - * Replaces the specified resources with the remote contents using the action contribution. - */ - protected void actionReplaceWithRemote(IResource[] resources) { - ReplaceWithRemoteAction action = new ReplaceWithRemoteAction() { - protected IPromptCondition getPromptCondition() { - return new DummyPromptCondition(); - } - }; - runActionDelegate(action, resources, "Replace with Remote action"); - timestampGranularityHiatus(); - } - - /** - * Shares the specified project with the test repository. - * @param project the project to share - */ - protected void actionShareProject(IProject project) { - final SharingWizard wizard = new SharingWizard(); - wizard.init(PlatformUI.getWorkbench(), project); - Util.waitForWizardToOpen(testWindow.getShell(), wizard, new Waiter() { - public boolean notify(Object object) { - WizardDialog dialog = (WizardDialog) object; - startTask("set sharing, pop up sync viewer"); - wizard.performFinish(); - endTask(); - dialog.close(); - return false; - } - }); - timestampGranularityHiatus(); - } - - /** - * Updates the specified resources using the action contribution. - */ - protected void actionCVSCommit(IResource[] resources, final String comment) { - assertNotNull(comment); - CommitAction action = new CommitAction() { - protected String promptForComment() { - return comment; - } - }; - runActionDelegate(action, resources, "CVS Commit action"); - timestampGranularityHiatus(); - } - - /** - * Tags the specified resources using the action contribution. - */ - protected void actionCVSTag(IResource[] resources, final String name) { - assertNotNull(name); - TagAction action = new TagAction() { - protected String promptForTag(ICVSFolder folder) { - return name; - } - protected IPromptCondition getPromptCondition() { - return new DummyPromptCondition(); - } - }; - runActionDelegate(action, resources, "CVS Tag action"); - } - - /** - * Updates the specified resources using the action contribution. - */ - protected void actionCVSUpdate(IResource[] resources) { - runActionDelegate(new UpdateAction(), resources, "CVS Update action"); - timestampGranularityHiatus(); - } - - /** - * Pops up the synchronizer view for the specified resources. - * @param resources the resources to sync - * @return the compare input used - */ - protected CVSSyncCompareInput syncResources(IResource[] resources) { - startTask("Synchronize with Repository action"); - SyncView syncView = getSyncView(); - CVSSyncCompareInput input = new CVSSyncCompareInput(resources) { - // overridden to prevent "nothing to synchronize" dialog from popping up - public void run(IProgressMonitor monitor) - throws InvocationTargetException, InterruptedException { - super.run(monitor); - DiffNode result = getDiffRoot(); // (DiffNode) getCompareResult() - if (result == null || Util.isEmpty(result)) throw new InterruptedException(); - } - }; - syncView.showSync(input); - endTask(); - return input; - } - - /** - * Commits the specified resources using the synchronizer view. - * @param resources the resources to commit - * @param input the compare input for the sync view, or null to create a new one - * @param comment the comment string, or "" - */ - protected void syncCommitResources(IResource[] resources, CVSSyncCompareInput input, String comment) { - if (input == null) input = syncResources(resources); - IDiffContainer diffRoot = input.getDiffRoot(); - if (Util.isEmpty(diffRoot)) { - startTask("Nothing to Commit"); - } else { - ITeamNode[] nodes = getTeamNodesForResources(diffRoot, resources); - startTask("Sync View Commit action"); - syncCommitInternal(input, nodes, comment); - } - endTask(); - timestampGranularityHiatus(); - } - - /** - * Updates the specified resources using the synchronizer view. - * @param resources the resources to update - * @param input the compare input for the sync view, or null to create a new one - * @param comment the comment string, or "" - */ - protected void syncUpdateResources(IResource[] resources, CVSSyncCompareInput input) { - if (input == null) input = syncResources(resources); - IDiffContainer diffRoot = input.getDiffRoot(); - if (Util.isEmpty(diffRoot)) { - startTask("Nothing to Update"); - } else { - ITeamNode[] nodes = getTeamNodesForResources(diffRoot, resources); - startTask("Sync View Update action"); - syncGetInternal(input, nodes); - } - endTask(); - timestampGranularityHiatus(); - } - - /** - * Creates and imports project contents from a zip file. - */ - protected IProject createAndImportProject(String prefix, File zipFile) throws Exception { - IProject project = Util.createUniqueProject(prefix); - Util.importZip(project, zipFile); - return project; - } - - /** - * Looks up handles for remote projects by name. - */ - protected ICVSRemoteFolder[] lookupRemoteProjects(String[] projectNames, CVSTag[] tags) throws Exception { - ICVSRemoteFolder[] folders = new ICVSRemoteFolder[projectNames.length]; - for (int i = 0; i < projectNames.length; ++i) { - folders[i] = testRepository.getRemoteFolder(projectNames[i], tags[i]); - } - return folders; - } - - /** - * Gets an instance of the Synchronize view - */ - protected SyncView getSyncView() { - SyncView view = (SyncView)CVSUIPlugin.getActivePage().findView(SyncView.VIEW_ID); - if (view == null) { - view = SyncView.findInActivePerspective(); - } - if (view != null) { - try { - CVSUIPlugin.getActivePage().showView(SyncView.VIEW_ID); - } catch (PartInitException e) { - CVSUIPlugin.log(e.getStatus()); - } - } - assertNotNull("Could not obtain a Sync View.", view); - return view; - } - - /** - * Runs an IActionDelegate prototype instance on a given selection. - */ - protected void runActionDelegate(IActionDelegate delegate, Object[] selection, String taskName) { - Action action = new Action() { }; - if (delegate instanceof IObjectActionDelegate) { - ((IObjectActionDelegate) delegate).setActivePart(action, - PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPartService().getActivePart()); - } - delegate.selectionChanged(action, new StructuredSelection(selection)); - startTask(taskName); - delegate.run(action); - endTask(); - } - - /** - * Commits NON-CONFLICTING and CONFLICTING resources represented by an array of synchronizer nodes. - */ - private void syncCommitInternal(CVSSyncCompareInput input, ITeamNode[] nodes, final String comment) { - FakeSelectionProvider selectionProvider = new FakeSelectionProvider(nodes); - // Commit ONLY NON-CONFLICTING changes - CommitSyncAction commitAction = new CommitSyncAction(input, selectionProvider, "Commit", - testWindow.getShell()) { - protected int promptForConflicts(SyncSet syncSet) { - return 0; // yes! sync conflicting changes - } - protected ReleaseCommentDialog promptForComment(RepositoryManager manager, IResource[] unadded) { - ReleaseCommentDialog dialog = new ReleaseCommentDialog(null, unadded); // use our comment - dialog.setComment(comment); - return dialog; - } - }; - commitAction.run(); - // Commit ONLY CONFLICTING changes - ForceCommitSyncAction forceCommitAction = new ForceCommitSyncAction(input, selectionProvider, "Force Commit", - testWindow.getShell()) { - protected int promptForConflicts(SyncSet syncSet) { - return 0; // yes! sync conflicting changes - } - protected ReleaseCommentDialog promptForComment(RepositoryManager manager, IResource[] unadded) { - ReleaseCommentDialog dialog = new ReleaseCommentDialog(null, unadded); // use our comment - dialog.setComment(comment); - return dialog; - } - }; - forceCommitAction.run(); - } - - /** - * Updates NON-CONFLICTING and CONFLICTING resources represented by an array of synchronizer nodes. - */ - private void syncGetInternal(CVSSyncCompareInput input, ITeamNode[] nodes) { - FakeSelectionProvider selectionProvider = new FakeSelectionProvider(nodes); - // Update ONLY NON-CONFLICTING changes - UpdateSyncAction updateAction = new UpdateSyncAction(input, selectionProvider, "Update", - testWindow.getShell()) { - protected boolean promptForConflicts() { - return true; - } - protected int promptForMergeableConflicts() { - return 2; - } - }; - updateAction.run(); - // Update ONLY CONFLICTING changes - ForceUpdateSyncAction forceUpdateAction = new ForceUpdateSyncAction(input, selectionProvider, "Force Update", - testWindow.getShell()) { - protected boolean promptForConflicts() { - return true; - } - protected int promptForMergeableConflicts() { - return 2; - } - }; - forceUpdateAction.run(); - } - - /** - * Gets an array of synchronizer nodes corresponding to an array of resouces. - */ - protected static ITeamNode[] getTeamNodesForResources(IDiffContainer root, IResource[] resources) { - ITeamNode[] nodes = new ITeamNode[resources.length]; - for (int i = 0; i < resources.length; ++i) { - nodes[i] = findTeamNodeForResource(root, resources[i]); - assertNotNull(nodes[i]); - } - return nodes; - } - - private static ITeamNode findTeamNodeForResource(IDiffElement root, IResource resource) { - RepositoryProvider provider = RepositoryProvider.getProvider(resource.getProject(), CVSProviderPlugin.getTypeId()); - assertNotNull("Resource " + resource.getFullPath() + " must have an associated CVSProvider", provider); - - if (root instanceof ITeamNode) { - ITeamNode node = (ITeamNode) root; - if (resource.equals(node.getResource())) return node; - // prune the backtracking tree - IResource parent = resource.getParent(); - do { - if (parent == null) return null; // can't possibly be child of this node - } while (! resource.equals(parent)); - } - if (root instanceof IDiffContainer) { - IDiffContainer container = (IDiffContainer) root; - if (container.hasChildren()) { - IDiffElement[] children = container.getChildren(); - for (int i = 0; i < children.length; ++i) { - ITeamNode node = findTeamNodeForResource(children[i], resource); - if (node != null) return node; - } - } - } - return null; - } - - /** - * Waits for a small amount of time to compensate for file system time stamp granularity. - */ - private void timestampGranularityHiatus() { - //JUnitTestCase.waitMsec(1500); - Util.processEventsUntil(1500); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/DummyPromptCondition.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/DummyPromptCondition.java deleted file mode 100644 index aa23a7fdd..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/DummyPromptCondition.java +++ /dev/null @@ -1,24 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * IBM - Initial implementation - ******************************************************************************/ -package org.eclipse.team.tests.ccvs.ui; - -import org.eclipse.core.resources.IResource; -import org.eclipse.team.internal.ui.IPromptCondition; - -public class DummyPromptCondition implements IPromptCondition { - public boolean needsPrompt(IResource resource) { - return false; - } - public String promptMessage(IResource resource) { - // this method should never be called - return resource.getName(); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/EclipseUITestHarnessApplication.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/EclipseUITestHarnessApplication.java deleted file mode 100644 index 0ab80b5a1..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/EclipseUITestHarnessApplication.java +++ /dev/null @@ -1,183 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.io.PrintStream; -import java.net.URL; -import java.util.ArrayList; -import java.util.List; -import java.util.Properties; - -import junit.framework.Test; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IWorkspace; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.Platform; -import org.eclipse.core.tests.harness.EclipseTestHarnessApplication; -import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.internal.Workbench; - -/** - * A test harness with UI and logging support. - * <pre> - * Supported arguments: - * -test <suite> : id of suite to run (must be plugged into extension point) - * -log <file> : specify a file for logging - * -nolog : do not write a log file - * -repeat <n> : number of iterations to run - * -ignorefirst : ignore (do not record) results from first iteration - * -purge : purge all projects from the workspace before each iteration - * <anything else> : passed verbatim to the org.eclipse.ui.workbench application - * </pre> - */ -public class EclipseUITestHarnessApplication extends EclipseTestHarnessApplication { - protected boolean purgeWorkspace; - protected boolean ignoreFirst; - protected int repeatCount; - protected LoggingTestResult logResult; - - /** - * Application entry point. - */ - public Object run(Object userArgs) throws Exception { - PrintStream logStream = System.err; - String logFilename = null; - purgeWorkspace = false; - ignoreFirst = false; - repeatCount = 1; - if (userArgs instanceof String[]) { - // parse args, no error handling - String[] args = (String[]) userArgs; - List argsList = new ArrayList(args.length); - for (int i = 0; i < args.length; ++i) { - if ("-repeat".equals(args[i])) { - repeatCount = Integer.parseInt(args[++i]); - } else if ("-ignorefirst".equals(args[i])) { - ignoreFirst = true; - } else if ("-nolog".equals(args[i])) { - logStream = null; - } else if ("-log".equals(args[i])) { - logFilename = args[++i]; - } else if ("-purge".equals(args[i])) { - purgeWorkspace = true; - } else { - argsList.add(args[i]); - } - } - userArgs = argsList.toArray(new String[argsList.size()]); - } - // setup logging - if (logFilename != null) { - File file = new File(logFilename); - logStream = new PrintStream(new BufferedOutputStream(new FileOutputStream(logFilename))); - } - logResult = new LoggingTestResult(logStream); - try { - logResult.startLog(System.currentTimeMillis(), getSDKBuildId()); - return launchWorkbench(userArgs); - } finally { - logResult.endLog(); - if (logFilename != null) logStream.close(); - } - } - - /** - * Launches the Workbench UI. - */ - protected Object launchWorkbench(final Object userArgs) throws Exception { - final Exception[] exception = new Exception[1]; - Workbench workbench = new Workbench() { - /*** this code should be kept in sync with Workbench.runEventLoop() ***/ - protected void runEventLoop() { - // Dispatch all events. - Display display = Display.getCurrent(); - while (true) { - try { - if (!display.readAndDispatch()) - break; - } catch (Throwable e) { - break; - } - } - - // Run our hook. - try { - workbenchHook(this); - } catch (Exception e) { - exception[0] = e; - } - - // Close the workbench. - close(); - } - }; - Object result = workbench.run(userArgs); - if (exception[0] != null) throw exception[0]; - return result; - } - - /** - * Callback from Workbench if it launched successfully. - */ - protected Object workbenchHook(Workbench workbench) throws Exception { - // run the underlying non-ui test launcher to locate and start the test cases - return super.run(workbench.getCommandLineArgs()); - } - - /** - * Runs the specified test. Called from the non-ui test launcher. - */ - protected void run(Test test) { - for (int i = 0; i < repeatCount; ++i) { - if (purgeWorkspace) purgeWorkspaceProjects(); - LoggingTestRunner runner = new LoggingTestRunner(); - runner.doRun(test, (i == 0 && ignoreFirst) ? null : logResult, false); - } - } - - /** - * Purges the projects in the workspace. - */ - public static void purgeWorkspaceProjects() { - IWorkspace workspace = ResourcesPlugin.getWorkspace(); - // purge all known projects from the workspace - IProject[] projects = workspace.getRoot().getProjects(); - for (int i = 0; i < projects.length; ++i) { - IProject project = projects[i]; - try { - project.delete(true, true, null); - } catch (CoreException e) { - System.err.println("Could not purge project: " + project.getName()); - } - } - } - - /** - * Gets the SDK build id. - */ - public static String getSDKBuildId() { - try { - URL url = Platform.getPluginRegistry().getPluginDescriptor("org.eclipse.sdk").getInstallURL(); - url = new URL(url, "platform.ini"); - InputStream is = url.openStream(); - try { - Properties sdkProperties = new Properties(); - sdkProperties.load(is); - String buildId = sdkProperties.getProperty("buildID"); - if (buildId != null) return buildId; - } finally { - is.close(); - } - } catch (Exception e) { - } - return "unknown"; - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/EmptyPerspective.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/EmptyPerspective.java deleted file mode 100644 index 7ba27df8d..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/EmptyPerspective.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui; - -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ - -import org.eclipse.ui.IPageLayout; -import org.eclipse.ui.IPerspectiveFactory; - -/** - * This perspective is used for testing api. It defines an initial - * layout with no parts, just an editor area. - * - * Note: originally borrowed from org.eclipse.jdt.junit.eclipse.util - */ -public class EmptyPerspective implements IPerspectiveFactory { - - /** - * The perspective id. - */ - public static final String PERSP_ID = "org.eclipse.team.tests.ccvs.ui.EmptyPerspective"; - - /** - * Constructs a new Default layout engine. - */ - public EmptyPerspective() { - super(); - } - - /** - * Defines the initial layout for a perspective. - * - * Implementors of this method may add additional views to a - * perspective. The perspective already contains an editor folder - * with <code>ID = ILayoutFactory.ID_EDITORS</code>. Add additional views - * to the perspective in reference to the editor folder. - * - * This method is only called when a new perspective is created. If - * an old perspective is restored from a persistence file then - * this method is not called. - * - * @param factory the factory used to add views to the perspective - */ - public void createInitialLayout(IPageLayout layout) { - //layout.addView( MockViewPart.ID, IPageLayout.BOTTOM, 0.5f, layout.getEditorArea() ); - } -}
\ No newline at end of file diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/FakeSelectionProvider.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/FakeSelectionProvider.java deleted file mode 100644 index ca90addca..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/FakeSelectionProvider.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui; - -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ - -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.ISelectionProvider; -import org.eclipse.jface.viewers.StructuredSelection; - -/** - * Serves up fake selections. - * - * Note: originally borrowed from org.eclipse.jdt.ui.tests.actions - */ -public class FakeSelectionProvider implements ISelectionProvider { - private Object[] fElems; - public FakeSelectionProvider(Object[] elements){ - fElems = elements; - } - - public void addSelectionChangedListener(ISelectionChangedListener listener) { - } - - public ISelection getSelection() { - return new StructuredSelection(fElems); - } - - public void removeSelectionChangedListener(ISelectionChangedListener listener) { - } - - public void setSelection(ISelection selection) { - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/ICriteria.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/ICriteria.java deleted file mode 100644 index bacd0aff1..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/ICriteria.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui; - -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ - -/** - * Generic object filter mechanism. - */ -public interface ICriteria { - /** - * Returns true if the candidate object satisfies the specified - * criteria value according to a particular algorithm. - */ - public boolean test(Object candidate, Object value); -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/LoggingTestCase.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/LoggingTestCase.java deleted file mode 100644 index 70effb4b9..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/LoggingTestCase.java +++ /dev/null @@ -1,99 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import junit.framework.Assert; -import junit.framework.TestCase; -import junit.framework.TestResult; -import org.eclipse.core.runtime.IStatus; - -public class LoggingTestCase extends TestCase { - private LoggingTestResult logResult; - private int disableLogStack; - - /** - * Creates a new logging test case. - */ - public LoggingTestCase(String name) { - super(name); - } - - /** - * Runs a test. - * @param result the result object - */ - public void run(TestResult result) { - // run the garbage collector now to improve benchmark precision - for (int i = 0; i < 4; ++i) { - System.runFinalization(); - System.gc(); - } - if (result instanceof LoggingTestResult) { - logResult = (LoggingTestResult) result; - disableLogStack = 0; - } else { - logResult = null; - disableLogStack = 1; - } - super.run(result); - } - - /** - * Marks the beginning of a new task group. - * @param groupName the name for the group - */ - protected void startGroup(String groupName) { - if (disableLogStack == 0) logResult.startGroup(groupName); - } - - /** - * Marks the ends of the active task group. - */ - protected void endGroup() { - if (disableLogStack == 0) logResult.endGroup(); - } - - /** - * Marks the beginning of a new task. - * @param taskName the name for the task - */ - protected void startTask(String taskName) { - if (disableLogStack == 0) logResult.startTask(taskName); - } - - /** - * Marks the ends of the active task. - */ - protected void endTask() { - if (disableLogStack == 0) logResult.endTask(); - } - - /** - * Disables logging until re-enabled. (this call nests) - */ - protected void disableLog() { - disableLogStack += 1; - } - - /** - * Enables logging when all previous calls to disableLog are matched. - */ - protected void enableLog() { - Assert.assertTrue(disableLogStack > 0); - disableLogStack -= 1; - Assert.assertTrue(disableLogStack != 0 || logResult != null); - } - - /** - * Prints a warning message to the log. - * @param message the message, or null - * @param error an exception with a stack trace, or null - * @param status a status code, or null - */ - protected void printWarning(String message, Throwable error, IStatus status) { - if (disableLogStack == 0) logResult.printWarning(message, error, status); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/LoggingTestResult.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/LoggingTestResult.java deleted file mode 100644 index ee4b28cb1..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/LoggingTestResult.java +++ /dev/null @@ -1,258 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import java.io.PrintStream; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Stack; -import java.util.StringTokenizer; - -import junit.framework.Assert; -import junit.framework.AssertionFailedError; -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestResult; -import junit.runner.BaseTestRunner; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.team.core.TeamException; - -public class LoggingTestResult extends TestResult { - protected Stack groupStack; - protected PerformanceTimer currentTask; - protected PrintStream logStream; - protected Stack /* of String */ elements; - protected String indent; - - /** - * Creates a logging test result. - * @param logStream the output stream, or null to disable logging - */ - public LoggingTestResult(PrintStream logStream) { - this.logStream = logStream; - this.elements = new Stack(); - this.indent = ""; - groupStack = new Stack(); - currentTask = null; - } - - /** - * Marks the beginning of a series of log entries. - */ - public void startLog(long timestamp, String sdkBuild) { - println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); - startXMLElement("log", new String[] { "timestamp", "sdkbuild" }, new String[] { - new SimpleDateFormat("dd/MMM/yyyy HH:mm:ss").format(new Date(timestamp)), - sdkBuild }); - } - - /** - * Marks the end of a series of log entries. - */ - public void endLog() { - endXMLElement(); - } - - /** - * Prints a warning message to the log file. - * @param message the message, or null - * @param error an exception with a stack trace, or null - * @param status a status code, or null - */ - public void printWarning(String message, Throwable error, IStatus status) { - printAbort("warning", message, error, status); - } - - /** - * Called by the JUnit framework when an error occurs. - * @param test the test - * @param error the exception that occurred - */ - public void addError(Test test, Throwable error) { - printAbort("error", null, error, null); - super.addError(test, error); - } - - /** - * Called by the JUnit framework when an assertion failure occurs. - * @param test the test - * @param error the exception that occurred - */ - public void addFailure(Test test, AssertionFailedError error) { - printAbort("failure", null, error, null); - super.addFailure(test, error); - } - - /** - * Called by the JUnit framework to mark the beginning of a test case. - * @param test the test - */ - public void startTest(Test test) { - if (test instanceof TestCase) { - TestCase testCase = (TestCase) test; - startXMLElement("case", new String[] { "class", "name" }, - new String[] { testCase.getClass().getName(), testCase.getName() }); - groupStack.clear(); - currentTask = null; - } - super.startTest(test); - } - - /** - * Called by the JUnit framework to mark the end of a test case. - * @param test the test - */ - public void endTest(Test test) { - if (test instanceof TestCase) { - TestCase testCase = (TestCase) test; - if (currentTask != null) endTask(); - while (! groupStack.isEmpty()) endGroup(); - endXMLElement(); - } - super.endTest(test); - } - - /** - * Marks the beginning of a new task group. - * @param groupName the name for the group - */ - public void startGroup(String groupName) { - Assert.assertNull(currentTask); - startXMLElement("group", new String[] { "name" }, new String[] { groupName }); - groupStack.push(groupName); - } - - /** - * Marks the end of the active task group. - */ - public void endGroup() { - Assert.assertNull(currentTask); - Assert.assertTrue(! groupStack.empty()); - endXMLElement(); - groupStack.pop(); - } - - /** - * Marks the beginning of a new task. - * @param taskName the name for the task - */ - public void startTask(String taskName) { - Assert.assertNull(currentTask); - startXMLElement("task", new String[] { "name" }, new String[] { taskName }); - currentTask = new PerformanceTimer(taskName); - currentTask.start(); - } - - /** - * Marks the end of the active task. - */ - public void endTask() { - Assert.assertNotNull(currentTask); - currentTask.stop(); - printXMLElement("result", new String[] { "elapsed" }, - new String[] { Integer.toString(currentTask.getTotalMillis()) }); - endXMLElement(); - currentTask = null; - } - - protected void startXMLElement(String name, String[] attributes, String[] values) { - println(formatXMLElement(name, attributes, values, false)); - elements.push(name); - indent += " "; - } - - protected void printXMLElement(String name, String[] attributes, String[] values) { - println(formatXMLElement(name, attributes, values, true)); - } - - protected String formatXMLElement(String name, String[] attributes, String[] values, boolean quickEnd) { - // XXX need to escape certain characters in attribute values - StringBuffer buffer = new StringBuffer("<"); - buffer.append(name); - if (attributes != null && values != null) { - for (int i = 0; i < attributes.length; ++i) { - buffer.append(' '); - buffer.append(attributes[i]); - buffer.append("=\""); - buffer.append(values[i]); - buffer.append('"'); - } - } - if (quickEnd) buffer.append('/'); - buffer.append('>'); - return buffer.toString(); - } - - protected void endXMLElement() { - indent = indent.substring(2); - String name = (String) elements.pop(); - println("</" + name + ">"); - } - - protected void printXMLElementData(String line) { - // XXX need to escape certain characters in element data - println(line); - } - - protected void printAbort(String type, String message, Throwable error, IStatus status) { - if (status == null && error != null) { - if (error instanceof CoreException) { - status = ((CoreException) error).getStatus(); - } else if (error instanceof TeamException) { - status = ((TeamException) error).getStatus(); - } - } - if (message == null && error != null) { - message = error.getMessage(); - if (message == null) { - message = error.getClass().getName(); - } - } - if (message == null && status != null) { - message = status.getMessage(); - } - if (message == null) message = ""; - startXMLElement("abort", new String[] { "type", "message" }, - new String[] { type, message }); - if (status != null) printStatus(status); - if (error != null) printStackTrace(error); - endXMLElement(); - } - - protected void printStatus(IStatus status) { - startXMLElement("status", new String[] { "severity", "code", "plugin", "message" }, - new String[] { - Integer.toString(status.getSeverity()), - Integer.toString(status.getCode()), - status.getPlugin(), status.getMessage() }); - if (status.isMultiStatus()) { - IStatus[] children = status.getChildren(); - for (int i = 0; i < children.length; ++i) { - printStatus(children[i]); - } - } - endXMLElement(); - } - - protected void printStackTrace(Throwable error) { - // XXX need a better way to serialize the stack trace - String trace = BaseTestRunner.getFilteredTrace(error); - StringTokenizer tok = new StringTokenizer(trace, "\r\n"); - if (! tok.hasMoreTokens()) return; // empty trace? - tok.nextToken(); // skip message line - startXMLElement("trace", null, null); - while (tok.hasMoreTokens()) { - String frame = tok.nextToken(); - printXMLElementData(frame); - } - endXMLElement(); - } - - protected void println(String line) { - if (logStream != null) logStream.println(indent + line); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/LoggingTestRunner.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/LoggingTestRunner.java deleted file mode 100644 index 2148316f8..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/LoggingTestRunner.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import junit.framework.Test; -import junit.framework.TestResult; -import junit.textui.TestRunner; - -public class LoggingTestRunner extends TestRunner { - protected LoggingTestResult logResult; - - protected TestResult createTestResult() { - TestResult result = logResult; - logResult = null; - if (result == null) result = new LoggingTestResult(null); - return result; - } - - /** - * Runs a logging test suite. - * @param suite the test suite - * @param logResult the result object to use, or null to create a new one - * @param wait if true, pauses between test runs - */ - public void doRun(Test suite, LoggingTestResult logResult, boolean wait) { - this.logResult = logResult; - super.doRun(suite, wait); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/PerformanceTimer.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/PerformanceTimer.java deleted file mode 100644 index 1a12e6508..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/PerformanceTimer.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui; - -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ - -public class PerformanceTimer { - private long startTime; - private int totalMillis; - private String name; - - /** - * Creates a timer, initially not running. - */ - public PerformanceTimer(String name) { - this.totalMillis = 0; - this.name = name; - } - - /** - * Starts the timer. Timer must not be running. - */ - public void start() { - startTime = System.currentTimeMillis(); - } - - /** - * Stops the timer. Timer must be running. - */ - public void stop() { - totalMillis += System.currentTimeMillis() - startTime; - startTime = 0; - } - - /** - * Returns the total number of milliseconds elapsed over all measured intervals. - */ - public int getTotalMillis() { - return totalMillis; - } - - /** - * Returns the name of this timer. - */ - public String getName() { - return name; - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/SequenceGenerator.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/SequenceGenerator.java deleted file mode 100644 index e8e5c71e1..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/SequenceGenerator.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui; - -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ - -import java.util.Random; - -/** - * Encapsulates algorithms and state for generating deterministic sequences. - * The sequence of numbers generated will always follow the same pattern, - * regardless of the time, place, or platform. - */ -public class SequenceGenerator { - private static long globalSeqNum = System.currentTimeMillis() * 1000; - private final Random random; - private int uniqueInt; - - /** - * Constructs a new sequence generator with a known seed. - */ - public SequenceGenerator() { - random = new Random(3141592653589793238L); // a known constant - uniqueInt = 1000000; - } - - /** - * Returns a globally unique long integer. - */ - public static long nextGloballyUniqueLong() { - return globalSeqNum++; - } - - /** - * Returns a unique 7-digit integer. - */ - public int nextUniqueInt() { - return uniqueInt++; - } - - /** - * Returns a pseudo-random integer between 0 and n-1. - * @see Random#nextInt(int) - */ - public int nextInt(int n) { - return random.nextInt(n); - } - - /** - * Returns a pseudo-random real number following a gaussian distribution. - * @see Random#nextGaussian() - */ - public double nextGaussian() { - return random.nextGaussian(); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/Util.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/Util.java deleted file mode 100644 index a5a85defc..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/Util.java +++ /dev/null @@ -1,789 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui; - -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.List; -import java.util.zip.ZipException; -import java.util.zip.ZipFile; - -import junit.framework.Assert; -import org.eclipse.compare.structuremergeviewer.DiffNode; -import org.eclipse.compare.structuremergeviewer.IDiffContainer; -import org.eclipse.compare.structuremergeviewer.IDiffElement; -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IProjectDescription; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IStatus; -import org.eclipse.core.runtime.NullProgressMonitor; -import org.eclipse.core.runtime.Path; -import org.eclipse.jface.dialogs.ErrorDialog; -import org.eclipse.jface.wizard.IWizard; -import org.eclipse.jface.wizard.WizardDialog; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Widget; -import org.eclipse.team.internal.ccvs.core.CVSStatus; -import org.eclipse.ui.internal.dialogs.InternalErrorDialog; -import org.eclipse.ui.wizards.datatransfer.ImportOperation; -import org.eclipse.ui.wizards.datatransfer.ZipFileStructureProvider; - -/** - * Provides helpers for: - * <ul> - * <li>Resource manipulation</li> - * <li>Diff trees</li> - * <li>UI automation</li> - * <li>Parallel development simulation</li> - * </ul> - * - * Note: This class is referenced from the VCM 1.0 performance tests. - */
public class Util { - /*** RESOURCE MANIPULATION SUPPORT ***/ - - /** - * Gets a handle for a project of a given name. - * @param name the project name - * @return the project handle - */ - public static IProject getProject(String name) throws CoreException { - return ResourcesPlugin.getWorkspace().getRoot().getProject(name); - } - - /** - * Creates a new project. - * @param name the project name - * @return the project handle - */ - public static IProject createProject(String name) throws CoreException { - IProject project = getProject(name); - if (!project.exists()) project.create(null); - if (!project.isOpen()) project.open(null); - return project; - } - - /** - * Deletes a project. - * @param project the project - */ - public static void deleteProject(IProject project) throws CoreException { - project.delete(false /*force*/, null); - } - - /** - * Deletes a file and prunes empty containing folders. - * @param file the file to delete - */ - public static void deleteFileAndPrune(IFile file) throws CoreException { - file.delete(false /*force*/, null); - IContainer container = file.getParent(); - while (container != null && container instanceof IFolder && - isFolderEmpty((IFolder) container)) { - deleteFolder((IFolder) container); - container = container.getParent(); - } - } - - /** - * Deletes a folder. - */ - public static void deleteFolder(IFolder folder) throws CoreException { - try { - folder.delete(false /*force*/, null); - } catch (CoreException e) { - IStatus status = e.getStatus(); - // ignore errors caused by attempting to delete folders that CVS needs to have around - if (findStatusByCode(status, CVSStatus.FOLDER_NEEDED_FOR_FILE_DELETIONS) == null) { - throw e; - } - } - } - - /** - * Finds an IStatus instance in a multi-status by status code. - */ - public static IStatus findStatusByCode(IStatus status, int code) { - if (status.getCode() == code) return status; - IStatus[] children = status.getChildren(); - for (int i = 0; i < children.length; i++) { - IStatus found = findStatusByCode(children[i], code); - if (found != null) return found; - } - return null; - } - - /** - * Creates a uniquely named project. - * @param prefix a string prepended to the generated name - * @return the new project - */ - public static IProject createUniqueProject(String prefix) throws CoreException { - return createProject(makeUniqueName(null, prefix, null)); - } - - /** - * Creates a uniquely named file in the parent folder or project with random contents. - * @param gen the sequence generator - * @param parent the parent IFolder or IProject for the new file - * @param meanSize the mean size of file to create (in bytes) - * @param variance 69% of files with be within this amount of the mean - * @param probBinary the probability of a new file being binary as a percentage - * @return the new file - */ - public static IFile createUniqueFile(SequenceGenerator gen, IContainer parent, - int meanSize, int variance, int probBinary) throws IOException, CoreException { - int fileSize; - do { - fileSize = (int) Math.abs(gen.nextGaussian() * variance + meanSize); - } while (fileSize > meanSize + variance * 4); // avoid huge files - - ByteArrayOutputStream os = new ByteArrayOutputStream(); - String fileName; - if (gen.nextInt(100) < probBinary) { - fileName = makeUniqueName(gen, "file", "class"); // binary - writeRandomBytes(gen, os, fileSize); - } else { - fileName = makeUniqueName(gen, "file", "txt"); // text - writeRandomText(gen, os, fileSize); - } - IFile file = parent.getFile(new Path(fileName)); - file.create(new ByteArrayInputStream(os.toByteArray()), true, null); - os.close(); - return file; - } - - /** - * Creates a uniquely named folder in the parent folder. - * @param gen the sequence generator - * @param parent the parent IFolder or IProject for the new folder - * @return the new folder - */ - public static IFolder createUniqueFolder(SequenceGenerator gen, IContainer parent) throws CoreException { - IFolder folder = parent.getFolder(new Path(Util.makeUniqueName(gen, "folder", null))); - folder.create(false /*force*/, true /*local*/, null); - return folder; - } - - /** - * Renames a resource. - * The resource handle becomes invalid. - * @param resource the existing resource - * @param newName the new name for the resource - */ - public static void renameResource(IResource resource, String newName) throws CoreException { - switch (resource.getType()) { - case IResource.PROJECT: { - IProject project = (IProject) resource; - IProjectDescription desc = project.getDescription(); - desc.setName(newName); - project.move(desc, false /*force*/, true /*keepHistory*/, null); - } break; - case IResource.FOLDER: { - try { - resource.move(new Path(newName), false /*force*/, null); - } catch (CoreException e) { - IStatus status = e.getStatus(); - // ignore errors caused by attempting to delete folders that CVS needs to have around - if (findStatusByCode(status, CVSStatus.FOLDER_NEEDED_FOR_FILE_DELETIONS) == null) { - throw e; - } - } - } break; - default: - resource.move(new Path(newName), false /*force*/, null); - break; - } - } - - /** - * Modified a resource. - * @param gen the sequence generator - * @param file the file to modify - */ - public static void modifyFile(SequenceGenerator gen, IFile file) - throws IOException, CoreException { - ByteArrayOutputStream os = new ByteArrayOutputStream(); - try { - InputStream is = file.getContents(true); - try { - byte[] buffer = new byte[8192]; - int rsize; - boolean changed = false; - while ((rsize = is.read(buffer)) != -1) { - double gaussian; - do { - gaussian = gen.nextGaussian() * 0.5; // large changes are less likely than small ones - } while (gaussian > 1.0 || gaussian < -1.0); - int changeSize = (int) (gaussian * rsize); - changed = changed || changeSize != 0; - os.write(buffer, 0, changeSize < 0 ? - changeSize : rsize); // shrink file - writeRandomText(gen, os, changeSize); // enlarge file - } - if (! changed) os.write('!'); // make sure we actually did change the file - file.setContents(new ByteArrayInputStream(os.toByteArray()), false /*force*/, true /*keepHistory*/, null); - } finally { - is.close(); - } - } finally { - os.close(); - } - } - - /** - * Creates a unique name. - * Ensures that a deterministic sequence of names is generated for all files - * and folders within a project, though not across sessions. - * - * @param gen the generator, or null if this name is to be globally unique - * @param prefix a string prepended to the generated name - * @param extension the file extension not including the period, null if none - * @return the new name - */ - public static String makeUniqueName(SequenceGenerator gen, String prefix, String extension) - throws CoreException { - StringBuffer name = new StringBuffer(prefix); - name.append('-'); - if (gen == null) { - name.append(SequenceGenerator.nextGloballyUniqueLong()); - } else { - name.append(gen.nextUniqueInt()); - } - if (extension != null) { - name.append('.'); - name.append(extension); - } - return name.toString(); - } - - /** - * Imports a .zip file into a container's root folder. - * @param container the container - * @param file the path of the .zip file - */ - public static void importZip(IContainer container, File file) - throws IOException, ZipException, InterruptedException, InvocationTargetException { - ZipFile zipFile = new ZipFile(file); - ZipFileStructureProvider provider = new ZipFileStructureProvider(zipFile); - ImportOperation importOperation = new ImportOperation(container.getFullPath(), - provider.getRoot(), provider, null); - importOperation.setOverwriteResources(true); // don't ask - importOperation.run(new NullProgressMonitor()); - Assert.assertTrue(importOperation.getStatus().isOK()); - } - - /** - * Writes random text to an output stream. - * @param gen the sequence generator - */ - public static void writeRandomText(SequenceGenerator gen, OutputStream os, int count) throws IOException { - while (count-- > 0) { - int c = gen.nextInt(99); - os.write((c >= 95) ? '\n' : c + ' '); - } - } - - /** - * Writes random bytes to an output stream. - * @param gen the sequence generator - */ - public static void writeRandomBytes(SequenceGenerator gen, OutputStream os, int count) throws IOException { - while (count-- > 0) { - os.write(gen.nextInt(256)); - } - } - - /** - * Creates a random folder deeply below the root folder. - * @param gen the sequence generator - * @param root the root IFolder or IProject for the operation - * @return the new folder - */ - public static IFolder createRandomDeepFolder(SequenceGenerator gen, IContainer root) throws CoreException { - IContainer container = pickRandomDeepContainer(gen, root); - for (;;) { - IFolder folder = createUniqueFolder(gen, container); - container = folder; - // 12.5% chance of creating a nested folder - if (gen.nextInt(8) != 0) return folder; - } - } - - /** - * Creates several random files deeply below the root folder. - * @param gen the sequence generator - * @param root the root IFolder or IProject for the operation - * @param count the number of files to create - * @param meanSize the mean size of file to create (in bytes) - * @param probBinary the probability of a new file being binary as a percentage - */ - public static void createRandomDeepFiles(SequenceGenerator gen, IContainer root, int count, - int meanSize, int variance, int probBinary) throws IOException, CoreException { - while (count-- > 0) { - createUniqueFile(gen, pickRandomDeepContainer(gen, root), meanSize, variance, probBinary); - } - } - - /** - * Deletes several random files deeply below the root folder. - * @param gen the sequence generator - * @param root the root IFolder or IProject for the operation - * @param count the number of files to delete - */ - public static void deleteRandomDeepFiles(SequenceGenerator gen, IContainer root, int count) throws CoreException { - while (count-- > 0) { - IFile file = pickRandomDeepFile(gen, root); - if (file == null) break; - deleteFileAndPrune(file); - } - } - - /** - * Modifies several random files deeply below the root folder. - * @param gen the sequence generator - * @param root the root IFolder or IProject for the operation - * @param count the number of files to modify - */ - public static void modifyRandomDeepFiles(SequenceGenerator gen, IContainer root, int count) - throws IOException, CoreException { - // perhaps we can add a parameter for the "magnitude" of the change - while (count-- > 0) { - IFile file = pickRandomDeepFile(gen, root); - if (file == null) break; - modifyFile(gen, file); - } - } - - /** - * Touches several random files deeply below the root folder. - * @param gen the sequence generator - * @param root the root IFolder or IProject for the operation - * @param count the number of files to touch - */ - public static void touchRandomDeepFiles(SequenceGenerator gen, IContainer root, int count) throws CoreException { - while (count-- > 0) { - IFile file = pickRandomDeepFile(gen, root); - if (file == null) break; - file.touch(null); - } - } - - /** - * Renames several random files deeply below the root folder. - * @param gen the sequence generator - * @param root the root IFolder or IProject for the operation - * @param count the number of files to touch - */ - public static void renameRandomDeepFiles(SequenceGenerator gen, IContainer root, int count) throws CoreException { - IProject project = root.getProject(); - while (count-- > 0) { - IFile file = pickRandomDeepFile(gen, root); - if (file == null) break; - renameResource(file, makeUniqueName(gen, "file", file.getFileExtension())); - } - } - - /** - * Picks a random file from the parent folder or project. - * @param gen the sequence generator - * @param parent the parent IFolder or IProject for the operation - * @return the file that was chosen, or null if no suitable files - */ - public static IFile pickRandomFile(SequenceGenerator gen, IContainer parent) throws CoreException { - IResource[] members = filterResources(parent.members()); - for (int size = members.length; size != 0; --size) { - int elem = gen.nextInt(size); - if (members[elem] instanceof IFile) return (IFile) members[elem]; - System.arraycopy(members, elem + 1, members, elem, size - elem - 1); - } - return null; - } - - /** - * Picks a random folder from the parent folder or project. - * @param gen the sequence generator - * @param parent the parent IFolder or IProject for the operation - * @return the folder, or null if no suitable folders - */ - public static IFolder pickRandomFolder(SequenceGenerator gen, IContainer parent) throws CoreException { - IResource[] members = filterResources(parent.members()); - for (int size = members.length; size != 0; --size) { - int elem = gen.nextInt(size); - if (members[elem] instanceof IFolder) return (IFolder) members[elem]; - System.arraycopy(members, elem + 1, members, elem, size - elem - 1); - } - return null; - } - - /** - * Picks a random file deeply from the root folder or project. - * @param gen the sequence generator - * @param root the root IFolder or IProject for the operation - * @return the file that was chosen, or null if no suitable files - */ - public static IFile pickRandomDeepFile(SequenceGenerator gen, IContainer root) throws CoreException { - IResource[] members = filterResources(root.members()); - for (int size = members.length; size != 0; --size) { - int elem = gen.nextInt(size); - IResource resource = members[elem]; - if (resource instanceof IFile) return (IFile) resource; - if (resource instanceof IFolder) { - IFile file = pickRandomDeepFile(gen, (IFolder) resource); - if (file != null) return file; - } - System.arraycopy(members, elem + 1, members, elem, size - elem - 1); - } - return null; - } - - /** - * Picks a random folder deeply from the root folder or project. - * May pick the project's root container. - * @param gen the sequence generator - * @param root the root IFolder or IProject for the operation - * @return the container that was chosen, never null - */ - public static IContainer pickRandomDeepContainer(SequenceGenerator gen, IContainer root) throws CoreException { - if (gen.nextInt(6) == 0) { - IResource[] members = filterResources(root.members()); - for (int size = members.length; size != 0; --size) { - int elem = gen.nextInt(size); - IResource resource = members[elem]; - if (resource instanceof IFolder) { - return pickRandomDeepContainer(gen, (IFolder) resource); - } - System.arraycopy(members, elem + 1, members, elem, size - elem - 1); - } - } - Assert.assertTrue(isValidContainer(root)); - return root; - } - - /** - * Returns true if the folder does not contain any real files. - */ - public static boolean isFolderEmpty(IFolder folder) throws CoreException { - IResource[] members = folder.members(); - for (int i = 0; i < members.length; ++i) { - if (isValidFile(members[i]) || isValidFolder(members[i])) return false; - } - return true; - } - - /** - * Returns true iff file is a valid IFile (that should not be ignored). - */ - public static boolean isValidFile(IResource file) throws CoreException { - String name = file.getName(); - return file instanceof IFile - && ! file.isPhantom() - && ! name.equals(".classpath") - && ! name.equals(".project") - && ! name.equals(".vcm_meta"); - } - - /** - * Returns true iff folder is a valid IFolder (that should not be ignored). - */ - public static boolean isValidFolder(IResource folder) throws CoreException { - String name = folder.getName(); - return folder instanceof IFolder - && ! folder.isPhantom() - && ! name.equals("CVS") - && ! name.equals("bin"); - } - - /** - * Returns true iff container is a valid IFolder or IProject (that should not be ignored). - */ - public static boolean isValidContainer(IResource container) throws CoreException { - return container instanceof IProject || isValidFolder(container); - } - - /** - * Returns true iff resource is a valid IFile, IFolder or IProject (that should not be ignored). - */ - public static boolean isValidResource(IResource resource) throws CoreException { - return isValidFile(resource) || isValidContainer(resource); - } - - /** - * Filters and sorts an array of resources to ensure deterministic behaviour across - * sessions. The general idea is to guarantee that given a known sequence of - * pseudo-random numbers, we will always pick the same sequence of files and - * folders each time we repeat the test. - */ - public static IResource[] filterResources(IResource[] resources) throws CoreException { - List list = new ArrayList(resources.length); - for (int i = 0; i < resources.length; ++i) { - if (isValidResource(resources[i])) list.add(resources[i]); - } - if (list.size() != resources.length) { - resources = (IResource[]) list.toArray(new IResource[list.size()]); - } - Arrays.sort(resources, new Comparator() { - public int compare(Object a, Object b) { - return ((IResource) a).getName().compareTo(((IResource) b).getName()); - } - }); - return resources; - } - - /*** DIFF SUPPORT ***/ - - public static boolean isEmpty(IDiffContainer node) { - if (node == null) return true; - if (node.getKind() != 0) return false; - IDiffElement[] children = node.getChildren(); - for (int i = 0; i < children.length; i++) { - if (!isEmpty(children[i])) return false; - } - return true; - } - public static boolean isEmpty(IDiffElement element) { - if (element == null) return true; - if (element.getKind() != 0) return false; - if (element instanceof IDiffContainer) { - IDiffElement[] children = ((DiffNode)element).getChildren(); - for (int i = 0; i < children.length; i++) { - if (!isEmpty(children[i])) return false; - } - } - return true; - } - - /*** UI SUPPORT ***/ - - /** - * Opens the specified wizard, then notifies the waiter. - * The WizardDialog instance is passed as argument to notify() in the waiter. - */ - public static void waitForWizardToOpen(Shell parent, IWizard wizard, final Waiter waiter) { - WizardDialog dialog = new WizardDialog(parent, wizard) { - public int open() { - // create the window's controls - create(); - // hook into the event loop so we get called back when the wizard is up and running - final Display display = getContents().getDisplay(); - final WizardDialog dialog = this; - display.asyncExec(new Runnable() { - public void run() { - while (display.readAndDispatch()); // process any other pending messages first - waiter.notify(dialog); - } - }); - // call open (does not create the window's controls a second time) - return super.open(); - } - }; - dialog.open(); - } - - /** - * Notifies the waiter when a Shell matching the specified criteria opens. - * The Shell instance is passed as argument to notify() in the waiter. - * - * @param display the root display - * @param pollingPeriod the number of milliseconds to wait between polls - * @param value a value used for matching - * @param criteria a strategy for matching the controls with a value, - * or null to match any Shell. - * @param waiter the waiter to be notified - */ - public static void waitForShellToOpen(final Display display, final int pollingPeriod, - final Object value, final ICriteria criteria, final Waiter waiter) { - final Runnable hook = new Runnable() { - public void run() { - if (display.isDisposed()) return; - Shell[] shells = display.getShells(); - for (int i = 0; i < shells.length; ++i) { - Shell shell = shells[i]; - if (criteria != null && ! criteria.test(shell, value)) continue; - if (! waiter.notify(shell)) return; - } - // poll again as soon as possible - if (waiter.keepWaiting()) { - display.timerExec(pollingPeriod, this); - } - } - }; - hook.run(); - } - - - /** - * Installs a watchdog for JFace error dialogs for the current display. - * The Dialog instance is passed as argument to notify() in the waiter. - * Recognized dialogs: - * - ErrorDialog - * - InternalErrorDialog - * - * @param display the root display - * @param pollingPeriod the number of milliseconds to wait between polls - * @param waiter the waiter to be notified - */ - public static void waitForErrorDialog(Display display, int pollingPeriod, final Waiter waiter) { - ICriteria criteria = new ICriteria() { - public boolean test(Object candidate, Object value) { - Shell shell = (Shell) candidate; - if (shell.isDisposed()) return false; - Object data = shell.getData(); - if (data == null) return false; - return data instanceof ErrorDialog || data instanceof InternalErrorDialog; - } - }; - waitForShellToOpen(display, pollingPeriod, null, criteria, new Waiter() { - public boolean keepWaiting() { - return waiter.keepWaiting(); - } - - public boolean notify(Object object) { - return waiter.notify(((Shell) object).getData()); - } - }); - } - - /** - * Finds a Control in a Composite hierarchy matching the specified criteria. - * - * @param root the root of the hierarchy to search - * @param clazz the Class representing the precise type of Control to find - * @param value a value used for matching - * @param criteria a strategy for matching the controls with a value, - * or null to match anything of the right class. - * @return the first matching Control, or null if none found. - */ - public static Control findControl(Composite root, Class clazz, Object value, ICriteria criteria) { - if (clazz.isAssignableFrom(root.getClass())) { - if (criteria == null || criteria.test(root, value)) return root; - } - Control[] children = root.getChildren(); - for (int i = 0; i < children.length; ++i) { - final Control candidate = children[i]; - if (candidate instanceof Composite) { - Control c = findControl((Composite) candidate, clazz, value, criteria); - if (c != null) return c; - } else { - if (clazz.isAssignableFrom(candidate.getClass())) { - if (criteria == null || criteria.test(candidate, value)) return candidate; - } - } - } - return null; - } - - /** - * Finds a Control in a Composite hierarchy with the specified text string. - * Note: clazz must specify a Control subclass that defines getText() - * - * @param root the root of the hierarchy to search - * @param clazz the Class representing the precise type of Control to find - * @param text the text string to find - * @return the first matching Control, or null if none found. - */ - public static Control findControlWithText(Composite root, Class clazz, String text) { - return findControl(root, clazz, text, new ICriteria() { - public boolean test(Object control, Object value) { - // getText is only defined on certain subclasses of Composite - // so we must use reflection to find the method - try { - Method m = control.getClass().getMethod("getText", new Class[0]); - String text = (String) m.invoke(control, new Object[0]); - return value.equals(stripMnemonicEscapes(text)); - } catch (Exception e) { - e.printStackTrace(); - Assert.fail("Could not invoke method getText()"); - } - return false; - } - }); - } - - /** - * Posts a fake event to the queue. - * Fills in the event type and widget fields. - * @param event the Event - */ - public static void postEvent(final Widget widget, final int eventType, final Event event) { - Display display = widget.getDisplay(); - event.type = eventType; - event.widget = widget; - display.asyncExec(new Runnable() { - public void run() { - widget.notifyListeners(eventType, event); - } - }); - } - - /** - * Strips mnemonic escapes from a text label. - */ - public static String stripMnemonicEscapes(String label) { - StringBuffer buf = new StringBuffer(); - int length = label.length(); - for (int i = 0; i < length; ++i) { - char c = label.charAt(i); - if (c == '&') { - i += 1; - if (i < length) c = label.charAt(i); - } - buf.append(c); - } - return buf.toString(); - } - - /** - * Process pending events for the current display, until at least the - * specified number of milliseconds elapses. - */ - public static void processEventsUntil(int hiatus) { - Display display = Display.getCurrent(); - Assert.assertNotNull(display); - final boolean done[] = new boolean[] { hiatus == 0 }; - if (hiatus != 0) display.timerExec(hiatus, new Runnable() { - public void run() { done[0] = true; } - }); - for (;;) { - while (display.readAndDispatch()); - if (done[0]) return; - display.sleep(); - } - } - - /** - * Process pending events for the current display, until resumed by the user. - * Very useful for inspecting intermediate results while debugging. - */ - public static void processEventsUntilResumed(String title) { - Display display = Display.getCurrent(); - Assert.assertNotNull(display); - Shell shell = new Shell(display, SWT.CLOSE); - shell.setText("Close me to resume: " + title); - shell.setBounds(0, 0, 500, 30); - shell.open(); - while (! shell.isDisposed()) { - while (! display.readAndDispatch()) display.sleep(); - } - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/Waiter.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/Waiter.java deleted file mode 100644 index c6cd88e12..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/Waiter.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui; - -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ - - -/** - * Abstract listener used for the generic problem of waiting for - * something to happen and retrieving some related information. - * e.g. Waiting for a window with a given title to open and getting its handle. - */ -public abstract class Waiter { - /** - * Called when the desired event has occurred. - * @param object an object related to the event, type depends on the context - * @return true to keep waiting, otherwise false - */ - public abstract boolean notify(Object object); - - /** - * Called after each unsuccessful poll for the event. - * @return true to keep waiting, otherwise false - */ - public boolean keepWaiting() { - return true; - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/AllTests.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/AllTests.java deleted file mode 100644 index 6a3fcb522..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/AllTests.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.benchmark; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import junit.framework.Test; -import junit.framework.TestSuite; - -public class AllTests extends TestSuite { - public static Test suite() { - TestSuite suite = new TestSuite(); - suite.addTestSuite(SyncTests.class); - suite.addTestSuite(WorkflowTests.class); - //suite.addTestSuite(CommandTests.class); - return new BenchmarkTestSetup(suite); - } - - public AllTests(String name) { - super(name); - } - public AllTests() { - super(); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/BenchmarkTestSetup.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/BenchmarkTestSetup.java deleted file mode 100644 index 6b1c46260..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/BenchmarkTestSetup.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.benchmark; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import java.io.File; -import java.io.IOException; -import java.net.URL; - -import junit.framework.Test; -import org.eclipse.core.runtime.IPluginDescriptor; -import org.eclipse.core.runtime.IPluginRegistry; -import org.eclipse.core.runtime.Platform; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; - -public class BenchmarkTestSetup extends CVSTestSetup { - public static final File BIG_ZIP_FILE; - public static final File SMALL_ZIP_FILE; - public static final File TINY_ZIP_FILE; - - // Static initializer for constants - static { - try { - BIG_ZIP_FILE = getTestFile("benchmarkBig.zip"); - SMALL_ZIP_FILE = getTestFile("benchmarkSmall.zip"); - TINY_ZIP_FILE = getTestFile("benchmarkTiny.zip"); - } catch (IOException e) { - throw new Error(e.getMessage()); - } - } - - public static File getTestFile(String name) throws IOException { - IPluginRegistry registry = Platform.getPluginRegistry(); - IPluginDescriptor descriptor = registry.getPluginDescriptor("org.eclipse.team.tests.cvs.core"); - URL baseURL = descriptor.getInstallURL(); - URL url = new URL(baseURL, "resources/BenchmarkTest/" + name); - url = Platform.asLocalURL(url); - if (url.getProtocol().equals("file")) { - return new File(url.getFile()).getAbsoluteFile(); - } - throw new IOException("Cannot find test file: " + name); - } - - public BenchmarkTestSetup(Test test) { - super(test); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/CommandTests.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/CommandTests.java deleted file mode 100644 index cf734b26e..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/CommandTests.java +++ /dev/null @@ -1,231 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.benchmark; - -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; -import java.util.TreeSet; - -import junit.framework.Test; -import junit.framework.TestSuite; -import org.eclipse.core.resources.IContainer; -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.IResourceVisitor; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.Path; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.CVSTag; -import org.eclipse.team.internal.ccvs.core.client.Command.KSubstOption; -import org.eclipse.team.tests.ccvs.core.CommandLineCVSClient; -import org.eclipse.team.tests.ccvs.core.EclipseCVSClient; -import org.eclipse.team.tests.ccvs.core.ICVSClient; -import org.eclipse.team.tests.ccvs.ui.CVSUITestCase; -import org.eclipse.team.tests.ccvs.ui.Util; - -public class CommandTests extends CVSUITestCase { - private String baseName; - private IProject referenceProject; - private IProject eclipseProject; - private IProject uiProject; - - public CommandTests(String name) { - super(name); - } - public CommandTests() { - super(""); - } - public static Test suite() { - return new BenchmarkTestSetup(new TestSuite(CommandTests.class)); - } - - public void setUp() throws Exception { - super.setUp(); - baseName = Util.makeUniqueName(null, getName(), null); - referenceProject = Util.createProject(baseName + "-reference"); - eclipseProject = Util.createProject(baseName + "-eclipse"); - uiProject = Util.createProject(baseName); - } - - public void testImportAddCommitCheckout() throws Throwable { - // import a project using each client - new ComparativeTest("import/add/commit big project") { - protected void runCommandTest(final IContainer localRoot, ICVSClient client) throws Exception { - // use the import command to create a new module - IFolder folder = localRoot.getFolder(new Path("empty_folder")); - folder.create(false /*force*/, true /*local*/, null); - execute(client, "import empty module", folder, "import", - new String[] { }, - new String[] { "-m", "initial import" }, - new String[] { localRoot.getName(), "vendor", "start" }); - folder.delete(false /*force*/, null); - - // checkout the project - localRoot.delete(false /*force*/, null); - execute(client, "checkout module", localRoot.getParent(), "co", - new String[] { }, - new String[] { }, - new String[] { localRoot.getName() }); - - // prepare contents - prepareContents(localRoot); - - // determine the set of files and folders to be added - final Map /* from KSubstOption to String */ files = new HashMap(); - final Set /* of String */ folders = new TreeSet(); - final int trim = localRoot.getProjectRelativePath().segmentCount(); - localRoot.accept(new IResourceVisitor() { - public boolean visit(IResource resource) throws CoreException { - if (! resource.equals(localRoot)) { - String name = resource.getProjectRelativePath().removeFirstSegments(trim).toString(); - if (resource.getType() == IResource.FILE) { - KSubstOption ksubst = KSubstOption.fromFile((IFile) resource); - Set set = (Set) files.get(ksubst); - if (set == null) { - set = new HashSet(); - files.put(ksubst, set); - } - set.add(name); - } else { - folders.add(name); - } - } - return true; - } - }, IResource.DEPTH_INFINITE, false); - - // add all folders - if (!folders.isEmpty()) { - executeInParts(client, "add folders", localRoot, "add", - new String[] { }, - new String[] { }, - (String[])folders.toArray(new String[folders.size()])); - } - // add all files - for (Iterator it = files.entrySet().iterator(); it.hasNext();) { - Map.Entry entry = (Map.Entry) it.next(); - KSubstOption ksubst = (KSubstOption) entry.getKey(); - Set set = (Set) entry.getValue(); - executeInParts(client, "add files (" + ksubst.getShortDisplayText() + ")", localRoot, "add", - new String[] { }, - new String[] { ksubst.toString() }, - (String[])set.toArray(new String[set.size()])); - } - - // commit everything - execute(client, "commit module", localRoot, "ci", - new String[] { }, - new String[] { "-m", "dummy message" }, - new String[] { }); - } - protected void runUITest(IContainer localRoot) throws Exception { - prepareContents(localRoot); - actionShareProject(uiProject); - syncCommitResources(new IResource[] { uiProject }, null, "initial"); - } - private void prepareContents(IContainer localRoot) throws Exception { - Util.importZip(localRoot, BenchmarkTestSetup.BIG_ZIP_FILE); - } - }.run(); - - // check it out using each client - new ComparativeTest("checkout big project") { - protected void runCommandTest(IContainer localRoot, ICVSClient client) throws Exception { - execute(client, "checkout module", localRoot.getParent(), "co", - new String[] { }, - new String[] { "-P" }, - new String[] { localRoot.getName() }); - } - protected void runUITest(IContainer localRoot) throws Exception { - actionCheckoutProjects(new String[] { localRoot.getName() }, new CVSTag[] { CVSTag.DEFAULT }); - } - protected void setUp(IContainer localRoot) throws Exception { - // delete then recreate the container - IProject project = (IProject) localRoot; - Util.deleteProject(project); - project.create(null); - project.open(null); - // delete the .project file (avoid .project is in the way error) - IFile file = project.getFile(".project"); - file.delete(false /*force*/, null); - } - }.run(); - } - - protected abstract class ComparativeTest { - private String name; - public ComparativeTest(String name) { - this.name = name; - } - public void run() throws Exception { - startGroup(name); - - startGroup("command line client"); - setUp(referenceProject); - runCommandTest(referenceProject, CommandLineCVSClient.INSTANCE); - tearDown(referenceProject); - endGroup(); - - startGroup("eclipse client"); - setUp(eclipseProject); - runCommandTest(eclipseProject, EclipseCVSClient.INSTANCE); - tearDown(eclipseProject); - endGroup(); - - startGroup("user interface"); - setUp(uiProject); - runUITest(uiProject); - tearDown(uiProject); - endGroup(); - - endGroup(); - } - protected abstract void runCommandTest(IContainer localRoot, ICVSClient client) throws Exception ; - protected abstract void runUITest(IContainer localRoot) throws Exception; - protected void setUp(IContainer localRoot) throws Exception { - } - protected void tearDown(IContainer localRoot) throws Exception { - } - protected void execute(ICVSClient client, String taskname, - IContainer localRoot, String command, - String[] globalOptions, String[] localOptions, String[] arguments) throws CVSException { - // The execution time for the client will include overhead associated with - // computing the command to be run and cleaning up Eclipse state once it has - // completed, including notifying resource delta listener. Since all clients - // in the Eclipse environment are subject to this overhead, the theory is that - // it will be a constant factor that we can neglect. - startTask(taskname); - client.executeCommand(testRepository, localRoot, command, globalOptions, localOptions, arguments); - endTask(); - } - protected void executeInParts(ICVSClient client, String taskname, - IContainer localRoot, String command, - String[] globalOptions, String[] localOptions, String[] arguments) throws CVSException { - // There are problems executing commands with too many arguments - // so we have to break them up into chunks. - startTask(taskname); - int i = 0; - do { - int len = Math.min(200, arguments.length - i); - String[] args; - if (i == 0 && len == arguments.length) { - args = arguments; - } else { - args = new String[len]; - System.arraycopy(arguments, i, args, 0, len); - } - client.executeCommand(testRepository, localRoot, command, globalOptions, localOptions, args); - i += len; - } while (arguments.length - i > 0); - endTask(); - } - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/SyncTests.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/SyncTests.java deleted file mode 100644 index 04d56f804..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/SyncTests.java +++ /dev/null @@ -1,112 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.benchmark; - -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ - -import junit.framework.Test; -import junit.framework.TestSuite; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.team.internal.ccvs.core.CVSTag; -import org.eclipse.team.tests.ccvs.ui.CVSUITestCase; -import org.eclipse.team.tests.ccvs.ui.SequenceGenerator; -import org.eclipse.team.tests.ccvs.ui.Util; - -public class SyncTests extends CVSUITestCase { - private static final int FILE_SIZE_MEAN = 16384; - private static final int FILE_SIZE_VARIANCE = 0; - private static final int PROB_BINARY = 0; - - public SyncTests(String name) { - super(name); - } - public SyncTests() { - super(""); - } - - public static Test suite() { - return new BenchmarkTestSetup(new TestSuite(SyncTests.class)); - } - - public void testSync0() throws Exception { - // test sync on project with no changes - IProject project = setupOutProject(); - startGroup("test sync with no changes"); - syncCommitResources(new IResource[] { project }, null, ""); - endGroup(); - } - - public void testSync1() throws Exception { - runTestSync(1); - } - - public void testSync10() throws Exception { - runTestSync(10); - } - - public void testSync100() throws Exception { - runTestSync(100); - } - - protected IProject setupOutProject() throws Exception { - IProject project = createAndImportProject("testSync", BenchmarkTestSetup.SMALL_ZIP_FILE); - disableLog(); - actionShareProject(project); - syncCommitResources(new IResource[] { project }, null, "initial"); - enableLog(); - return project; - } - - /** - * Runs a sequence of operations for the synchronizer tests. - * A parallel project is used to generate incoming changes. - */ - protected void runTestSync(int size) throws Exception { - final SequenceGenerator gen = new SequenceGenerator(); - - // setup out project then move it out of the way - IProject outProject = setupOutProject(); - String moduleName = outProject.getName(); - Util.renameResource(outProject, moduleName + "out"); - outProject = Util.getProject(moduleName + "out"); - - // setup in project - disableLog(); - actionCheckoutProjects(new String[] { moduleName }, new CVSTag[] { new CVSTag() }); - enableLog(); - IProject inProject = Util.getProject(moduleName); - - /*** outgoing and incoming changes ***/ - startGroup("synchronize " + size + " added file(s)"); - Util.createRandomDeepFiles(gen, outProject, size, FILE_SIZE_MEAN, FILE_SIZE_VARIANCE, PROB_BINARY); - startGroup("as outgoing changes"); - syncCommitResources(new IResource[] { outProject }, null, ""); - endGroup(); - startGroup("as incoming changes"); - syncUpdateResources(new IResource[] { inProject }, null); - endGroup(); - endGroup(); - - startGroup("synchronize " + size + " modified file(s)"); - Util.modifyRandomDeepFiles(gen, outProject, size); - startGroup("as outgoing changes"); - syncCommitResources(new IResource[] { outProject }, null, ""); - endGroup(); - startGroup("as incoming changes"); - syncUpdateResources(new IResource[] { inProject }, null); - endGroup(); - endGroup(); - - startGroup("synchronize " + size + " removed file(s)"); - Util.deleteRandomDeepFiles(gen, outProject, size); - startGroup("as outgoing changes"); - syncCommitResources(new IResource[] { outProject }, null, ""); - endGroup(); - startGroup("as incoming changes"); - syncUpdateResources(new IResource[] { inProject }, null); - endGroup(); - endGroup(); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/WorkflowTests.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/WorkflowTests.java deleted file mode 100644 index 1964f7d40..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/benchmark/WorkflowTests.java +++ /dev/null @@ -1,156 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.benchmark; - -/* - * (c) Copyright IBM Corp. 2000, 2001. - * All Rights Reserved. - */ - -import java.io.File; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.team.internal.ccvs.core.CVSTag; -import org.eclipse.team.tests.ccvs.ui.CVSUITestCase; -import org.eclipse.team.tests.ccvs.ui.SequenceGenerator; -import org.eclipse.team.tests.ccvs.ui.Util; - -public class WorkflowTests extends CVSUITestCase { - private int FILE_SIZE_MEAN = 16384; - private int FILE_SIZE_VARIANCE = 12288; - private int PROB_BINARY = 5; - public WorkflowTests(String name) { - super(name); - } - public WorkflowTests() { - super(""); - } - - public static Test suite() { - return new BenchmarkTestSetup(new TestSuite(WorkflowTests.class)); - //return new BenchmarkTestSetup(new WorkflowTests("testTinyWorkflow")); - } - - public void testBigWorkflow() throws Exception { - runWorkflowTests("testBig", BenchmarkTestSetup.BIG_ZIP_FILE); - } - - public void testSmallWorkflow() throws Exception { - runWorkflowTests("testSmall", BenchmarkTestSetup.SMALL_ZIP_FILE); - } - - public void testTinyWorkflow() throws Exception { - runWorkflowTests("testTiny", BenchmarkTestSetup.TINY_ZIP_FILE); - } - - /** - * Runs a series of incoming and outgoing workflow-related tests. - */ - protected void runWorkflowTests(String name, File initialContents) throws Exception { - final SequenceGenerator gen = new SequenceGenerator(); - IProject outProject = createAndImportProject(name, initialContents); - - // test project sharing - startGroup("test project sharing"); - actionShareProject(outProject); - endGroup(); - - // test initial project commit - startGroup("test initial project commit"); - syncCommitResources(new IResource[] { outProject }, null, "initial"); - endGroup(); - - // move the project out of the way - String moduleName = outProject.getName(); - Util.renameResource(outProject, moduleName + "out"); - outProject = Util.getProject(moduleName + "out"); - - // test initial project checkout - startGroup("test initial project checkout"); - actionCheckoutProjects(new String[] { moduleName }, new CVSTag[] { new CVSTag() }); - endGroup(); - IProject inProject = Util.getProject(moduleName); - - // test scenarios - startGroup("test incoming and outgoing change scenarios"); - startGroup("adding a new component - localized additions and some changes"); - Util.modifyRandomDeepFiles(gen, outProject, 5); - Util.touchRandomDeepFiles(gen, outProject, 2); - IFolder componentRoot = Util.createRandomDeepFolder(gen, outProject); - Util.createRandomDeepFiles(gen, componentRoot, 12, FILE_SIZE_MEAN, FILE_SIZE_VARIANCE, PROB_BINARY); - syncCommitResources(new IResource[] { outProject }, null, ""); - endGroup(); - - startGroup("catching up to a new component - localized additions and some changes"); - syncUpdateResources(new IResource[] { inProject }, null); - endGroup(); - - startGroup("fixing a bug - localized changes"); - Util.modifyRandomDeepFiles(gen, componentRoot, 2); - Util.touchRandomDeepFiles(gen, componentRoot, 2); - syncCommitResources(new IResource[] { outProject }, null, ""); - endGroup(); - - startGroup("catching up to a bug fix - localized changes"); - syncUpdateResources(new IResource[] { inProject }, null); - endGroup(); - - startGroup("moving a package - scattered changes, files moved"); - Util.modifyRandomDeepFiles(gen, outProject, 5); // a few scattered changes - Util.modifyRandomDeepFiles(gen, componentRoot, 12); // changes to "package" stmt - Util.renameResource(componentRoot, Util.makeUniqueName(gen, "folder", null)); - syncCommitResources(new IResource[] { outProject }, null, ""); - endGroup(); - - startGroup("catching up to a moved package - scattered changes, files moved"); - syncUpdateResources(new IResource[] { inProject }, null); - endGroup(); - - startGroup("big refactoring - scattered changes, files renamed and balanced additions/deletions"); - Util.deleteRandomDeepFiles(gen, outProject, 4); // some stuff deleted - Util.modifyRandomDeepFiles(gen, outProject, 20); // many scattered changes - Util.renameRandomDeepFiles(gen, outProject, 5); // renamed some stuff - Util.createRandomDeepFiles(gen, outProject, 4, FILE_SIZE_MEAN, FILE_SIZE_VARIANCE, PROB_BINARY); // some new stuff added - syncCommitResources(new IResource[] { outProject }, null, ""); - endGroup(); - - startGroup("catching up to a big refactoring - scattered changes, files renamed and balanced additions/deletions"); - syncUpdateResources(new IResource[] { inProject }, null); - endGroup(); - endGroup(); - - // test tagging a project - startGroup("tag project"); - actionCVSTag(new IResource[] { outProject }, "v101"); - endGroup(); - - // replace with remote contents - startGroup("test replace with remote contents scenarios"); - startGroup("no local dirty files, no remote changes"); - actionReplaceWithRemote(new IResource[] { inProject }); - endGroup(); - - startGroup("abandoning some local work, no remote changes"); - Util.deleteRandomDeepFiles(gen, inProject, 4); // some stuff locally deleted - Util.modifyRandomDeepFiles(gen, inProject, 6); // a few unimportant changes to forget - Util.createRandomDeepFiles(gen, inProject, 4, FILE_SIZE_MEAN, FILE_SIZE_VARIANCE, PROB_BINARY); // some new work to abandon - actionReplaceWithRemote(new IResource[] { inProject }); - endGroup(); - - startGroup("no local dirty files, many remote changes"); - // e.g. returning from a long vacation - Util.deleteRandomDeepFiles(gen, outProject, 10); // some components obsoleted - Util.modifyRandomDeepFiles(gen, outProject, 42); // many changes - Util.renameRandomDeepFiles(gen, outProject, 8); // evidence of some refactoring - Util.createRandomDeepFiles(gen, outProject, 10, FILE_SIZE_MEAN, FILE_SIZE_VARIANCE, PROB_BINARY); // a few new components added - disableLog(); - syncCommitResources(new IResource[] { outProject }, null, ""); - enableLog(); - actionReplaceWithRemote(new IResource[] { inProject }); - endGroup(); - endGroup(); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/ArgumentParser.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/ArgumentParser.java deleted file mode 100644 index ee9359101..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/ArgumentParser.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -public class ArgumentParser { - protected ArgumentParser() { - } - - public boolean parse(String[] args) { - int index = 0; - String option = null; - for (int i = 0; i < args.length; i++) { - String arg = args[i]; - if (arg == null) continue; - if (arg.charAt(0) == '-') { - if (option != null && ! handleOption(option, null)) return false; - option = arg; - } else if (option != null) { - if (! handleOption(option, arg)) return false; - option = null; - } else { - if (! handleArgument(index++, arg)) return false; - } - } - if (option != null && ! handleOption(option, null)) return false; - return handleFinished(); - } - - protected boolean handleFinished() { - return true; - } - - protected boolean handleArgument(int index, String arg) { - return false; - } - - protected boolean handleOption(String option, String arg) { - return false; - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/CaseEntry.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/CaseEntry.java deleted file mode 100644 index 3ae0ba97e..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/CaseEntry.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import org.xml.sax.Attributes; - -public class CaseEntry extends LogEntryContainer { - private String className; - - public CaseEntry(LogEntryContainer parent, Attributes attributes) { - this(parent, attributes.getValue("name"), attributes.getValue("class")); - } - - public CaseEntry(LogEntryContainer parent, String name, String className) { - super(parent, name); - this.className = (className != null) ? className : "unknown"; - } - - public void accept(ILogEntryVisitor visitor) { - visitor.visitCaseEntry(this); - } - - /** - * Returns the class name of the test case. - */ - public String getClassName() { - return className; - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/DelimitedValuesWriter.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/DelimitedValuesWriter.java deleted file mode 100644 index 95be9e392..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/DelimitedValuesWriter.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import java.io.PrintStream; - -public class DelimitedValuesWriter { - private static final String BEGIN_QUOTE = "\""; - private static final String END_QUOTE = "\""; - private PrintStream ps; - private String delimiter; - private boolean quoted; - private boolean firstField; - - public DelimitedValuesWriter(PrintStream ps, String delimiter, boolean quoted) { - this.ps = ps; - this.delimiter = delimiter; - this.quoted = quoted; - this.firstField = true; - } - - public void printField(String field) { - if (firstField) { - firstField = false; - } else { - ps.print(delimiter); - } - if (quoted) ps.print(BEGIN_QUOTE); - ps.print(field); - if (quoted) ps.print(END_QUOTE); - } - public void printFields(String[] fields) { - for (int i = 0; i < fields.length; i++) { - printField(fields[i]); - } - } - public void printRecord(String[] fields) { - printFields(fields); - endRecord(); - } - public void endRecord() { - ps.println(); - firstField = true; - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/GroupEntry.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/GroupEntry.java deleted file mode 100644 index 20c15f3b5..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/GroupEntry.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import org.xml.sax.Attributes; - -public class GroupEntry extends LogEntryContainer { - public GroupEntry(LogEntryContainer parent, Attributes attributes) { - this(parent, attributes.getValue("name")); - } - - public GroupEntry(LogEntryContainer parent, String name) { - super(parent, name); - } - - public void accept(ILogEntryVisitor visitor) { - visitor.visitGroupEntry(this); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/ILogEntryVisitor.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/ILogEntryVisitor.java deleted file mode 100644 index 884f86206..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/ILogEntryVisitor.java +++ /dev/null @@ -1,13 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -public interface ILogEntryVisitor { - public void visitRootEntry(RootEntry entry); - public void visitCaseEntry(CaseEntry entry); - public void visitGroupEntry(GroupEntry entry); - public void visitTaskEntry(TaskEntry entry); -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/LogEntry.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/LogEntry.java deleted file mode 100644 index e3300a2d8..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/LogEntry.java +++ /dev/null @@ -1,118 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; - -import junit.framework.Assert; -import org.xml.sax.Attributes; -import org.xml.sax.ContentHandler; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; -import org.xml.sax.XMLReader; -import org.xml.sax.helpers.DefaultHandler; -import org.xml.sax.helpers.XMLReaderFactory; - -public abstract class LogEntry { - LogEntryContainer parent; - String name; - - /** - * Creates a new log entry with the specified parent. - * @param parent the parent container - * @param name the name of the entry - */ - public LogEntry(LogEntryContainer parent, String name) { - this.parent = parent; - this.name = name != null ? name : "unknown"; - if (parent != null) parent.addEntry(this); - } - - /** - * Accepts a visitor. - * @param visitor the visitor - */ - public abstract void accept(ILogEntryVisitor visitor); - - /** - * Returns the name of this entry. - */ - public String getName() { - return name; - } - - /** - * Returns the parent container of this entry, or null if none. - */ - public LogEntryContainer getParent() { - return parent; - } - - /** - * Reads an array of log entries from a file. - * @return the log entries - */ - public static RootEntry readLog(File file) throws IOException, SAXException { - XMLReader reader = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser"); - LogContentHandler contentHandler = new LogContentHandler(); - reader.setContentHandler(contentHandler); - reader.parse(new InputSource(new FileInputStream(file))); - return contentHandler.getLogEntries(); - } - - private static class LogContentHandler extends DefaultHandler implements ContentHandler { - private RootEntry root = null; - private LogEntry current = null; - - public RootEntry getLogEntries() { - return root; - } - public void startElement(String uri, String localName, String qName, Attributes attributes) - throws SAXException { - if ("log".equals(localName)) { - Assert.assertNull(current); - current = root = new RootEntry(null, attributes); - } else if ("case".equals(localName)) { - Assert.assertNotNull(current); - Assert.assertTrue(current instanceof RootEntry); - current = new CaseEntry((LogEntryContainer) current, attributes); - } else if ("group".equals(localName)) { - Assert.assertNotNull(current); - Assert.assertTrue(current instanceof CaseEntry || current instanceof GroupEntry); - current = new GroupEntry((LogEntryContainer) current, attributes); - } else if ("task".equals(localName)) { - Assert.assertNotNull(current); - Assert.assertTrue(current instanceof CaseEntry || current instanceof GroupEntry); - current = new TaskEntry((LogEntryContainer) current, attributes); - } else if ("result".equals(localName)) { - Assert.assertNotNull(current); - Assert.assertTrue(current instanceof TaskEntry); - ((TaskEntry) current).addResult(new Result(attributes)); - } else if ("abort".equals(localName)) { - // currently we ignore failure entries - // XXX need a good way to represent failures - } else if ("trace".equals(localName)) { - // currently we ignore stack frames associated with failure entries - } else if ("status".equals(localName)) { - // currently we ignore status associated with failure entries - } else { - throw new SAXException("Unrecognized element: " + localName); - } - } - public void endElement(String uri, String localName, String qName) - throws SAXException { - Assert.assertNotNull(current); - if ("result".equals(localName) || "abort".equals(localName) || - "trace".equals(localName) || "status".equals(localName)) { - // nothing to do - } else { - current = current.getParent(); - } - } - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/LogEntryContainer.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/LogEntryContainer.java deleted file mode 100644 index 71c6eb471..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/LogEntryContainer.java +++ /dev/null @@ -1,57 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -public abstract class LogEntryContainer extends LogEntry { - private List /* of LogEntry */ list = new ArrayList(); - - public LogEntryContainer(LogEntryContainer parent, String name) { - super(parent, name); - } - - /** - * Accepts a visitor for each child in the order in which they are listed. - * @param visitor the visitor - */ - public void acceptChildren(ILogEntryVisitor visitor) { - Iterator it = list.iterator(); - while (it.hasNext()) { - LogEntry entry = (LogEntry) it.next(); - entry.accept(visitor); - } - } - - /** - * Returns the list of children in this container. - */ - public LogEntry[] members() { - return (LogEntry[]) list.toArray(new LogEntry[list.size()]); - } - - /** - * Returns the member with the specified name and class. - */ - public LogEntry findMember(String name, Class clazz) { - Iterator it = list.iterator(); - while (it.hasNext()) { - LogEntry entry = (LogEntry) it.next(); - if (name.equals(entry.getName()) && - clazz.isAssignableFrom(entry.getClass())) return entry; - } - return null; - } - - /* - * Adds the specified entry to the end of the list. - */ - void addEntry(LogEntry entry) { - list.add(entry); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/LogFormatterUIMain.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/LogFormatterUIMain.java deleted file mode 100644 index 14e6b3a61..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/LogFormatterUIMain.java +++ /dev/null @@ -1,182 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import org.eclipse.swt.SWT; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.FileDialog; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.TabFolder; -import org.eclipse.swt.widgets.TabItem; -import org.eclipse.swt.widgets.Text; - -/** - * Quick and dirty UI frontend for the log formatters. - */ -public class LogFormatterUIMain { - - public LogFormatterUIMain() { - } - - public static void main(String[] args) { - new LogFormatterUIMain().run(); - } - - public void run() { - Display display = new Display(); - Shell shell = new Shell(display); - - shell.setText("Log Formatter UI"); - createContents(shell); - - shell.setSize(500, 300); - shell.open(); - while (! shell.isDisposed()) { - if (! display.readAndDispatch()) display.sleep(); - } - shell.dispose(); - display.dispose(); - } - - protected void createContents(Composite parent) { - parent.setLayout(new FillLayout()); - TabFolder tabFolder = new TabFolder(parent, SWT.NONE); - createSummaryTabContents(new TabItem(tabFolder, SWT.NONE)); - createDiffTabContents(new TabItem(tabFolder, SWT.NONE)); - } - - protected void createSummaryTabContents(TabItem item) { - Composite top = new Composite(item.getParent(), SWT.NONE); - item.setControl(top); - item.setText("Create Log Summary"); - GridLayout layout = new GridLayout(); - layout.numColumns = 3; - top.setLayout(layout); - - final Text logFileText = createFileSelector(top, "Log file path: "); - final Text outputFileText = createFileSelector(top, "Output file path: "); - - final Button csvCheckButton = new Button(top, SWT.CHECK); - csvCheckButton.setText("Produce comma separated values data"); - GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_CENTER); - data.horizontalSpan = 3; - csvCheckButton.setLayoutData(data); - - final Button rawCheckButton = new Button(top, SWT.CHECK); - rawCheckButton.setText("Do not merge results from successive iterations"); - data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_CENTER); - data.horizontalSpan = 3; - rawCheckButton.setLayoutData(data); - - createRunButton(top, new Runnable() { - public void run() { - PrintSummaryMain.main(new String[] { - logFileText.getText(), - "-out", outputFileText.getText(), - csvCheckButton.getSelection() ? "-csv" : null, - rawCheckButton.getSelection() ? "-raw" : null }); - } - }); - } - - protected void createDiffTabContents(TabItem item) { - Composite top = new Composite(item.getParent(), SWT.NONE); - item.setControl(top); - item.setText("Create Log Diff"); - GridLayout layout = new GridLayout(); - layout.numColumns = 3; - top.setLayout(layout); - - final Text newerLogFileText = createFileSelector(top, "Newer log file path: "); - final Text olderLogFileText = createFileSelector(top, "Older log file path: "); - final Text outputFileText = createFileSelector(top, "Output file path: "); - - Label label = new Label(top, SWT.NONE); - label.setText("Threshold %"); - label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER)); - - final Text thresholdText = new Text(top, SWT.BORDER); - thresholdText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER)); - thresholdText.setText("0"); - - new Label(top, SWT.NONE); - - final Button csvCheckButton = new Button(top, SWT.CHECK); - csvCheckButton.setText("Produce comma separated values data"); - GridData data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_CENTER); - data.horizontalSpan = 3; - csvCheckButton.setLayoutData(data); - - final Button ignoreCheckButton = new Button(top, SWT.CHECK); - ignoreCheckButton.setText("Ignore negligible changes in results"); - data = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING | GridData.VERTICAL_ALIGN_CENTER); - data.horizontalSpan = 3; - ignoreCheckButton.setLayoutData(data); - - createRunButton(top, new Runnable() { - public void run() { - PrintDiffMain.main(new String[] { - newerLogFileText.getText(), - olderLogFileText.getText(), - "-out", outputFileText.getText(), - "-t", thresholdText.getText(), - csvCheckButton.getSelection() ? "-csv" : null, - ignoreCheckButton.getSelection() ? "-i" : null }); - } - }); - } - - protected Text createFileSelector(Composite parent, String labelText) { - Label label = new Label(parent, SWT.NONE); - label.setText(labelText); - label.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_CENTER)); - - final Text text = new Text(parent, SWT.BORDER); - text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL | GridData.VERTICAL_ALIGN_CENTER)); - - Button browseButton = new Button(parent, SWT.PUSH); - browseButton.setText("Browse..."); - browseButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - FileDialog dialog = new FileDialog(text.getShell(), SWT.OPEN); - dialog.setFileName(text.getText()); - String name = dialog.open(); - if (name != null) { - text.setText(name); - } - } - }); - browseButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL)); - return text; - } - - protected Button createRunButton(Composite parent, final Runnable runnable) { - Label separator = new Label(parent, SWT.SEPARATOR | SWT.HORIZONTAL); - GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_END | GridData.GRAB_VERTICAL); - data.horizontalSpan = 3; - separator.setLayoutData(data); - - final Button runButton = new Button(parent, SWT.PUSH); - runButton.setText("Run"); - data = new GridData(GridData.HORIZONTAL_ALIGN_END | GridData.VERTICAL_ALIGN_FILL); - data.horizontalSpan = 3; - runButton.setLayoutData(data); - runButton.addListener(SWT.Selection, new Listener() { - public void handleEvent(Event event) { - runButton.getDisplay().asyncExec(runnable); - } - }); - return runButton; - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/MergeRunsVisitor.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/MergeRunsVisitor.java deleted file mode 100644 index 302df0f99..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/MergeRunsVisitor.java +++ /dev/null @@ -1,70 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -public class MergeRunsVisitor implements ILogEntryVisitor { - private RootEntry defaultRoot; - private RootEntry root; - private LogEntryContainer parent; - - /** - * Creates a new visitor to merge series of log entries. - * @param root the root of an existing log to merge into, or null - */ - public MergeRunsVisitor(RootEntry root) { - this.defaultRoot = root; - this.parent = null; - } - - /** - * Returns the root of the newly merged log, or null if none. - */ - public RootEntry getMergedRoot() { - return root; - } - - public void visitRootEntry(RootEntry entry) { - root = defaultRoot; - if (root == null) { - root = new RootEntry(null, entry.getName(), entry.getSDKBuildId(), entry.getTimestamp()); - } - parent = root; - entry.acceptChildren(this); - } - - public void visitCaseEntry(CaseEntry entry) { - LogEntryContainer oldParent = parent; - CaseEntry newEntry = (CaseEntry) parent.findMember(entry.getName(), CaseEntry.class); - if (newEntry == null) { - newEntry = new CaseEntry(parent, entry.getName(), entry.getClassName()); - } - parent = newEntry; - entry.acceptChildren(this); - parent = oldParent; - } - - public void visitGroupEntry(GroupEntry entry) { - LogEntryContainer oldParent = parent; - GroupEntry newEntry = (GroupEntry) parent.findMember(entry.getName(), GroupEntry.class); - if (newEntry == null) { - newEntry = new GroupEntry(parent, entry.getName()); - } - parent = newEntry; - entry.acceptChildren(this); - parent = oldParent; - } - - public void visitTaskEntry(TaskEntry entry) { - TaskEntry newEntry = (TaskEntry) parent.findMember(entry.getName(), TaskEntry.class); - if (newEntry == null) { - newEntry = new TaskEntry(parent, entry.getName()); - } - Result[] results = entry.getResults(); - for (int i = 0; i < results.length; i++) { - newEntry.addResult(results[i]); - } - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintCSVDiffVisitor.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintCSVDiffVisitor.java deleted file mode 100644 index 5f1a47f5a..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintCSVDiffVisitor.java +++ /dev/null @@ -1,96 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -public class PrintCSVDiffVisitor extends PrintDiffVisitor { - private static final String GROUP_DELIMITER = " / "; - private DelimitedValuesWriter writer; - private String caseName; - private String groupName; - - /** - * Creates a diff visitor that generates CSV output. - * - * @param writer the delimited values writer - * @see PrintDiffVisitor - */ - public PrintCSVDiffVisitor(DelimitedValuesWriter writer, RootEntry olderRoot, int threshold, boolean ignoreNegligible) { - super(olderRoot, threshold, ignoreNegligible); - this.writer = writer; - } - - protected void visitRootEntry(RootEntry entry, RootEntry olderEntry) { - entry.acceptChildren(this); - } - - protected void visitCaseEntry(CaseEntry entry, CaseEntry olderEntry) { - caseName = entry.getName(); - groupName = null; - entry.acceptChildren(this); - } - - protected void visitGroupEntry(GroupEntry entry, GroupEntry olderEntry) { - String oldGroupName = groupName; - if (groupName == null) { - groupName = entry.getName(); - } else { - groupName += GROUP_DELIMITER + entry.getName(); - } - entry.acceptChildren(this); - groupName = oldGroupName; - } - - protected void visitTaskEntry(TaskEntry entry, TaskEntry olderEntry) { - writer.printFields(new String[] { - caseName, // case - groupName, // group - entry.getName() // task - }); - printTaskEntry(entry); - printTaskEntry(olderEntry); - if (entry.getTotalRuns() != 0 && olderEntry.getTotalRuns() != 0) { - int olderMean = olderEntry.getAverageMillis(); - int diff = entry.getAverageMillis() - olderMean; - if (isDifferenceUncertain(entry, olderEntry)) { - writer.printField("UNCERTAIN"); - } else if (isDifferenceNegligible(entry, olderEntry)) { - writer.printField("NEGLIGIBLE"); - } else { - writer.printField(diff > 0 ? "SLOWER" : "FASTER"); // change type - } - writer.printField(Integer.toString(Math.abs(diff))); // change - if (olderMean != 0) { - writer.printField(Util.formatPercentageRatio(Math.abs(diff), olderMean)); // % change - } else { - writer.printField(""); - } - } else { - writer.printFields(new String[] { "", "", "" }); - } - writer.endRecord(); - } - - protected void printTaskEntry(TaskEntry entry) { - if (entry.getTotalRuns() != 0) { - int mean = entry.getAverageMillis(); - writer.printFields(new String[] { - Integer.toString(entry.getTotalRuns()), // runs - Integer.toString(mean) // average - }); - if (entry.getTotalRuns() > 1 && mean != 0) { - int confidence = entry.getConfidenceInterval(); - writer.printFields(new String[] { - Integer.toString(confidence), // 95% confidence interval - Util.formatPercentageRatio(confidence, mean) // 95% c.i. as a percentage - }); - } else { - writer.printFields(new String[] { "", "" }); - } - } else { - writer.printFields(new String[] { "0", "", "", "" }); - } - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintCSVSummaryVisitor.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintCSVSummaryVisitor.java deleted file mode 100644 index 2ebf7cd7c..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintCSVSummaryVisitor.java +++ /dev/null @@ -1,76 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -public class PrintCSVSummaryVisitor implements ILogEntryVisitor { - private static final String GROUP_DELIMITER = " / "; - private DelimitedValuesWriter writer; - private String caseName; - private String groupName; - - /** - * Creates a visitor to print a log as comma-separated values. - * @param writer the delimited values writer - */ - public PrintCSVSummaryVisitor(DelimitedValuesWriter writer) { - this.writer = writer; - } - - public void visitRootEntry(RootEntry entry) { - entry.acceptChildren(this); - } - - public void visitCaseEntry(CaseEntry entry) { - caseName = entry.getName(); - groupName = null; - entry.acceptChildren(this); - } - - public void visitGroupEntry(GroupEntry entry) { - String oldGroupName = groupName; - if (groupName == null) { - groupName = entry.getName(); - } else { - groupName += GROUP_DELIMITER + entry.getName(); - } - entry.acceptChildren(this); - groupName = oldGroupName; - } - - public void visitTaskEntry(TaskEntry entry) { - writer.printFields(new String[] { - caseName, // case - groupName, // group - entry.getName() // task - }); - if (entry.getTotalRuns() != 0) { - int mean = entry.getAverageMillis(); - writer.printFields(new String[] { - Integer.toString(entry.getTotalRuns()), // runs - Integer.toString(mean) // average - }); - if (entry.getTotalRuns() > 1 && mean != 0) { - int confidence = entry.getConfidenceInterval(); - writer.printFields(new String[] { - Integer.toString(confidence), // 95% confidence interval - Util.formatPercentageRatio(confidence, mean) // 95% c.i. as a percentage - }); - } else { - writer.printFields(new String[] { "", "" }); - } - } else { - writer.printFields(new String[] { "0", "", "", "" }); - } - // append the result fields (ms) - Result[] results = entry.getResults(); - for (int i = 0; i < results.length; i++) { - Result result = results[i]; - if (result.getRuns() == 0) continue; - writer.printField(Integer.toString(result.getMillis() / result.getRuns())); - } - writer.endRecord(); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintDiffMain.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintDiffMain.java deleted file mode 100644 index 7a82f7a81..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintDiffMain.java +++ /dev/null @@ -1,148 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.PrintStream; - -import org.xml.sax.SAXException; - -public class PrintDiffMain { - public static void main(String[] args) { - Parser parser = new Parser(); - if (! parser.parse(args)) { - System.err.println("Usage: <newer log> <older log> [-out <file>] [-csv] [-t <thresh>] [-i]"); - System.err.println(" -out <file> : specify the output file, default is console"); - System.err.println(" -csv : produce comma separated values data"); - System.err.println(" -t <thresh> : minimum non-negligible absolute % change"); - System.err.println(" -i : ignore negligible changes in results"); - return; - } - try { - PrintStream ps = System.out; - try { - if (parser.outputFile != null) ps = new PrintStream(new BufferedOutputStream(new FileOutputStream(parser.outputFile))); - printDiff(ps, parser.newerLogFile, parser.olderLogFile, parser.csv, parser.thresh, parser.ignore); - } finally { - if (ps != System.out) ps.close(); - } - } catch (Exception e) { - System.err.println("An error occurred:"); - e.printStackTrace(); - return; - } - } - - private static void printDiff(PrintStream ps, File newerLogFile, File olderLogFile, - boolean csv, int thresh, boolean ignore) throws IOException, SAXException { - // read and merge newer log - RootEntry newerRoot = LogEntry.readLog(newerLogFile); - MergeRunsVisitor mergeVisitor = new MergeRunsVisitor(null); - newerRoot.accept(mergeVisitor); - newerRoot = mergeVisitor.getMergedRoot(); - - // read and merge older log - RootEntry olderRoot = LogEntry.readLog(olderLogFile); - olderRoot.accept(mergeVisitor); - olderRoot = mergeVisitor.getMergedRoot(); - - // format options - StringBuffer options = new StringBuffer(); - if (thresh != 0) { - options.append("-t "); - options.append(Integer.toString(thresh)); - options.append(" "); - } - if (ignore) options.append("-i "); - - // format log file - if (csv) { - DelimitedValuesWriter writer = new DelimitedValuesWriter(ps, ",", true /*quoted*/); - // print header - writer.printRecord(new String[] { "", "Newer", "Older" }); - writer.printRecord(new String[] { "Log File", newerLogFile.toString(), olderLogFile.toString() }); - writer.printRecord(new String[] { "Generated", newerRoot.getTimestamp(), olderRoot.getTimestamp() }); - writer.printRecord(new String[] { "SDK Build", newerRoot.getSDKBuildId(), olderRoot.getSDKBuildId() }); - writer.endRecord(); - writer.printRecord(new String[] { "Options", "'" + options.toString() }); - writer.endRecord(); - writer.printRecord(new String[] { "", "", "", - "Newer", "", "", "", - "Older", "", "", "", - "", "", "" }); - writer.printRecord(new String[] { "Case", "Group", "Task", - "Runs", "Avg. (ms)", "95% C.I. (ms)", "95% C.I. (%)", - "Runs", "Avg. (ms)", "95% C.I. (ms)", "95% C.I. (%)", - "Change", "Diff (ms)", "Diff (%)" }); - // print quoted CSV data - PrintCSVDiffVisitor diffVisitor = new PrintCSVDiffVisitor(writer, olderRoot, thresh, ignore); - newerRoot.accept(diffVisitor); - } else { - // print header - ps.println("=== LOG DIFF ==="); - ps.println("Newer File: " + newerLogFile); - ps.println(" Generated: " + newerRoot.getTimestamp()); - ps.println(" SDK Build: " + newerRoot.getSDKBuildId()); - ps.println("Older File: " + olderLogFile); - ps.println(" Generated: " + olderRoot.getTimestamp()); - ps.println(" SDK Build: " + olderRoot.getSDKBuildId()); - ps.println("Options: " + options.toString()); - ps.println(); - // compute and print the differences - PrintTextDiffVisitor diffVisitor = new PrintTextDiffVisitor(ps, olderRoot, thresh, ignore); - newerRoot.accept(diffVisitor); - } - } - - private static class Parser extends ArgumentParser { - public File newerLogFile = null; - public File olderLogFile = null; - public File outputFile = null; - public boolean csv = false; - public int thresh = 0; - public boolean ignore = false; - - protected boolean handleFinished() { - return newerLogFile != null && olderLogFile != null; - } - protected boolean handleArgument(int index, String arg) { - if (index == 0) { - newerLogFile = new File(arg); - } else if (index == 1) { - olderLogFile = new File(arg); - } else { - return false; - } - return true; - } - protected boolean handleOption(String option, String arg) { - if ("-out".equals(option)) { - if (arg == null) return false; - outputFile = new File(arg); - } else if ("-csv".equals(option)) { - if (arg != null) return false; - csv = true; - } else if ("-t".equals(option)) { - if (arg == null) return false; - try { - thresh = Integer.parseInt(arg, 10); - } catch (NumberFormatException e) { - return false; - } - if (thresh < 0) return false; - } else if ("-i".equals(option)) { - if (arg != null) return false; - ignore = true; - } else { - return false; - } - return true; - } - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintDiffVisitor.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintDiffVisitor.java deleted file mode 100644 index a75150735..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintDiffVisitor.java +++ /dev/null @@ -1,84 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -public abstract class PrintDiffVisitor implements ILogEntryVisitor { - protected RootEntry olderRoot; - protected int threshold; // threshold for negligible changes - protected boolean ignoreNegligible; // if true, ignores negligible changes - protected LogEntryContainer olderParent; // corresponding parent in older root - - /** - * Creates a visitor to print a summary of the changes between a log - * and an older one. Optionally ignores differences within a certain threshold. - * Does not print older entries for which there are no corresponding newer ones. - * - * @param olderRoot the root of the older log - * @param threshold the minimum non-negligible % change - * @param ignoreNegligible if true, does not display negligible changes - */ - public PrintDiffVisitor(RootEntry olderRoot, int threshold, boolean ignoreNegligible) { - this.olderRoot = olderRoot; - this.olderParent = null; - this.threshold = threshold; - this.ignoreNegligible = ignoreNegligible; - } - - protected abstract void visitRootEntry(RootEntry entry, RootEntry olderEntry); - protected abstract void visitCaseEntry(CaseEntry entry, CaseEntry olderEntry); - protected abstract void visitGroupEntry(GroupEntry entry, GroupEntry olderEntry); - protected abstract void visitTaskEntry(TaskEntry entry, TaskEntry olderEntry); - - public void visitRootEntry(RootEntry entry) { - olderParent = olderRoot; - visitRootEntry(entry, olderRoot); - } - - public void visitCaseEntry(CaseEntry entry) { - LogEntryContainer prevOlderParent = olderParent; - if (olderParent != null) { - olderParent = (LogEntryContainer) olderParent.findMember(entry.getName(), CaseEntry.class); - } - visitCaseEntry(entry, (CaseEntry) olderParent); - olderParent = prevOlderParent; - } - - public void visitGroupEntry(GroupEntry entry) { - LogEntryContainer prevOlderParent = olderParent; - if (olderParent != null) { - olderParent = (LogEntryContainer) olderParent.findMember(entry.getName(), GroupEntry.class); - } - visitGroupEntry(entry, (GroupEntry) olderParent); - olderParent = prevOlderParent; - } - - public void visitTaskEntry(TaskEntry entry) { - TaskEntry olderEntry = null; - if (olderParent != null) { - olderEntry = (TaskEntry) olderParent.findMember(entry.getName(), TaskEntry.class); - } - if (ignoreNegligible && isDifferenceNegligible(entry, olderEntry)) return; - visitTaskEntry(entry, olderEntry); - } - - protected boolean isDifferenceNegligible(TaskEntry newerEntry, TaskEntry olderEntry) { - if (newerEntry.getTotalRuns() == 0 || olderEntry.getTotalRuns() == 0) return false; - int olderMean = olderEntry.getAverageMillis(); - if (olderMean == 0) return false; - int newerMean = newerEntry.getAverageMillis(); - int diff = Math.abs(newerMean - olderMean); - return diff * 100 / olderMean < threshold; - } - - protected boolean isDifferenceUncertain(TaskEntry newerEntry, TaskEntry olderEntry) { - if (newerEntry.getTotalRuns() == 0 || olderEntry.getTotalRuns() == 0) return false; - int olderMean = olderEntry.getAverageMillis(); - int newerMean = newerEntry.getAverageMillis(); - int diff = Math.abs(newerMean - olderMean); - int diffCI = newerEntry.getConfidenceInterval() + olderEntry.getConfidenceInterval(); - return diff < diffCI; - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintSummaryMain.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintSummaryMain.java deleted file mode 100644 index 91e1acfa3..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintSummaryMain.java +++ /dev/null @@ -1,116 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.PrintStream; - -import org.xml.sax.SAXException; - -public class PrintSummaryMain { - public static void main(String[] args) { - Parser parser = new Parser(); - if (! parser.parse(args)) { - System.err.println("Usage: <log file> [-out <file>] [-csv] [-raw]"); - System.err.println(" -out <file> : specify the output file, default is console"); - System.err.println(" -csv : produce comma separated values data"); - System.err.println(" -raw : do not merge results from successive iterations"); - return; - } - try { - PrintStream ps = System.out; - try { - if (parser.outputFile != null) ps = new PrintStream(new BufferedOutputStream(new FileOutputStream(parser.outputFile))); - printLog(ps, parser.logFile, parser.csv, parser.raw); - } finally { - if (ps != System.out) ps.close(); - } - } catch (Exception e) { - System.err.println("An error occurred:"); - e.printStackTrace(); - return; - } - } - - private static void printLog(PrintStream ps, File logFile, boolean csv, boolean raw) - throws IOException, SAXException { - // read and merge the log - RootEntry root = LogEntry.readLog(logFile); - if (! raw) { - MergeRunsVisitor mergeVisitor = new MergeRunsVisitor(null); - root.accept(mergeVisitor); - root = mergeVisitor.getMergedRoot(); - } - - // format options - StringBuffer options = new StringBuffer(); - if (raw) options.append("-raw "); - - // format log file - if (csv) { - DelimitedValuesWriter writer = new DelimitedValuesWriter(ps, ",", true /*quoted*/); - // print header - writer.printRecord(new String[] { "Log File", logFile.toString() }); - writer.printRecord(new String[] { "Generated", root.getTimestamp() }); - writer.printRecord(new String[] { "SDK Build", root.getSDKBuildId() }); - writer.endRecord(); - writer.printRecord(new String[] { "Options", "'" + options.toString() }); - writer.endRecord(); - writer.printRecord(new String[] { "Case", "Group", "Task", - "Runs", "Avg. (ms)", "95% C.I. (ms)", "95% C.I. (%)", "Results (ms)" }); - // print quoted CSV data - PrintCSVSummaryVisitor visitor = new PrintCSVSummaryVisitor(writer); - root.accept(visitor); - } else { - // print header - ps.println("=== LOG SUMMARY ==="); - ps.println("File: " + logFile); - ps.println(" Generated: " + root.getTimestamp()); - ps.println(" SDK Build: " + root.getSDKBuildId()); - ps.println("Options: " + options.toString()); - ps.println(); - // print the log summary - root.accept(new PrintTextSummaryVisitor(ps)); - } - } - - private static class Parser extends ArgumentParser { - public File logFile = null; - public File outputFile = null; - public boolean csv = false; - public boolean raw = false; - - protected boolean handleFinished() { - return logFile != null; - } - protected boolean handleArgument(int index, String arg) { - if (index == 0) { - logFile = new File(arg); - } else { - return false; - } - return true; - } - protected boolean handleOption(String option, String arg) { - if ("-out".equals(option)) { - if (arg == null) return false; - outputFile = new File(arg); - } else if ("-csv".equals(option)) { - if (arg != null) return false; - csv = true; - } else if ("-raw".equals(option)) { - if (arg != null) return false; - raw = true; - } else { - return false; - } - return true; - } - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintTextDiffVisitor.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintTextDiffVisitor.java deleted file mode 100644 index e88c65dd0..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintTextDiffVisitor.java +++ /dev/null @@ -1,141 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import java.io.PrintStream; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; - -public class PrintTextDiffVisitor extends PrintDiffVisitor { - private PrintStream os; - private List diffText; // list of things to print - private String indent; - - /** - * Creates a diff visitor that generates text output. - * - * @param os the output stream - * @see PrintDiffVisitor - */ - public PrintTextDiffVisitor(PrintStream os, RootEntry olderRoot, int threshold, boolean ignoreNegligible) { - super(olderRoot, threshold, ignoreNegligible); - this.os = os; - this.diffText = null; - this.indent = ""; - } - - protected void visitRootEntry(RootEntry entry, RootEntry olderEntry) { - entry.acceptChildren(this); - } - - protected void visitCaseEntry(CaseEntry entry, CaseEntry olderEntry) { - String oldIndent = indent; - indent += " "; - StringBuffer line = new StringBuffer(indent); - line.append("%%% "); - line.append(entry.getName()); - line.append(", class="); - line.append(entry.getClassName()); - line.append(':'); - os.println(line); - diffText = null; - entry.acceptChildren(this); - if (diffText != null) { - Iterator it = diffText.iterator(); - while (it.hasNext()) os.println((String) it.next()); - } - diffText = null; - os.println(); - indent = oldIndent; - } - - protected void visitGroupEntry(GroupEntry entry, GroupEntry olderEntry) { - String oldIndent = indent; - List oldDiffText = diffText; - indent += " "; - diffText = null; - entry.acceptChildren(this); - indent = oldIndent; - if (diffText != null) { - StringBuffer line = new StringBuffer(indent); - line.append("+ "); - line.append(entry.getName()); - line.append(':'); - diffText.add(0, line.toString()); - if (oldDiffText != null) diffText.addAll(0, oldDiffText); - } else { - diffText = oldDiffText; - } - } - - protected void visitTaskEntry(TaskEntry entry, TaskEntry olderEntry) { - // print task description - if (diffText == null) diffText = new LinkedList(); // using a list for speedy prepending - StringBuffer line = new StringBuffer(indent); - line.append("- "); - line.append(entry.getName()); - line.append(": "); - diffText.add(line.toString()); - - // print new entry performance - printTaskEntry(" newer: ", entry); - - // print older entry performance - if (olderEntry == null) return; - printTaskEntry(" older: ", olderEntry); - - // print difference - if (entry.getTotalRuns() == 0 || olderEntry.getTotalRuns() == 0) return; - int olderMean = olderEntry.getAverageMillis(); - int diff = entry.getAverageMillis() - olderMean; - line = new StringBuffer(indent); - line.append(" diff : "); - - if (isDifferenceUncertain(entry, olderEntry)) { - line.append("UNCERTAIN"); - } else if (isDifferenceNegligible(entry, olderEntry)) { - line.append("NEGLIGIBLE"); - } else { - line.append(diff > 0 ? "SLOWER" : "FASTER"); - line.append(" by "); - line.append(Integer.toString(Math.abs(diff))); - line.append(" ms"); - if (olderEntry.getAverageMillis() != 0) { - line.append(" = "); - line.append(Util.formatPercentageRatio(Math.abs(diff), olderMean)); - } - line.append(" avg."); - } - diffText.add(line.toString()); - } - - protected void printTaskEntry(String prefix, TaskEntry task) { - StringBuffer line = new StringBuffer(indent); - line.append(prefix); - if (task.getTotalRuns() != 0) { - int averageTime = task.getAverageMillis(); - line.append(Integer.toString(averageTime)); - line.append(" ms"); - if (task.getTotalRuns() > 1) { - line.append(" avg. over "); - line.append(Integer.toString(task.getTotalRuns())); - line.append(" runs"); - if (averageTime != 0) { - int confidence = task.getConfidenceInterval(); - line.append(" (95% C.I. +/- "); - line.append(Integer.toString(confidence)); - line.append(" ms = "); - line.append(Util.formatPercentageRatio(confidence, averageTime)); - line.append(")"); - } - } - } else { - line.append("skipped!"); - } - diffText.add(line.toString()); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintTextSummaryVisitor.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintTextSummaryVisitor.java deleted file mode 100644 index 140366165..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/PrintTextSummaryVisitor.java +++ /dev/null @@ -1,103 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import java.io.PrintStream; - -public class PrintTextSummaryVisitor implements ILogEntryVisitor { - private PrintStream os; - private String indent; - private int totalAverageTime; - - /** - * Creates a visitor to print a summary of all entries contained in a log. - * @param os the output stream - */ - public PrintTextSummaryVisitor(PrintStream os) { - this.os = os; - this.indent = ""; - this.totalAverageTime = 0; - } - - protected void visitContainer(LogEntryContainer container) { - int oldTotalAverageTime = totalAverageTime; - indent += " "; - container.acceptChildren(this); - int averageTime = totalAverageTime - oldTotalAverageTime; - StringBuffer line = new StringBuffer(indent); - line.append("* total: "); - line.append(Integer.toString(averageTime)); - line.append(" ms"); - os.println(line); - indent = indent.substring(2); - } - - /** - * Prints the root entry information. - */ - public void visitRootEntry(RootEntry entry) { - entry.acceptChildren(this); - } - - /** - * Prints the total average time spent by all subgroups and subtasks. - */ - public void visitCaseEntry(CaseEntry entry) { - StringBuffer line = new StringBuffer(indent); - line.append("%%% "); - line.append(entry.getName()); - line.append(", class="); - line.append(entry.getClassName()); - line.append(':'); - os.println(line); - visitContainer(entry); - os.println(); - } - - /** - * Prints the total average time spent by all subtasks. - */ - public void visitGroupEntry(GroupEntry entry) { - StringBuffer line = new StringBuffer(indent); - line.append("+ "); - line.append(entry.getName()); - line.append(':'); - os.println(line); - visitContainer(entry); - } - - /** - * Prints the average amount of time spent by a task. - */ - public void visitTaskEntry(TaskEntry task) { - StringBuffer line = new StringBuffer(indent); - line.append("- "); - line.append(task.getName()); - line.append(": "); - if (task.getTotalRuns() != 0) { - int averageTime = task.getAverageMillis(); - totalAverageTime += averageTime; - line.append(Integer.toString(averageTime)); - line.append(" ms"); - if (task.getTotalRuns() > 1) { - line.append(" avg. over "); - line.append(Integer.toString(task.getTotalRuns())); - line.append(" runs"); - if (averageTime != 0) { - int confidence = task.getConfidenceInterval(); - line.append(" (95% C.I. +/- "); - line.append(Integer.toString(confidence)); - line.append(" ms = "); - line.append(Util.formatPercentageRatio(confidence, averageTime)); - line.append(")"); - } - } - } else { - line.append("skipped!"); - } - os.println(line); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/Result.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/Result.java deleted file mode 100644 index af36f54e2..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/Result.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import org.xml.sax.Attributes; - -/** - * Holds the result of one iteration of tests. - * Note that a test might be run multiple times per iteration, particularly if it - * is of very short duration to reduce sampling error. This behaviour is not supported - * at this time, but will likely be of value in the future. - */ -public class Result { - private int runs; - private int millis; - - public Result(Attributes attributes) { - this(1, Integer.parseInt(attributes.getValue("elapsed"))); - } - public Result(int runs, int millis) { - this.runs = runs; - this.millis = millis; - } - public int getRuns() { - return runs; - } - public int getMillis() { - return millis; - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/RootEntry.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/RootEntry.java deleted file mode 100644 index 914669176..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/RootEntry.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import org.xml.sax.Attributes; - -public class RootEntry extends LogEntryContainer { - private String sdkBuildId; - private String timestamp; - - public RootEntry(LogEntryContainer parent, Attributes attributes) { - this(parent, attributes.getValue("name"), - attributes.getValue("sdkbuild"), attributes.getValue("timestamp")); - } - - public RootEntry(LogEntryContainer parent, String name, String sdkBuildId, String timestamp) { - super(parent, name); - this.sdkBuildId = (sdkBuildId != null) ? sdkBuildId : "unknown"; - this.timestamp = (timestamp != null) ? timestamp : "unknown"; - } - - public void accept(ILogEntryVisitor visitor) { - visitor.visitRootEntry(this); - } - - /** - * Returns the SDK Build id. - */ - public String getSDKBuildId() { - return sdkBuildId; - } - - /** - * Returns the class name of the test case. - */ - public String getTimestamp() { - return timestamp; - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/TaskEntry.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/TaskEntry.java deleted file mode 100644 index ac08e64d1..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/TaskEntry.java +++ /dev/null @@ -1,100 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.xml.sax.Attributes; - -public class TaskEntry extends LogEntry { - private List /* of Result */ results = new ArrayList(); - - public TaskEntry(LogEntryContainer parent, Attributes attributes) { - this(parent, attributes.getValue("name")); - } - - public TaskEntry(LogEntryContainer parent, String name) { - super(parent, name); - } - - public void accept(ILogEntryVisitor visitor) { - visitor.visitTaskEntry(this); - } - - /** - * Returns the average number of milliseconds elapsed, or -1 if unknown. - */ - public int getAverageMillis() { - int totalMillis = 0; - int totalRuns = 0; - for (Iterator it = results.iterator(); it.hasNext();) { - Result result = (Result) it.next(); - totalMillis += result.getMillis(); - totalRuns += result.getRuns(); - } - if (totalRuns == 0) return -1; - return totalMillis / totalRuns; - } - - /** - * Returns the standard deviation of the sample. - * sqrt((n * sum(X^2) - sum(X)^2) / (n * (n-1))) - */ - public double getStandardDeviation() { - double sumOfSquares = 0.0, sum = 0.0; - int totalRuns = 0; - for (Iterator it = results.iterator(); it.hasNext();) { - Result result = (Result) it.next(); - if (result.getRuns() == 0) continue; - totalRuns += result.getRuns(); - sum += result.getMillis(); - double average = (double)result.getMillis() / result.getRuns(); - sumOfSquares += average * average * result.getRuns(); - } - if (totalRuns == 0) return 0; - return Math.sqrt((sumOfSquares * totalRuns - sum * sum) / (totalRuns * (totalRuns - 1))); - } - - /** - * Returns a 95% confidence interval from the mean represented by getAverageMillis() - * Uses the formula: - * 1.960 * stdev() / sqrt(n) - */ - public int getConfidenceInterval() { - return (int) (1.960 * getStandardDeviation() / Math.sqrt(getTotalRuns())); - } - - /** - * Returns the number of times this task was run. - */ - public int getTotalRuns() { - int totalRuns = 0; - for (Iterator it = results.iterator(); it.hasNext();) { - Result result = (Result) it.next(); - totalRuns += result.getRuns(); - } - return totalRuns; - } - - /** - * Returns an array of all Results for this task. - */ - public Result[] getResults() { - return (Result[]) results.toArray(new Result[results.size()]); - } - - /** - * Adds a result. - * @param result the result - */ - public void addResult(Result result) { - results.add(result); - } - - -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/Util.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/Util.java deleted file mode 100644 index 10d38f8ba..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/logformatter/Util.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.eclipse.team.tests.ccvs.ui.logformatter; - -/* - * (c) Copyright IBM Corp. 2000, 2002. - * All Rights Reserved. - */ - -import java.text.DecimalFormat; -import java.text.NumberFormat; - -public class Util { - private static final NumberFormat percentageFormat = new DecimalFormat("####0.00%"); - - public static String formatPercentageRatio(int numerator, int denominator) { - return percentageFormat.format((double)numerator / denominator); - } -} diff --git a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/unit/MenuEnablementTest.java b/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/unit/MenuEnablementTest.java deleted file mode 100644 index c4dab7308..000000000 --- a/tests/org.eclipse.team.tests.cvs.core/src/org/eclipse/team/tests/ccvs/ui/unit/MenuEnablementTest.java +++ /dev/null @@ -1,526 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Common Public License v0.5 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/cpl-v05.html - * - * Contributors: - * IBM - Initial implementation - ******************************************************************************/ -package org.eclipse.team.tests.ccvs.ui.unit; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; - -import junit.framework.Test; -import junit.framework.TestSuite; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IFolder; -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.team.core.TeamException; -import org.eclipse.team.internal.ccvs.core.CVSException; -import org.eclipse.team.internal.ccvs.core.resources.EclipseSynchronizer; -import org.eclipse.team.internal.ccvs.ui.actions.AddAction; -import org.eclipse.team.internal.ccvs.ui.actions.BranchAction; -import org.eclipse.team.internal.ccvs.ui.actions.CommitAction; -import org.eclipse.team.internal.ccvs.ui.actions.CompareWithRemoteAction; -import org.eclipse.team.internal.ccvs.ui.actions.CompareWithRevisionAction; -import org.eclipse.team.internal.ccvs.ui.actions.CompareWithTagAction; -import org.eclipse.team.internal.ccvs.ui.actions.GenerateDiffFileAction; -import org.eclipse.team.internal.ccvs.ui.actions.IgnoreAction; -import org.eclipse.team.internal.ccvs.ui.actions.MergeAction; -import org.eclipse.team.internal.ccvs.ui.actions.ReplaceWithRemoteAction; -import org.eclipse.team.internal.ccvs.ui.actions.ReplaceWithTagAction; -import org.eclipse.team.internal.ccvs.ui.actions.SetKeywordSubstitutionAction; -import org.eclipse.team.internal.ccvs.ui.actions.ShowResourceInHistoryAction; -import org.eclipse.team.internal.ccvs.ui.actions.SyncAction; -import org.eclipse.team.internal.ccvs.ui.actions.TagAction; -import org.eclipse.team.internal.ccvs.ui.actions.UnmanageAction; -import org.eclipse.team.internal.ccvs.ui.actions.UpdateAction; -import org.eclipse.team.tests.ccvs.core.CVSTestSetup; -import org.eclipse.team.tests.ccvs.core.EclipseTest; -import org.eclipse.ui.IActionDelegate; - -/** - * Test the menu enablement code for the CVS menus - */ -public class MenuEnablementTest extends EclipseTest { - - private static final int MANAGED = 1; - private static final int ADDED = 2; - private static final int UNMANAGED = 4; - private static final int IGNORED = 8; - private static final int SINGLE_ONLY = 16; - private static final int FOLDERS = 32; - private static final int FILES = 64; - private static final int UNMANAGED_PARENT = 128; - - /** - * Constructor for CVSProviderTest - */ - public MenuEnablementTest() { - super(); - } - - /** - * Constructor for CVSProviderTest - */ - public MenuEnablementTest(String name) { - super(name); - } - - public static Test suite() { - TestSuite suite = new TestSuite(MenuEnablementTest.class); - return new CVSTestSetup(suite); - //return new CVSTestSetup(new MenuEnablementTest("testReadOnly")); - } - - /** - * Create a test project for the given action delegate. The structure of - * this test project is used by the get resource methods to return resources - * of the proper type. - * - * @param actionDelegate
* @throws CoreException
* @throws TeamException
*/ - private IProject createTestProject(IActionDelegate actionDelegate) throws CoreException, TeamException { - String actionName = getName(actionDelegate); - return createProject(actionName, new String[] { "file.txt", "folder1/", "folder1/a.txt" }); - } - - private List getManagedResources(IProject testProject, boolean includeFolders, boolean multiple) { - List result = new ArrayList(); - if (includeFolders) { - result.add(testProject.getFolder("folder1")); - } else { - result.add(testProject.getFile("folder1/a.txt")); - } - if (multiple) { - result.add(testProject.getFile("file.txt")); - } - return result; - } - - private List getAddedResources(IProject testProject) throws CoreException, TeamException { - List result = new ArrayList(); - IFile file = testProject.getFile("added.txt"); - if (!file.exists()) { - addResources(testProject, new String[] {"added.txt"}, false); - } - result.add(file); - return result; - } - - private List getIgnoredResources(IProject testProject) throws CoreException, TeamException { - List result = new ArrayList(); - IFile file = testProject.getFile("ignored.txt"); - if (!file.exists()) { - file.create(getRandomContents(), false, null); - } - result.add(file); - IFile ignoreFile = testProject.getFile(".cvsignore"); - InputStream contents = new ByteArrayInputStream("ignored.txt".getBytes()); - if (ignoreFile.exists()) { - ignoreFile.setContents(contents, false, false, null); - } else { - ignoreFile.create(contents, false, null); - } - return result; - } - - private List getUnmanagedResources(IProject testProject) throws CoreException, TeamException { - List result = new ArrayList(); - IFile file = testProject.getFile("unmanaged.txt"); - if (!file.exists()) { - file.create(getRandomContents(), false, null); - } - result.add(file); - return result; - } - - /** - * Method getResourceWithUnmanagedParent. - * @param project - * @return Collection - */ - private List getResourceWithUnmanagedParent(IProject project) throws CoreException { - List result = new ArrayList(); - IFolder folder = project.getFolder("newFolder"); - if(!folder.exists()) folder.create(false, true, null); - IFile file = folder.getFile("unmanaged.txt"); - if (!file.exists()) { - file.create(getRandomContents(), false, null); - } - result.add(file); - return result; - } - - private List getOverlappingResources(IProject testProject, boolean includeFiles) { - List result = new ArrayList(); - result.add(testProject); - result.add(testProject.getFolder("folder1")); - if (includeFiles) { - result.add(testProject.getFile("folder1/a.txt")); - } - return result; - } - - private ISelection asSelection(List resources) { - return new StructuredSelection(resources); - } - - private String getName(IActionDelegate actionDelegate) { - return actionDelegate.getClass().getName(); - } - - /** - * Assert that the enablement for the given IActionDelegate and ISelection - * match that provided as expectedEnablement. - * - * @param actionDelegate
* @param selection
* @param expectedEnablement
*/ - private void assertEnablement(IActionDelegate actionDelegate, ISelection selection, boolean expectedEnablement) { - IAction action = new Action() {}; - actionDelegate.selectionChanged(action, selection); - assertEquals(getName(actionDelegate) + " enablement wrong!", expectedEnablement, action.isEnabled()); - } - - /** - * Method assertEnablement. - * @param action - * @param project - * @param IGNORED - * @param b - */ - private void assertEnablement(IActionDelegate action, IProject project, int kind, boolean expectedEnablement) throws CoreException, TeamException { - List resources = new ArrayList(); - boolean multiple = (kind & SINGLE_ONLY) == 0; - boolean includeFolders = ((kind & FOLDERS) > 0) || ((kind & FILES) == 0); - if ((kind & MANAGED) > 0) { - resources.addAll(getManagedResources(project, includeFolders, multiple)); - } - if ((kind & UNMANAGED) > 0) { - resources.addAll(getUnmanagedResources(project)); - } - if ((kind & IGNORED) > 0) { - resources.addAll(getIgnoredResources(project)); - } - if ((kind & ADDED) > 0) { - resources.addAll(getAddedResources(project)); - } - if ((kind & UNMANAGED_PARENT) > 0) { - resources.addAll(getResourceWithUnmanagedParent(project)); - } - ensureAllSyncInfoLoaded(project); - assertEnablement(action, asSelection(resources), expectedEnablement); - } - - /** - * Method ensureAllSyncInfoLoaded. - * @param project - */ - private void ensureAllSyncInfoLoaded(IProject project) throws CVSException { - EclipseSynchronizer.getInstance().ensureSyncInfoLoaded(new IResource[] {project}, IResource.DEPTH_INFINITE); - } - - /** - * Assert that the action is disabled for the reasons common to all menu - * actions. - * - * @param action - * @param project - */ - public void assertDisabledForCommonReasons(IActionDelegate action, IProject project) throws CoreException { - assertDisabledForNoSelection(action); - assertDisabledForFolderFileOverlap(action, project); - assertDisabledForClosedProject(action, project); - assertDisabledForNonCVSProject(action); - } - - private void assertDisabledForNoSelection(IActionDelegate actionDelegate) { - assertEnablement(actionDelegate, StructuredSelection.EMPTY, false /* expected enablement */); - } - - private void assertDisabledForFolderFileOverlap(IActionDelegate action, IProject project) { - List resources = getOverlappingResources(project, true /* include files */); - assertEnablement(action, asSelection(resources), false /* enabled */); - } - - private void assertDisabledForClosedProject(IActionDelegate action, IProject project) throws CoreException { - project.close(null); - List resources = new ArrayList(); - resources.add(project); - assertEnablement(action, asSelection(resources), false /* enabled */); - project.open(null); - } - - private void assertDisabledForNonCVSProject(IActionDelegate action) throws CoreException { - IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("Non-CVS"); - if (!project.exists()) - project.create(null); - List resources = new ArrayList(); - resources.add(project); - assertEnablement(action, asSelection(resources), false /* enabled */); - } - - private void assertEnabledForFolderOnlyOverlap(IActionDelegate action, IProject project) { - List resources = getOverlappingResources(project, false /* include files */); - assertEnablement(action, asSelection(resources), true /* enabled */); - } - - public void testAddAction() throws CoreException, TeamException { - IActionDelegate action = new AddAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnablement(action, project, MANAGED, false /* expected enablement */); - assertEnablement(action, project, ADDED, false /* expected enablement */); - assertEnablement(action, project, IGNORED, true /* expected enablement */); - assertEnablement(action, project, UNMANAGED, true /* expected enablement */); - assertEnablement(action, project, UNMANAGED | IGNORED, true /* expected enablement */); - assertEnablement(action, project, UNMANAGED | SINGLE_ONLY, true /* expected enablement */); - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, true /* expected enablement */); - } - - public void testBranchAction() throws CoreException, TeamException { - IActionDelegate action = new BranchAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnabledForFolderOnlyOverlap(action, project); - assertEnablement(action, project, MANAGED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED, true /* expected enablement */); - assertEnablement(action, project, IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, false /* expected enablement */); - } - - public void testCommitAction() throws CoreException, TeamException { - IActionDelegate action = new CommitAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnabledForFolderOnlyOverlap(action, project); - assertEnablement(action, project, MANAGED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED | UNMANAGED, true /* expected enablement */); - assertEnablement(action, project, IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED, true /* expected enablement */); - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, true /* expected enablement */); - } - - public void testCompareWithRemoteAction() throws CoreException, TeamException { - IActionDelegate action = new CompareWithRemoteAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnabledForFolderOnlyOverlap(action, project); - assertEnablement(action, project, MANAGED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED | UNMANAGED, true /* expected enablement */); - // true is expected for ignored resources whose parent is not ignored - assertEnablement(action, project, IGNORED, true /* expected enablement */); - assertEnablement(action, project, UNMANAGED, true /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, false /* expected enablement */); - // true is expected for ignored resources whose parent is not ignored - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, true /* expected enablement */); - } - - public void testCompareWithRevison() throws CoreException, TeamException { - IActionDelegate action = new CompareWithRevisionAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnablement(action, project, MANAGED | FILES | SINGLE_ONLY, true /* expected enablement */); - assertEnablement(action, project, MANAGED | FOLDERS | FILES, false /* expected enablement */); - assertEnablement(action, project, MANAGED | FOLDERS | SINGLE_ONLY, false /* expected enablement */); - assertEnablement(action, project, MANAGED | FILES, false /* expected enablement */); - assertEnablement(action, project, ADDED | SINGLE_ONLY, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED | SINGLE_ONLY, false /* expected enablement */); - assertEnablement(action, project, IGNORED | SINGLE_ONLY, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, false /* expected enablement */); - } - - public void testCompareWithTagAction() throws CoreException, TeamException { - IActionDelegate action = new CompareWithTagAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnabledForFolderOnlyOverlap(action, project); - assertEnablement(action, project, MANAGED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED | UNMANAGED, false /* expected enablement */); - assertEnablement(action, project, IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, false /* expected enablement */); - // true is expected for ignored resources whose parent is not ignored - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, false /* expected enablement */); - } - - public void testGenerateDiffAction() throws CoreException, TeamException { - IActionDelegate action = new GenerateDiffFileAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnablement(action, project, MANAGED | FILES | SINGLE_ONLY, true /* expected enablement */); - assertEnablement(action, project, MANAGED | FOLDERS | FILES, false /* expected enablement */); - assertEnablement(action, project, MANAGED | FOLDERS | SINGLE_ONLY, true /* expected enablement */); - assertEnablement(action, project, MANAGED | FILES, false /* expected enablement */); - assertEnablement(action, project, ADDED | SINGLE_ONLY, true /* expected enablement */); - assertEnablement(action, project, UNMANAGED | SINGLE_ONLY, true /* expected enablement */); - assertEnablement(action, project, IGNORED | SINGLE_ONLY, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, true /* expected enablement */); - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, false /* expected enablement */); - } - - /* - * Should be the same as testAdd
*/ - public void testIgnoreAction() throws CoreException, TeamException { - IActionDelegate action = new IgnoreAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnablement(action, project, MANAGED, false /* expected enablement */); - assertEnablement(action, project, ADDED, false /* expected enablement */); - assertEnablement(action, project, IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED, true /* expected enablement */); - assertEnablement(action, project, UNMANAGED | SINGLE_ONLY, true /* expected enablement */); - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, true /* expected enablement */); - } - - public void testMergeAction() throws CoreException, TeamException { - IActionDelegate action = new MergeAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnabledForFolderOnlyOverlap(action, project); - assertEnablement(action, project, MANAGED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED | UNMANAGED, false /* expected enablement */); - assertEnablement(action, project, IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, false /* expected enablement */); - } - - public void testReplaceWithRemoteAction() throws CoreException, TeamException { - IActionDelegate action = new ReplaceWithRemoteAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnabledForFolderOnlyOverlap(action, project); - assertEnablement(action, project, MANAGED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED, false /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED | UNMANAGED, false /* expected enablement */); - // true is expected for ignored resources whose parent is not ignored - assertEnablement(action, project, IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, false /* expected enablement */); - // true is expected for ignored resources whose parent is not ignored - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, false /* expected enablement */); - } - - /* - * Should be the same as testCompareWithTagAction - */ - public void testReplaceWithTagAction() throws CoreException, TeamException { - IActionDelegate action = new ReplaceWithTagAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnabledForFolderOnlyOverlap(action, project); - assertEnablement(action, project, MANAGED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED | UNMANAGED, false /* expected enablement */); - assertEnablement(action, project, IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, false /* expected enablement */); - // true is expected for ignored resources whose parent is not ignored - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, false /* expected enablement */); - } - - public void testKeywordSubstitutionAction() throws CoreException, TeamException { - IActionDelegate action = new SetKeywordSubstitutionAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnabledForFolderOnlyOverlap(action, project); - assertEnablement(action, project, MANAGED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED | UNMANAGED, false /* expected enablement */); - assertEnablement(action, project, IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, false /* expected enablement */); - } - - public void testShowInHistory() throws CoreException, TeamException { - IActionDelegate action = new ShowResourceInHistoryAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnablement(action, project, MANAGED | FILES | SINGLE_ONLY, true /* expected enablement */); - assertEnablement(action, project, MANAGED | FOLDERS | FILES, false /* expected enablement */); - assertEnablement(action, project, MANAGED | FOLDERS | SINGLE_ONLY, false /* expected enablement */); - assertEnablement(action, project, MANAGED | FILES, false /* expected enablement */); - assertEnablement(action, project, ADDED | SINGLE_ONLY, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED | SINGLE_ONLY, false /* expected enablement */); - assertEnablement(action, project, IGNORED | SINGLE_ONLY, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, false /* expected enablement */); - } - - public void testSyncAction() throws CoreException, TeamException { - IActionDelegate action = new SyncAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnabledForFolderOnlyOverlap(action, project); - assertEnablement(action, project, MANAGED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED | UNMANAGED, true /* expected enablement */); - // true is expected for ignored resources whose parent is not ignored - assertEnablement(action, project, IGNORED, true /* expected enablement */); - assertEnablement(action, project, UNMANAGED, true /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, false /* expected enablement */); - // true is expected for ignored resources whose parent is not ignored - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, true /* expected enablement */); - } - - public void testTagAction() throws CoreException, TeamException { - IActionDelegate action = new TagAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnabledForFolderOnlyOverlap(action, project); - assertEnablement(action, project, MANAGED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED, false /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED | UNMANAGED, false /* expected enablement */); - assertEnablement(action, project, IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, false /* expected enablement */); - } - - public void testUnmanageAction() throws CoreException, TeamException { - IActionDelegate action = new UnmanageAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - List resources = new ArrayList(); - resources.add(project); - ensureAllSyncInfoLoaded(project); - assertEnablement(action, asSelection(resources), true); - } - - public void testUpdateAction() throws CoreException, TeamException { - IActionDelegate action = new UpdateAction(); - IProject project = createTestProject(action); - assertDisabledForCommonReasons(action, project); - assertEnabledForFolderOnlyOverlap(action, project); - assertEnablement(action, project, MANAGED, true /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED, false /* expected enablement */); - assertEnablement(action, project, MANAGED | ADDED | UNMANAGED, false /* expected enablement */); - assertEnablement(action, project, IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED | MANAGED | IGNORED, false /* expected enablement */); - assertEnablement(action, project, UNMANAGED_PARENT, false /* expected enablement */); - } -} |