TS 71 SVN

Subversion Support Test Specification for NetBeans 7.1

Author: Stepan Zebra, Michal Strnad
Version: 1.0
Lastupdate: 4.11.2011
Introduction: Subversion open source tool is one of the supported version control systems in the IDE. This document describes how SVN profile for NetBeans SVN Support module should be tested in order to know whether all of its functionality works correctly. All Test Suites should be performed with all access method types: "file:///", "svn://", "svn+ssh://", "http://" and "https://"
Comments: This document is heavily based on TS_70_SVN which is now obsolete.

Contents


Important

Since 6.8 the scanning of project takes place after a SVN task is finished. It is important to watch for the occurence of "Scanning in progress" in the bottom status bar. Please, follow these rules during testing:

  • Use repository with large amount of data. Also use actions that affect more files, so the scanning takes longer time and is easily noticeable
  • Always make sure, that the scanning is performed *after* a SVN task is finished

Since 7.0 the SVN client may run on three types of implementation. These are:

  • javahl - uses bundled or external SVN client with javaHL library
  • svnkit - uses full java SVN client, integrated in 7.0
  • commandline - uses external SVN client via console commands

NetBeans chooses which type to use according to their availability. At first it tries javahl, then svnkit, then commandline. Because svnkit was integrated into IDE, it's always available and no external client is needed. Practically, it means that normal behavior is to check for javahl, and if it isn't avaliable, then use svnkit. For testing and debugging purposes, NetBeans can be forced to use desired type by starting IDE with parameter

-J-DsvnClientAdapterFactory=commandline

where argument is the name of desired type ("commandline" in example). Note, that if you force IDE to use type which isn't available, it will still checks for next available type lower in hierarchy and use that instead.
ADDITIONAL NOTES:
SVN actions are selection sensitive.
Basic actions are accessible both from main menu and project explorer's context menu.
If SVN versioned content is selected, SVN actions are avaliable from main menu directly (Not just from submenu "Subversion").

Test suite: Install svn client via IDE updater

Purpose: To test if svn client is correctly installed via IDE.
Setup: No svn client should be installed on tested workstation or should not be defined in system PATH variable. Start IDE with clear userdir. Start IDE with parameter forcing it to run client on "commandline".

  1. Get Bundled Subversion 1.5 binaries for Windows from UC
    1. Invoke Team | Subversion | Checkout... action from main menu. Dialog "SVN Command Failed" shows up.
    2. Option "Get bundled Subversion binaries for Windows from Update Center" should be checked as default.
    3. Press OK.
    4. Approve License Agreement.
    5. Press OK.
    6. Confirm IDE restarting.
    7. Check basic commands connected with work in subversion repository.
    • EXPECTED RESULT: In case that License Agreement is approved, OK button should be enabled. When OK is pressed, IDE should start to download SVN binaries from UC. Then IDE asks user if IDE could be restarted. After restart, IDE should fully support all svn commands. Check your userdir where in "<userdir>/<nbversion>/modules/lib/" location there should be new 9 libraries which begins with libsvn*.
  2. Force install into shared directories
    1. Start IDE with clear userdir.
    2. Invoke Team | Subversion | Checkout... action from main menu. Dialog "SVN Command Failed" shows up.
    3. Check option: "Force install into shared directories".
    4. Press OK.
    5. Accept License Agreement.
    6. Press OK.
    7. Confirm IDE restarting.
    8. Check basic commands connected with work in subversion repository.
    • EXPECTED RESULT: In case that License Agreement is approved, OK button should be enabled. When OK is pressed, IDE should start to download SVN binaries from UC. Then IDE asks user if IDE could be restarted. After restart, IDE should fully support all svn commands. Check your NB installation directory "<nbdir>/extra/modules/lib/", there should be new 9 libraries which begins with libsvn*. On Vista and Windows 7 there could be conflict with user permission. If install dir doesn't have sufficient rights, svn client is automatically installed into userdir.


Test suite: Setting up URL and content checkout

Purpose: This suite tests whether it is possible to access valid Subversion repository using different types of connections.
Comments: In "svn","svn+ssh", "http" and "https" connection types there is also "Save Username and Password" checkbox. If you check it, the username and password will be stored in a file (of course NOT in plain text).
Setup: If IDE runs with SVN client adapter on svnkit, no setup is needed, otherwise Subversion client version 1.5 or higher has to be installed on tested platform.

  1. svn://
    1. Invoke Team | Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
    2. Switch to "Repository URL" field and set it to your valid repository with "svn://" connection type (e.g. "svn://localhost/svn").
    3. After setting up "svn://" connection type there should be visible "User", "Password" and "Proxy Configuration..." components.
    4. Setup username and password and verify functionality of "Save Username and Password" checkbox and "Proxy Configuration..." button.
    • EXPECTED RESULT: Push Next button. Next dialog of "Checkout" wizard should show up. Verify that "Browse..." buttons are shown for "Repository Folder(s)", "Repository Revision" and "Local Folder", and "Search" button for "Repository Revision" in this step of "Checkout" dialog. Use "Browse..." button next to "Repository Folder(s)" field to enter valid folder for checkout. Push Finish button. Verify the result of checkout action.
  2. svn+ssh://
    • Setup: On Windows platform, in case of not using svnkit, "plink" application should have been installed.
    1. Invoke Team | Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
    2. Switch to "Repository URL" field and set it to your valid repository with "svn+ssh://" connection type (e.g. "svn+ssh://localhost/svn").
    3. After setting up "svn+ssh://" connection type, if IDE runs with SVN client on svnkit, then there should be visible "User", "Password", "Port Number", "Identity File", "Passphrase" and "Proxy Configuration..." components, otherwise there should be visible "Use External Tunnel" text field.
    4. Setup username, password, path to certificate and passphrase or setup valid external tunnel command. Verify functionality of "Save Username and Password" checkbox and "Proxy Configuration..." button.
    • EXPECTED RESULT: Push Next button. Next dialog of "Checkout" wizard should show up. Verify that "Browse..." buttons are shown for "Repository Folder(s)", "Repository Revision" and "Local Folder", and "Search" button for "Repository Revision" in this step of "Checkout" dialog. Use "Browse..." button next to "Repository Folder(s)" field to enter valid folder for checkout. Push Finish button. Verify the result of checkout action.
  3. file:///
    1. Invoke Team | Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
    2. Switch to "Repository URL" field and set it to your valid local repository (e.g. "file:///svnrepo").
    • EXPECTED RESULT: Push Next button. Next dialog of "Checkout" wizard should show up. Verify that "Browse..." buttons are shown for "Repository Folder(s)", "Repository Revision" and "Local Folder", and "Search" button for "Repository Revision" in this step of "Checkout" dialog. Use "Browse..." button next to "Repository Folder(s)" field to enter valid folder for checkout. Push Finish button. Verify the result of checkout action.
  4. http://
    1. Invoke Team | Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
    2. Switch to "Repository URL" field and set it to your valid repository with "http://" connection type (e.g. "http://localhost/svnrepo").
    3. After setting up "http://" connection type there should be visible "User", "Password" and "Proxy Configuration..." components.
    4. Setup username and password and verify functionality of "Save Username and Password" checkbox and "Proxy Configuration..." button.
    • EXPECTED RESULT: Push Next button. Next dialog of "Checkout" wizard should show up. Verify that "Browse..." buttons are shown for "Repository Folder(s)", "Repository Revision" and "Local Folder", and "Search" button for "Repository Revision" in this step of "Checkout" dialog. Use "Browse..." button next to "Repository Folder(s)" field to enter valid folder for checkout. Push Finish button. Verify the result of checkout action.
  5. https://
    1. Invoke Team | Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
    2. Switch to "Repository URL" field and set it to your valid repository with "https://" connection type (e.g. "https://localhost/svnrepo").
    3. After setting up "https://" connection type there should be visible "User", "Password" and "Proxy Configuration..." components.
    4. Setup username, password, path to certificate and passphrase. Verify functionality of "Save Username and Password" checkbox and "Proxy Configuration..." button.
    • EXPECTED RESULT: Push Next button. You will be asked to accept the certificate. Next dialog of "Checkout" wizard should show up. Verify that "Browse" buttons are shown for "Repository Folder(s)", "Repository Revision" and "Local Folder", and "Search" button for "Repository Revision" in this step of "Checkout" dialog. Use "Browse..." button next to "Repository Folder(s)" field to enter valid folder for checkout. Push Finish button. Verify the result of checkout action.
  6. Relocate
    • Comments: NOTE: You can relocate your project only to the same repository (same UUID) using different login or access method.
    1. Select project root and invoke Team | Subversion | Relocate... main menu action.
    2. New window with two noneditable text fields labeled "Working Copy" and "Current URL" and one editable text field labeled "New URL" appears.
    3. Edit the last mentioned text field, setup a new URL and push Relocate button.
    • EXPECTED RESULT: Switch to the "Output Tab". There should be message like
      ==[IDE]== Mar 11, 2011 1:16:23 PM Relocating... finished.
      indicating that the command was successful. Since now you are going to connect to the same repository as another user or via another access method.


Test suite: Importing new project

Purpose: The goal of this suite is to create new project and upload it to Subversion repository.
Setup: No setup is necessary.

  1. Project import
    1. Invoke File | New Project... from main menu.
    2. "New Project" wizard shows up. Choose e.g "Java" and "Java Application" and push Next button.
    3. Setup name of the project, project location as desired and push Finish button.
    4. Switch to "Projects" view and select the root of the project.
    5. Invoke Team | Subversion | Import into Repository... from main menu.
    6. "Import" wizard shows up.
    7. Setup "Repository URL" as desired and all necessary fields for chosen access method and push Next button. All displayed components depends on access method type - see Setting up URL.
    8. Push Browse... button. Verify that browsing through the repository is allowed. Verify also functionality of "Into a new Folder" button (it creates only virtual folders, nothing is changed in the repository).
    9. Enter some comment into "Specify the Message" field and push Next button.
    10. Third step of Import wizard shows up. Verify whether you can change values in "Commit Action" column (Add as Text, Add as Binary and Exclude from Commit).
    • EXPECTED RESULT: In "Output" tab verify whether "Import" command finished successfully. Now context commands on this project root in "Projects" view shouldn't contain "Import into Repository..." action. All sources should be imported and Subversion actions should be available.


Test suite: Standard development of project

Purpose: This suite tests the most often used commands of typical Subversion user.
Setup: No setup is necessary except steps from previous test suite.

  1. "Subversion" tab
    1. Invoke Window | Versioning | Subversion from main menu.
    • EXPECTED RESULT: Verify that "Subversion" tab is opened.
  2. Update action
    1. Switch to "Files" view.
    2. Invoke Window | Output | Versioning Output from main menu. "Versioning Output" tab should be opened.
    3. Invoke Subversion | Update popup menu action on project root.
    • EXPECTED RESULT: Verify that in "Output" tab there is message like
      ==[IDE]== Mar 18, 2011 1:09:09 PM Updating "Project" finished.
      and in "Versioning Output", there should be displayed
      <No Files Were Changed By The Update>
      or a list of all updated files.
  3. File modifying
    1. Select e.g. "Main.java" file, modify it.
    2. Insert brand-new line somewhere into the file.
    3. Delete some other line, but not directly next to the new line.
    4. Modify another line, but not directly next to the lines mentioned above, and save the file.
    • EXPECTED RESULT: The file "Main.java" must change its foreground color to blue.
  4. File differences
    1. Switch off View | Show Diff Sidebar option from main menu. Diff column marks should disappear.
    2. Switch on View | Show Diff Sidebar option from main menu. Diff column should be shown in the left of side of editor.
    3. Switch on View | Show Versioning Labels option from main menu. Labels should be shown in the Project Explorer window.
    4. Select this file.
    5. Invoke Team | Diff action from main menu.
    • EXPECTED RESULT: All three differences must be highlighted in a special window with both versions of the file. New line is green, removed line is red and modified one is blue. Verify UP and DOWN arrows, that should navigate among differences.
  5. Files/Folders differences
    1. Create new package "xx.yy" in this project.
    2. Create new Java class "NewClass" in package "xx.yy".
    3. Select the project root and invoke Team | Show Changes from main menu.
    4. Files should be listed in "Subversion" tab - "Main.java" as "Locally Modified", "NewClass.java" and also the new packages "xx" and "yy" should be displayed as "Locally New".
    5. Select the root of the project and invoke Subversion | Diff popup menu action.
    • EXPECTED RESULT: New tab labeled "Project_Name [Diff]" is displayed. Both files "Main.java" and "NewClass.java" should be contained in a table. Verify functionality of "UP" and "DOWN" arrows. (Arrows navigate among all differences in processed files). Then verify functionality of "Diff all" icon in "Subversion" tab - it should give the same result as step 5 of this case. Also verify that "Update" and "Commit" icons behave the same both in "Diff" tab and "Subversion" tab.
  6. Subversion tab action
    1. Select the root of the project and invoke Subversion | Show Changes popup menu action.
    2. There should be "Show Both Locally and Remotely Modified Files", "Show Locally Modified Files" and "Show Remotely Modified Files" toggle buttons and icons with tooltips "Refresh Status", "Diff All", "Update All" and "Commit All".
    • EXPECTED RESULT: Verify the functionality of "Subversion" tab actions. Setting "Show Both Locally and Remotely Modified Files" - displays both locally and remotely modified files, "Show Locally Modified Files" - displays only locally modified files and "Show Remotely Modified Files" - displays only remotely modified files. "Refresh Status" - refreshes the status of the selected files and folders. Files displayed in the Versioning window can be refreshed to reflect any changes that may have been made externally. "Diff All" - opens the Diff Viewer providing you with a side-by-side comparison of your local copies and the versions maintained in the repository. "Update All" - updates all files from the repository. "Commit All" - enables you to commit local changes to the repository.
  7. Open file from "Subversion" tab
    1. Close "NewClass.java" from editor.
    2. Switch to "Subversion" tab and invoke Open popup menu action on "NewClass.java" record.
    • EXPECTED RESULT: Verify that file is opened into editor.
  8. Commit files/folders
    1. Switch to "Subversion" tab.
    2. Push "Commit All" icon.
    3. "Commit dialog" shows up. It should contain two files: "Main.java", "NewClass.java", and two folders "xx" and "yy". Enter some commit message and push Commit button.
    • EXPECTED RESULT: Verify that blue badges disappeared. Files and folders/packages should disappear from "Subversion" tab immediately too.
  9. Creation of patch
    1. Modify "Main.java" file and save it.
    2. Modify "NewClass.java" file and save it.
    3. Select project root and invoke Team | Export Diff Patch... from main menu. Select desired output file for patch and confirm the dialog.
    • EXPECTED RESULT: Patch should be created in your chosen file and opened into editor.
  10. Applying patch
    1. Switch to "Files" view and select project root.
    2. Invoke Team | Revert Modifications... from main menu. In shown dialog, select "Revert Local Changes" option and push Revert button.
    3. Make sure that all modified files are "up-to-date" now.
    4. Select project root and invoke Team | Apply Diff Patch... popup menu action. In shown file browser, select patch created in previous test case and push Patch button.
    5. Answer "Yes" in question dialog to confirm watching differences.
    • EXPECTED RESULT: Verify that new Diff tabs were opened into the editor for all patched files. Verify results displayed in both "Graphical" and "Textual" representation of Diff tabs.
  11. Create conflict
    1. Modify "Main.java" file at two separate lines and save it.
    2. Invoke Team | Checkout... from main menu and setup the parameters to checkout the same project, but into different "Local Folder".
    3. Open the checked out project, modify "Main.java" class at the same lines as in first step, and commit it.
    4. Return to previous project, select the project root and invoke Subversion | Update with Dependencies popup menu action.
    • EXPECTED RESULT: "Warning" dialog should be displayed, press OK. Path to "Main.java" file should be indicated with red badges. This file should change its color to red too.
  12. Resolve conflict
    1. Invoke Subversion | Resolve Conflicts... popup menu action on "Main.java" node.
    2. Merging tool must get opened in editor area highlighting the lines with conflicts. Left pane should read "Local Working File", right pane "Remote file" and bottom should read "Result after merge".
    3. Select left modification (the working one) and push Accept & Next button above its pane.
    4. Make sure that colors changed to blue or green and the cursor (asterisk) moved to the next line of conflict.
    5. Push OK button. Question dialog shows up. There should be a message that not all conflicts were resolved. Push Cancel.
    6. Select left modification (the working one) and push Accept button above its pane.
    7. Make sure that colors changed to blue or green and "Unresolved" in top of the component says "0" conflicts. Push OK button and confirm your decision.
    • EXPECTED RESULT: The "Main.java" node should change back to normal and should have appropriate badge (blue badges for path). In addition, the merge tool must be closed.
  13. Conflict resolved
    1. Do all steps from Create conflict test case.
    2. Invoke Subversion | Show Changes on project root.
    3. From within editor resolve manually all conflicts by editing the "Main.java" file and save the file.
    4. Invoke Subversion | Resolve Conflicts... popup menu action on "Main.java" node from "Subversion" tab.
    • EXPECTED RESULT: Merging tool shouldn't be opened. The "Main.java" node should change back to normal and should have appropriate badge (blue badges for path).
  14. Delete file
    1. Switch to "Projects" view and expand "xx.yy" package node.
    2. Invoke Delete popup menu action on "NewClass.java" file node.
    3. Confirm your decision by clicking OK in follow-up question dialog.
    4. File should disappear from all explorer views. It should appear in "Subversion" tab with "Locally Deleted" status.
    5. Select "NewClass.java" in "Subversion" tab and invoke Revert Delete popup menu action.
    6. Push Revert in follow-up question dialog.
    7. File should appear in all of explorer views.
    8. Invoke Delete popup menu action on "NewClass.java" file node again.
    9. Confirm your decision by clicking OK in follow-up question dialog.
    10. Select "NewClass.java" in "Subversion" tab and invoke Commit... popup menu action.
    11. "Commit" dialog shows up. Fill commit message and push Commit.
    • EXPECTED RESULT: File "NewClass.java" should disappear from all explorer views, and from "Subversion" tab.
  15. Delete locally new file
    1. Switch to "Projects" view and invoke Subversion | Show Changes on project root.
    2. Create new java class "NewClass1.java" in the package "xx.yy".
    3. Invoke Delete popup menu action within "Subversion" tab on "NewClass1.java" file node.
    4. Confirm your decision by clicking Yes in follow-up question dialog.
    • EXPECTED RESULT: File "NewClass1.java" should disappear from all explorer views, and from "Subversion" tab.
  16. Delete Folder(s)
    1. Create new Java interface "NewInterface.java" in "xx.yy" package and commit it.
    2. Invoke Delete popup menu action on the "xx.yy" package node.
    3. Confirm your decision by clicking OK in follow-up question dialog.
    4. Select all deleted nodes in "Subversion" tab and invoke Revert Delete popup menu action.
    5. Confirm your decision by clicking Revert in follow-up question dialog.
    6. Package and its files should appear in all of explorer views.
    7. Repeat 2nd and 3rd step.
    8. On "Subversion" tab push Commit All button.
    • EXPECTED RESULT: Content of the package should disappear from all views.
  17. Project Deletion
    1. Create new project.
    2. Import this project into SVN repository. Select its root and invoke Subversion | Show Changes from main menu.
    3. Select project root node and invoke Delete popup menu action. (Confirm dialog and delete also sources)
    • EXPECTED RESULT: All files should appear in "Subversion" tab. These files should be in "Locally Deleted" status. Select all files in "Locally Deleted" state and invoke Revert Delete popup menu action. After successful action it should be possible to open this project again.
  18. Exclude file from commit
    1. Invoke Subversion | Show Changes action on the project root.
    2. Create new package "xx.zz" and create new "JFrame Form" in it.
    3. Switch to "Subversion" tab, there should be listed "xx", "zz", "NewJFrame.java" and "NewJFrame.form" files. Select all the files and invoke Commit....
    4. "Commit" dialog should be displayed with these JFrame files and packages. Change the "Commit Action" to "Exclude from Commit" for all files.
    5. "Commit" button should be disabled. Press Cancel.
    6. From within "Subversion" tab select all files of newly created JFrame and invoke Exclude from Commit popup menu action.
    • EXPECTED RESULT: All files have to be excluded from commit with no change of their statuses. "Include in Commit" action should be accessible in popup menu actions in "Subversion" tab and performing "Include in Commit" must return file to "committing" status.
  19. Ignore file
    1. Create new Java class "NewClass2.java" into "javaapplication" package.
    2. Select this Java file and invoke Team | Ignore from main menu.
    • EXPECTED RESULT: "NewClass2.java" should change its color to gray in all explorer views and it should disappear from "Subversion" tab. Its parent package should appear there instead marked as "Locally Modified". If you invoke diff on it, there should be property named "svn:ignore" with value "NewClass2.java".
  20. Ignore folders
    1. Create new package "newpackage" into "javaapplication" package.
    2. Select this "newpackage" package and invoke Subversion | Ignore popup menu action.
    • EXPECTED RESULT: "newpackage" should disappear from "Subversion" tab. "javaaplication" should be listed there instead. Invoke Diff popup menu action on it. There should be "svn:ignore" in the "Property" column of the table. In the "Locally Modified" part of the diff view there should be value "newpackage". Alternatively you can externally verify that ".svn" administrative directory of parent folder of "newpackage" package contains file "dir-props" listing "newpackage" package.
  21. Unignore file
    1. Select "NewClass2.java" in "Projects" view and invoke Subversion | Unignore popup menu action.
    2. "Subversion" tab should contain "NewClass2.java" file with "Locally New" status. Path to this should be indicated with blue badges.
    3. Select project root and invoke Team | Commit... action from main menu.
    4. "Commit" dialog shows up, enter some commit message and push Commit button.
    • EXPECTED RESULT: File should disappear from "Subversion" tab. Font color of "NewClass2.java" file is black now. Externally verify that ".svn" administrative directory of parent folder of "NewClass2.java" package doesn't contain this file listed in "dir-props".
  22. Reverting modifications
    1. Open "NewClass2.java" to editor.
    2. Insert brand-new line somewhere into the file.
    3. Delete some other line, but not directly next to the new line.
    4. Modify another line, but not directly next to the lines mentioned above and save the file. File name color should change to blue, verify the path indicating blue badges.
    5. Select "NewClass2.java" in "Projects" view and invoke Subversion | Revert Modifications popup menu action.
    6. "Revert Modifications" dialog should show up. There are three choices: "Revert Local Changes", "Revert Modifications from Single Commit" and "Revert Modifications from Previous Commits". "Revision" should be enabled for second choice. "Starting Revision" and "Ending Revision" revision should be enabled for third choice only. This dialog provide also the functionality of rollbacking changes. For each of these fields "Search..." button should be available. You can also check "Remove newly added Files and Folders" checkbox for all three choices. That would result in deleting any newly added files.
    7. Push the Revert button.
    • EXPECTED RESULT: All changes should be reverted. Indicating badges should disappear. "NewClass2.java" file should not be listed in "Subversion" tab.
  23. Actions in "Projects" view
    1. Add new package "aa" and new "NewInterface.java" into it.
    2. Add new package "aa.bb" and new "NewClass.java" into it.
    3. Invoke Subversion | Commit... on "aa" package.
    4. Commit dialog shows up. There should be "NewInterface.java", "aa" and "bb" listed in commit dialog. Push Commit button.
    5. Make sure that only "aa" and its files were added. Have a look for SVN URL in "Output" window.
    • EXPECTED RESULT: Subversion actions invoked on packages in "Projects" view shouldn't be performed recursively. Make sure that Update, Diff, Switch to Copy, Merge Changes, Export Diff Patch and Revert Modifications work correctly. In case of branching actions verify whether new files and folders are added/removed properly.
  24. Refactoring
    1. Select "Main.java" node and invoke Refactor | Rename... popup menu action on it.
    2. Enter new name for it and push Refactor.
    3. File with new name should be listed in "Subversion" view as "Locally Copied" and the old one as "Locally Deleted".
    4. Commit both files and verify whether new file inherited history by refactoring.
    5. Switch to "Files" view, select package "xx" and invoke Refactor | Rename... popup menu action on it.
    6. Enter new name "yz" for it and push Refactor button.
    7. Make sure that all refactored nodes with new name are marked as "Locally Copied" (for directories only "Locally Added").
    • EXPECTED RESULT: Push Commit, make sure that file nodes disappear and all files/directories were committed as well.


Test suite: Working with Copies/Branches

Purpose: This suite tests work-flow with copies/branches.
Setup: No setup is necessary except steps from previous test suite.

  1. Copy/Branch creation I
    1. Select project root and invoke Subversion | Copy To... popup menu action.
    2. Dialog for branching shows up. Select "Remote Folder" in "Source" part. Verify functionality of "Revision" field and "Search..." button.
    3. Enter "branches" into "Repository Location" in "Destination" part.
    4. Verify that "Preview" field shows correct location.
    5. Verify that "Switch to Copy" check box is unchecked.
    6. Enter some comment into "Copy Description" field and press Copy button.
    • EXPECTED RESULT: Until "Repository Location" and "Copy Description" are set, information message should be displayed at the bottom of the window and "Copy" button should be disabled. After setting them and pressing "Copy" button, copy action should be performed. Verify in "Output" tab whether project was copied properly. Sources shouldn't be switched to newly created copy.
  2. Copy/Branch creation II
    1. Modify some file in the project that will be copied.
    2. Select project root and invoke Team | Copy To... main menu action.
    3. Dialog for branching shows up. Verify that "Local Folder" in "Source" part is selected. Warning message about locally modified files should be displayed at the bottom of the dialog.
    4. In "Destination" part, press Browse... button next to "Repository Location" field. In the browser window, try to create new folder with the use of "Into a new Folder" button and through the popup menu on some node. Set new separate folder you wish to use and press OK.
    5. Verify that "Preview" field shows correct location. Check "Skip selected Folder and copy only its Contents" checkbox.
    6. Check "Switch to Copy" check box.
    7. Enter some comment into "Copy Description" field and press Copy button.
    • EXPECTED RESULT: Until "Repository Location" and "Copy Description" are set, information message should be displayed at the bottom of the window and "Copy" button should be disabled. After setting them and pressing "Copy" button, copy action should be performed. Verify in "Output" tab whether project was copied properly. Sources should be switched to newly created copy. Local changes from trunk should be included in the copy.
  3. Committing to branch
    1. Select the "Main.java" file, modify and save it.
    2. Invoke Subversion | Commit... popup menu action.
    3. Commit dialog shows up with "Commiting to <branch> Branch" message at the bottom of the window. There should be listed "Main.java" file with path to branch folder in "Repository Path" column.
    4. Push Commit button.
    • EXPECTED RESULT: Verify in "Output" tab whether the action finished successfully.
  4. Multiple branches
    1. Create new "NewInterface.java" in this project.
    2. Select project root and invoke Subversion | Commit... project from popup menu.
    3. Commit dialog shows up and there should be listed "NewInterface.java" file with path to current branch. Push the Commit button.
    4. Verify successful commit of newly added file.
    5. Now select project root and invoke Subversion | Switch to Copy... popup menu action.
    6. Appropriate dialog shows up. Browse desired "Repository Folder" and search desired "Revision" where the new "NewInterface.java" doesn't exist. Press Switch button.
    7. "NewInterface.java" file should disappear from all views.
    8. Select again project root and invoke Subversion | Switch to Copy... popup menu action and switch back to previous branch.
    9. Verify whether "NewInterface.java" file appears in all views again.
    10. Make some changes to "Main.java" file, save and commit them.
    11. Select "Main.java" file and invoke Subversion | Switch to Copy... popup menu action.
    12. In the dialog, setup "Repository File" for trunk version of "Main.java" and push the Switch button.
    13. Verify that the file doesn't contain changes made in the branch.
    14. Modify and save both "Main.java" and "NewInterface.java" file.
    15. Select the project root and invoke Team | Commit... from the main menu.
    16. Dialog shows up with a message about commit to multiple branches. For each file, there is a path to appropriate folder in "Repository Path" column and an additional "Branch" column with the name of the file's branch. Push Commit.
    • EXPECTED RESULT: Verify that "Main.java" was committed to trunk and "NewInterface.java" was committed to "Copy" location. (Switch to both locations and verify changes.)
  5. Merge from branches
    1. Select the project root, invoke Subversion | Switch to Copy... action.
    2. In the dialog setup "Repository Folder" for trunk and push Switch button.
    3. All project sources should contain only trunk changes.
    4. Select project root invoke Subversion | Merge Changes popup menu action.
    5. Merging dialog shows up. There are three choices for merging. Each of choice has descriptive picture. Verify all their components and functionality for each case. Push Merge button.
    • EXPECTED RESULT: Files should be merged according to your choice. If some conflicts occurs, information dialog should be show up.


Test suite: Subversion properties

Purpose: This suite tests editing of Subversion properties for files and packages.
Setup: Subversion versioned project needs to be opened.

  1. Opening Svn Properties Editor
    • Comments: The "Refresh" button is designed to be used only if something modifies the property files externally, so if you modify SVN properties from NetBeans only, you don't need it.
    1. Select any SVN versioned file in "Projects" view and invoke Subversion | Svn Properties from its popup menu.
    • EXPECTED RESULT: New window labeled "Svn Properties Editor" should open in the middle of your screen. Verify that "Property Name" combo box, "Property Value" text area, "Load", "Add", "Remove", "Refresh", "Close" and "Help" buttons, "Recursively" checkbox and a table with columns "Name" and "Value" are present.
  2. Adding file SVN properties
    1. Type something into the "Property Name" combobox. Note that you can use the combobox to choose from some typical Subversion properties. But you can also use your own name for them.
    2. Type something into the "Property Value" text area. Verify that you can use the "Load" button to load text from any file into the text area.
    3. Push the Add button.
    • EXPECTED RESULT: New SVN property should be present in the table. Verify that its name and value are those you entered in previous steps.
  3. Adding package SVN properties
    1. Select the package that contains file "Main.java" and invoke Subversion | Svn Properties from its popup menu.
    2. Type something into the "Property Name" combobox and "Property Value" text area.
    3. Check "Recursively" checkbox and push the "Add/Update" button.
    • EXPECTED RESULT: New SVN property should be present in the table for the package. Verify that the same property is set for all its children nodes (files and packages). Note that property would be set only for the package itself, if you didn't check the "Recursively" checkbox.
  4. Removing SVN property
    1. Select the package that contains file "Main.java" and invoke Subversion | Svn Properties from its popup menu.
    2. In the table select the property added in previous test case, make sure that recursively checkbox is unchecked and push Remove button.
    • EXPECTED RESULT: The selected property should disappear from the table. Note that if the "Recursively" checkbox was checked, this property would be removed from all package children nodes.


Test suite: Versioning history

Purpose: This suite tests history searching with various criteria.
Setup: No setup is necessary except steps from previous test suites.

  1. Search button
    1. Invoke Team | Checkout... wizard from main menu.
    2. Setup valid "Repository URL" and proceed to 2nd step of "Checkout" wizard.
    3. Push Search... button.
    4. "Search Revisions" dialog shows up.
    5. "List log entries from" field and "List" button should be there. Push the List button.
    6. There should be listed records containing "Repository Revision Number", "User Name", "Date and Time" and "Commit Message" for each record in it.
    7. Select some record and push OK button.
    • EXPECTED RESULT: Verify that "Search Revisions" dialog was closed and "Repository Revision Number" was setup into "Repository Revision" field of "Checkout" wizard. This component is also accessible from "Switch to ...", "Merge to ..." and "Revert Modifications" dialog. Verify them too.
  2. Annotations
    1. Select "Main.java" node and invoke Subversion | Show Annotations popup menu action.
    2. "Annotations" column and "Stripes" should be displayed around the editor area of this file.
    3. Select desired line (with revision e.g. "12").
    4. All lines with revision ("12") should be colored blue in "Annotations" column. "Stripes" should show navigations to this revision too.
    5. Move mouse pointer over "Revision" column and invoke popup menu.
    • EXPECTED RESULT: There should be Diff to previous Revision, Revert Modifications..., Show Annotations from previous Revision and Hide Annotations actions listed in popup menu.
  3. Annotations actions
    1. Choose "Diff to previous Revision" action.
    2. "Diff" tab should be opened into the editor for specified revisions.
    3. Choose Revert Modifications... action.
    4. This action should show "Revert Modifications" dialog. (See "Standard development of project" test suite - Reverting modifications)
    5. Choose "Show Annotations from previous Revision" action.
    6. New read-only tab showing version of this file from previous revision with visible annotations should be opened into the editor.
    7. Choose Hide Annotations action.
    8. This action should hide annotation column and stripes too.
    • EXPECTED RESULT: Verify functionality on various revisions and navigations with the use of "Stripes".
  4. Search history
    1. Switch to "Projects" view and select project root.
    2. Invoke Subversion | Search History... popup menu action.
    • EXPECTED RESULT: "Search History" tab for this project should be displayed in editor area. Verify functionality of "Browse..." buttons next to "From" and "To" fields.
  5. Summary functionality
    1. Make sure that "Summary" toggle button is pushed.
    2. Push Search button.
    • EXPECTED RESULT: List of revisions with all changed files of the project should be listed in "Summary" output area. All revision records should contain "Revision Number", "Username", "Date and Time", "Commit Message", and "Diff" and "Revert" links. Files in revisions should contain "Change Type Code Letter", "File Location" and "File Name".
  6. Summary actions
    1. Invoke popup menu on desired revision record in "Summary" section.
    2. There should be Diff to Previous Revision and Rollback Changes.
    • EXPECTED RESULT: Verify the functionality of each action. Rollback Changes action can be invoked on multi selection that will rollback all differences among selected revisions.
  7. Summary file actions
    1. Invoke popup menu on line of single file in desired revision record in "Summary" section.
    2. There should be Diff to Previous Revision, Rollback Changes, Rollback to <appropriate revision of record>, View and Show Annotations.
    • EXPECTED RESULT: Verify the functionality of each action. Rollback Changes action can be invoked on multi selection that will rollback all differences among selected revisions. "View" action opens chosen file revision in editor area (read only).
  8. Diff functionality
    1. Select project root and invoke Team | Search History... main menu action.
    2. Push Search button and then click Diff toggle button.
    • EXPECTED RESULT: Verify that table with list of revisions and changed files is displayed. Also area for "Diff" should be there.
  9. Diff actions
    1. Invoke popup menu on desired revision in "Diff" section.
    2. There should be Rollback Changes action listed in popup menu.
    • EXPECTED RESULT: Verify the functionality of the action. Rollback Changes action can be invoked on multi selection that will rollback all differences among selected revisions.
  10. Diff file actions
    1. Invoke popup menu on line of single file in desired revision in "Diff" section.
    2. There should be Rollback to <appropriate revision of record> and Rollback Changes actions listed in popup menu.
    • EXPECTED RESULT: Verify functionality of each action. Rollback Changes action can be invoked on multi selection that will rollback all differences among selected revisions.
  11. Diff Arrows
    1. There should be two: UP and DOWN arrows displayed next to "Summary" and "Diff" buttons - make sure that they are enabled for "Diff" section only.
    • EXPECTED RESULT: Verify the functionality of each arrow. Make sure that each time arrow button is pushed current difference is moved forwards (backwards) accordingly.
  12. Exploring revisions
    1. Select some revision and expand node.
    2. Select some file that is present in more revisions.
    • EXPECTED RESULT: In "Diff" output area there should be displayed differences between selected and previous revision. On multi selection of two revisions of the same file there should be displayed differences between them. Differences should not be displayed for different files.
  13. Random search
    1. Invoke Subversion | Search History... on files, packages, projects.
    • EXPECTED RESULT: Verify the functionality of "Search History..." action on files, packages and project nodes. Verify that searched results meet searching criteria.


Test suite: Subversion Options

Purpose: This suite tests some configurable options of Subversion.
Setup: No setup is necessary.

  1. Invoking Subversion Options
    1. Invoke Tools | Options from main menu.
    2. Push "Miscellaneous" button.
    3. Select "Versioning" tab and then select "Subversion" from the "Versioning Systems" list.
    • EXPECTED RESULT: There should be four configurable options: "Path to SVN executable File" with "Browse..." button, "Connection Settings" with "Manage Connection Settings..." button, "Subversion Status Labels" with "Format" field, "Add Variable.." and "Define {folder}..." buttons and "Other" with three checkboxes for other options.
  2. Setting up SVN executable path
    • Comments: This test case is needed only if the SVN executable is not in the PATH variable and NetBeans is unable to locate it.
    • Setup: This option is useful only if Subversion support isn't running on "svnkit", so either "javahl" or "commandline" should be activated.
    1. Push the "Browse" button.
    2. "Browse for the SVN Executable" dialog appears. Use it to locate SVN executable and press OK button.
    • EXPECTED RESULT: After confirmation and IDE restart, NetBeans should be able to use svn executable present in selected folder.
  3. Manage Connection Settings
    1. Invoke Subversion options.
    2. Push the "Manage Connection Settings..." button.
    3. Dialog similar to "Checkout" dialog appears.
    4. You can remove any previously used "Repository URL" using the "Remove from History" button and change login information for the repositories. You have to confirm your changes by pressing the OK button
    • EXPECTED RESULT: Verify functionality of all mentioned functions in this dialog.
  4. Manage Labels
    1. Invoke Subversion options.
    2. Push the "Add Variable..." button.
    3. New window labeled "Select Variables" appears. You can choose any from offered variables and press OK button.
    4. Every time you add a variable, it is added at the end of the "Format" text field. You can also edit it by yourself. Explanation of all variables is displayed in the "Select Variables" window.
    5. Push the "Define {folder}..." button.
    6. "Manage Labels" dialog appears. Verify that it contains "Add", "Add with Wizard", "Edit", "Remove", "Move Up", "Move Down", "Reset to Defaults", "OK", "Cancel" and "Help" buttons and a table with two columns labeled "Repository Url RegExp Pattern" and "{folder} variable".
    7. The table and buttons "Move Up", "Move Down", "Edit" and "Remove" are all bound to the {folder} variable (functionality of these buttons is for moving and adding/removing lines in the table).
    8. Rows of the table are tested from first to last for matching regular expression in the "Repository Url RegExp Pattern". The first matching pattern is used and its "Folder Name" column used for substitution for the {folder} variable. For example \2 means, that 2nd part of the regular expression will be used.
    9. Push the Reset to Defaults button and then OK button.
    • EXPECTED RESULT: Verify that status labels are as defined in previous steps. (It is necessary to have versioning labels enabled to see them. Try to switch it on and off - no textual annotations should be displayed if it's off.) By default, you should see only status of changed/added/deleted/ignored files.


Test suite: Shelve Changes

Purpose: Tests whether Shelving feature works correctly.
Setup: Subversion versioned project opened in the IDE.

  1. Shelve Changes
    1. Modify some file and save it, don't commit.
    2. Invoke Team | Shelve Changes | Shelve Changes... action from main menu.
    3. Verify that window "Shelve Changes" appears and contains field "Patch Name:" with default value "unfinishedChanges" and buttons "Shelve", "Cancel" and "Help".
    4. Keep default value and push Shelve.
    • EXPECTED RESULT: The file "unfinishedChanges.patch" appears and contains all changes that we made.
  2. Unshelve Changes
    1. Invoke Team | Shelve Changes | Unshelve Changes... action from main menu.
    2. Verify that window "Shelved Changes" appears and contains "Patches" combobox with "unfinishedChanges" selected, "Keep Patch File" checkbox and buttons "Unshelve", "Remove Patch", "Cancel" and "Help".
    3. Keep selection and push Unshelve Changes.
    4. Verify that the window "Question" with report "Patch applied successfully. View applied changes? (patched binary files will not be displayed)" appears.
    5. Confirm by pushing Yes button.
    • EXPECTED RESULT: All shelved changes from "unfinishedChanges" are correctly applied. New Diff tab showing applied changes is opened into editor.
  3. Unshelve "unfinishedChanges"
    1. Invoke Team | Shelve Changes | Shelve Changes... action from main menu.
    2. Keep default name and push Shelve.
    3. Invoke Team | Shelve Changes | Unshelve unfinishedChanges action from main menu.
    4. Verify that the window "Question" with report "Patch applied successfully. View applied changes? (patched binary files will not be displayed)" appears.
    5. Confirm by pushing Yes button.
    • EXPECTED RESULT: All shelved changes from "unfinishedChanges" are correctly applied. New Diff tab showing applied changes is opened into editor.
  4. Remove Patch
    1. Invoke Team | Shelve Changes | Shelve Changes... action from main menu.
    2. Keep default name and push Shelve.
    3. Invoke Team | Shelve Changes | Unshelve Changes... action from main menu.
    4. Push Remove Patch button.
    • EXPECTED RESULT: Patch with shelved changes is dropped.


Test suite: Lock Feature

  1. Invoking Lock Feature
    1. Invoke Team | Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
    2. Switch to "Repository URL" field and set it to your valid repository with properly connection type.
    3. Setup username and password (if needed) and push Next.
    4. Select any NetBeans project from repository ("Repository Folder(s)").
    5. Push OK and than Finish.
    6. Invoke Team | Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
    7. Switch to "Repository URL" field and set it to your valid repository with properly connection type.
    8. Setup username and password (if needed) and push Next.
    9. Select the same NetBeans project from repository as in the previous case.
    10. Change "Local Folder:" to different location from the previous case (for example "...NetBeansProjects2".
    11. Push OK and than Finish.
    12. Open the first created project.
    13. Select any java file in "Source Packages".
    14. Invoke Subversion | Lock action from main menu.
    15. Verify that window "Lock Selected Files" shows up and contains text-field "Lock Message", check-box "Force", buttons "Lock", "Cancel" and "Help".
    16. Fill text-field with some text (for instance "Test") and push Lock.
    17. Verify in the "Output" window of your SVN that contains records about successfully locked ("Locking Files... finished").
    18. Go to the second project and find the same file that we locked.
    19. Invoke Subversion | Lock action from main menu.
    20. Fill text-field with some text (for instance "Test2") and push Lock.
    21. Should appear the window "File Already Locked" contains "Some files are already locked by someone else. Do you want to lock them by force and break the other lock?"
    22. Push Yes
    23. Verify in the "Output" window of your SVN that contains records about successfully locked ("Locking Files... finished").
  1. Invoking Lock Feature with using Force
    1. Invoke Team | Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
    2. Switch to "Repository URL" field and set it to your valid repository with properly connection type.
    3. Setup username and password (if needed) and push Next.
    4. Select any NetBeans project from repository ("Repository Folder(s)").
    5. Push OK and than Finish.
    6. Invoke Team | Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
    7. Switch to "Repository URL" field and set it to your valid repository with properly connection type.
    8. Setup username and password (if needed) and push Next.
    9. Select the same NetBeans project from repository as in the previous case.
    10. Change "Local Folder:" to different location from the previous case (for example "...NetBeansProjects2".
    11. Push OK and than Finish.
    12. Open the first created project.
    13. Select any java file in "Source Packages".
    14. Invoke Subversion | Lock action from main menu.
    15. Verify that window "Lock Selected Files" shows up and contains text-field "Lock Message", check-box "Force", buttons "Lock", "Cancel" and "Help".
    16. Fill text-field with some text (for instance "Test") and push Lock.
    17. Verify in the "Output" window of your SVN that contains records about successfully locked ("Locking Files... finished").
    18. Go to the second project and find the same file that we locked.
    19. Invoke Subversion | Lock action from main menu.
    20. Fill text-field with some text (for instance "Test2"), check check-box "Force" and push Lock.
    21. Verify in the "Output" window of your SVN that contains records about successfully locked ("Locking Files... finished").
  1. Invoking unlock in Lock Feature
    1. Select any NetBeans project (first or second) from the previous test case.
    2. Invoke Subversion | Unlock action from main menu.
    3. Verify in the "Output" window of your SVN that contains record about successfully locked ("Unlocking Files...").
  1. Locking on demand
    1. Invoke Team | Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
    2. Switch to "Repository URL" field and set it to your valid repository with properly connection type.
    3. Setup username and password (if needed) and push Next.
    4. Select any NetBeans project from repository ("Repository Folder(s)").
    5. Push OK and than Finish.
    6. Invoke Team | Subversion | Checkout... action from main menu. "Checkout" wizard shows up.
    7. Switch to "Repository URL" field and set it to your valid repository with properly connection type.
    8. Setup username and password (if needed) and push Next.
    9. Select the same NetBeans project from repository as in the previous case.
    10. Change "Local Folder:" to different location from the previous case (for example "...NetBeansProjects2".
    11. Push OK and than Finish.
    12. Invoke Tools | Options.
    13. Select tabs "Miscellaneous", "Versioning" and then "Subversion" from list.
    14. Check check-box "Lock Edited Files With svn:needs-lock Property" and push OK.
    15. Select any file from the first project.
    16. Invoke Subversion | Svn Properties
    17. The window "Svn Properties Editor" should appear. It contains drop-down menu "Property Name:", text field "Property Value:", check-box "Recursively", menu "Subversion Properties:" and buttons "Load", "Remove", "Refresh", "Add" (default is disabled), "Close" and "Help".
    18. From drop-down menu select "svn:needs-lock".
    19. As "Property Value:" write "true" and push Add.
    20. Verify that new property was add to menu.
    21. Click Close.
Not logged in. Log in, Register

By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo