Test Pass#2: JDT-UI, Editor, Search, Compare
Duration
March 10-11
Goal
- test new functions added since 2.0
- sanity check performance memory leaks
- workspace compatibility (upgrading from 2.0
to 2.1)
- test corner areas
- handling of error situations
- watch log
- error messages
- perform operations while CUs have errors
- scalability (develop in full source workspace)
Testers
- Kai (1day on loan to Ant/Debug)
- Martin (1day on loan to PDE/Install Update/Help)
- Erich (50% rest bug triage)
- Dani
- Adam
- Christophe Elek
- Kevin McGuire
- (Dirk -> vacation)
- (Andre -> conference)
Workspace Setup
Create a new workspace:
- workspace in full source up to JDT
Leak Sanity Testing (Adam)
- open/close
- Java editor, class file editor
- Java views (packages, browsing, type hierarchy, JUnit)
Navigation (Christophe, Adam)
- Show in support
- editor->views
- views->views
- in all JDT perspectives
- Back linking toggle
- Navigation history
Project Layout/Class Path (Dani, Adam)
- Linked resources
- linked output folders
- linked source folders
- linked and nested source folders
- test rendering in views
- linked class folders
- multiple output folders
- exclusion filters
- test rendering in views
- JAR Exporting
- Create a project on an existing directory structure
- verify that source folders and output folders
are properly detected
- convert a project from no source folders->source folders
- edit existing class path entries
- class path containers
- source attachments
- javadoc
Packages view (Kai, Kevin M)
- New filters
- hide Closed projects
- hide Non Java Projects
- open/closing of projects
- open project with no element selected in
package explorer
- Rendering of non Java Projects
- Hierarchical and Flat Layout
- Logical class path container
- Hierarchical Packages
Java Browsing Perspective
(Kai, Christophe)
- Logical Packages
- Hierarchical Packages
JUnit (Christophe, Kai)
- rerun a single test
- run a single test method
- run all tests inside a package
- Navigate>Go to>referring Tests
Search (Adam, Kevin M)
- search occurrences in file
- global Search menu
- file search
- text search in combination with different encoding
- text search/replace support (available via context menu on search
result).
Type Hierarchy (Kai, Christophe)
- Open type with progress monitor
- Open type hierarchy in the type hierarchy
perspective (Preferences>Java>Appearance)
- Show defining class
- Behavior of open type hierarchy when editing
files.
- Sort methods by defining type
Quick Fix/Quick Assist (Erich)
- import
- method/constructor
- undefined
- parameter mismatch, parameters wrong order
- method with constructor name
- void method returns
- missing return type
- missing return statement
- wrong access (not visible, not static)
- abstract/native method with body
- non-abstract/non-native without body
- abstract method in non abstract type
- unused private method
- need to emulate method access
- implicit super call undefined/not visible
(constructor)
- uncaught type in implicit super call (constructor)
- instance method/field access in constructor
- non static access to a method
- types: (Superclass, Interface, Exception type,
Field type, Argument type, Catch type, Cast type)
- not visible
- undefined
- ambiguous (two import-on-demands for the same
type)
- unimplemented methods
- not matching with CU name
- variables:
- wrong access (not visible, not static)
- undefined
- unused private
- non static access
- need to emulate method access
- outer local must be final
- exceptions:
- unneeded catch block
- uncaught exception
- catch block to thrown exception (Quick Assist)
- others
- wrong package declaration
- wrong cu name
- not nls'ed strings
- unwrap do/while/for/if/try-finally/parenthesized-expression/method-invocation/anonym-class
- local rename (linked rename)
- assign to variable
Coding Support (Adam, Erich)
- create delegate
- getter/setter creation dialog (try running the action from different
points - editor with various selections, views with various
selections)
- try different instance variable prefix settings
- verify that 'organize imports' is smarter now and does not import
classes from crypto packages on jdk 1.4
- cancel a long running organize import action
- override method
- code templates
- sort members
Code Reorg (Dani, Christophe)
- Test Rename, Move, Copy,
Delete with linked resources (only create and delete should work)
- verify that we never un-link things (never perform
deep copy/move)
- linked Compilation unit
- linked package
- linked source folder (important:
test also reorg actions with nested source folders)
- linked any file
- linked folder
- verify that rename, move, copy of linked source
folders and packages is disabled (you get a message box)
- rename project that has linked source folders
(should not make them un-linked)
- Test reorg operations on read only resources
- Reorg between java and non-java projects
Refactoring (Martin, Kevin M)
- performing refactorings on files with syntax or compile errors
- performing refactorings on read-only files(->validate edit).
- refactoring and out of sync files
- verify that refactoring honors code formatter settings (including spaces
for tabs)
- Test new refactoring dialog
- Test new refactoring:
- Inline Method
- Move instance method to component (parameter or
field type )
- Change Method/Constructor Signature
- Convert Anonymous Class to Nested Class
- Convert Member Type to Top level type
- Convert Local Variable to Field
- Push Up (should support statics too) & Pull
Down
- Extract Interface
- Use Supertype where possible
- Extract Constant
- Inline Constant
- Test that refactorings which
create new files (nls, extract interface, convert member to top level ) use
templates set up in preferences and honor organize import preferences
Compare (Kevin M, Dani)
Setup: load JUnit from repository (not by importing), so that you can better compare against
a base version.
Compare
- while performing the following tests, watch out
that the new "smooth" lines draw correctly.
- verify the new option "Connect ranges with single
line".
- in Sync view (or when doing a three-way compare),
verify the new "Copy All Non-conflicting changes" action. It should copy
all incoming changes into your local file while leaving your outgoing changes
alone. You'll have to merge conflicts manually.
- Test the new Copy-Incoming-Changes-UI that appears
when hovering over the small blue squares on the connecting lines. After
"resolving" a differences, the button should no longer appear.
- If you use the copying actions in a conflicting
case, it shouldn't replace one side with the other but should append one side
to the range on the other side.
- Verify that the blue overview indicator on the
left hand side turns into green after resolution of the last incoming change.
- Verify that you can assign keyboard shortcuts
to the 4 Copy and 2 Navigation-actions in the toolbar of the text compare
viewer.
Local History
- 'Restore from Local history' now supports to
restore multiple methods (of the same container). Rename or remove methods
or fields in the outliner of a Java CU select the type containing the deleted
members and perform 'Restore from Local history'; the dialog should list the
members that are no longer contained in the type select a member and
dismiss dialog with 'Restore' button member should be inserted
- test local history with
different character encodings. Switch Eclipse character encoding to UTF16,
create a new project with some Java files containing a few "special" characters
(e.g. umlauts). Verify that all compare/restore/replace dialogs show the
correct file contents.
Patch
- Create a patch file for a single file. Apply
patch against a single file or its containing project. Verify that patch
is applied correctly.
- test "fuzz factor" guessing: create patch, reload original
version from repository, edit so that some or all "hunks" in the
patch no longer automatically match. If you now press "guess" the resulting
value should allow for the maximum number of matches.
- verify the new option 'Automatically
save dirty editors before patching' on the Compare/Patch preference page.
- bringing the workspace back to its initial state by reverse applying
a patch create a patch for the modified JUnit project either in a file
or in clipboard open patch wizard and apply the patch to the JUnit project
check 'reverse' option ensure that everything matches and no error occur
(it may be necessary to turn on 'Ignore white space' if the JUnit project has
been checked into repository in 'binary' mode) apply patch with 'Finish'
compare the JUnit project with latest from repository: there should be no
changes
Text Editor, Class File Editor, Compilation Unit Editor (Christophe, Erich)
- error indication
- verify that the red sea goes away when a bug is
fixed
- compile time problems vs. temporary problems
indication
- fixed problems
- positioning of cursor when not on an error
- eating code assist
- smart Home End
- go Into Functionality in Java Outline view
- configurable Text Hovers
- text Hover which shows Source
- preferences for hyperlink feature
- Emacs: Ctrl+K cuts text to clipboard
- Emacs-style incremental search
- Overview Ruler support (clicking, tooltips,
configurable colors)
- Line Selection via Line number ruler
- Remember caret location when vertically scrolling
- Editor fonts moved to the Workbench preference
page
- Undo auto completion removes Added imports
- go to previous / next member
- expand selection to enclosing element/ next/previous
element
- go to next/previous problem (including temporary problems)
- encoding
- handling of read- only files
- try to find cases in which read only files can be modified
- bracket matching
- print margin indication
- current line highlighting
- overview ruler
- vertical ruler
- floating annotations
- update of annotations
- interaction with revert
- line numbers
- preferences
- enable/disable all preferences defined for the editors
- test the template preference page (define/enable/edit templates)
- test interaction between platform and JDT preferences
- code assist and parameter hints
- proposal ordering
- template proposal ordering
- filtering
- templates
- syntax highlighting
- structure reconciling
- hover help (mouse hover, F2)
- segmented view
- action retargeting between editor and outliner
- editor interaction with the task list (clicking a marker select task
in Task list)
- go to editor from the task list
- editor context menu
- vertical ruler context menu
- action enabling/disabling
- action target/result
- accessibility
- text actions
- mark
- delete line
- shift
- line delimiter conversion
- comment/uncomment
- all/save/revert/undo/....
- find
- find/replace
- find/replace
- find next
- find previous
- incremental find
- class file editor
- test read only state
- with source attachment
- without source attachment
- test attaching of source by using the property page and the editor
form