TS 68 Subversion Sanity

NetBeans Subversion Sanity Test

Author: Daniel Krezelok
Version: 1.0.0
Last update: 20.08.2009
Introduction: Testcases for sanity testing of the Subversion.


Test suite: Setting up URL

Purpose: This suite tests whether it is possible to access valid Subversion repository using different types of connections.

Comments: In
"svn"
, {"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: Subversion command-line client version 1.3 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 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
      "Proxy Configuration"
      dialog.
    • EXPECTED RESULT: Push Next button. Next dialog of
      "Checkout"
      wizard should show up. Verify that {"Browse..."} buttons are shown for "Repository Folder(s)", "Local Folder" and "Search" button for "Repository Revision" in this step of "Checkout" dialog. Push "Finish" button. Verify result of Checkout action.
  2. svn+ssh://
    • Setup: In case of windows platform
      "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 e.g.
      "svn+ssh://localhost/svn"
    3. After setting up
      "svn+ssh://"
      connection type there should be visible {"Use External Tunnel"} text field.
    4. Setup valid external tunnel command.
    • EXPECTED RESULT: Push Next button. Next dialog of
      "Checkout"
      wizard should show up. Verify that {"Browse"} buttons are shown for "Repository Folder(s)", "Local Folder", "Repository Revision" and "Search" button in this step of "Checkout" dialog. Push "Finish" button. Verify 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 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)", "Local Folder", "Repository Revision" and "Search" button in this step of "Checkout" dialog. Push "Finish" button. Verify 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 e.g.
      "http://localhost/svnrepo"
    3. After setting up
      "http://"
      connection type there should be visible {"User"}, "Password" and "Proxy Configuration..." components.
    4. Setup valid password.
    • EXPECTED RESULT: Push Next button. Next dialog of
      "Checkout"
      wizard should show up. Verify that {"Browse"} buttons are shown for "Repository Folder(s)", "Local Folder", "Repository Revision" and "Search" button in this step of "Checkout" dialog. Push "Finish" button. Verify 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 e.g.
      "https://localhost/svnrepo"
    3. After setting up
      "https://"
      connection type there should be visible {"User"}, "Password" and "Proxy Configuration..." components.
    4. Setup valid password.
    • EXPECTED RESULT: Push Next button. You will be asked for accept the certificate. Next dialog of
      "Checkout"
      wizard should show up. Verify that {"Browse"} buttons are shown for "Repository Folder(s)", "Local Folder", "Repository Revision" and "Search" button in this step of "Checkout" dialog. Push "Finish" button. Verify 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.
    • {{result|EXPECTED RESULT: Switch to the
      "Output Tab"
      . There should be message "==[[IDE]== 15.3.2007 10:01:21 Relocating... finished" indicating that the command was successfully. Since now you are going to connect to the same repository as another user or via another access method.}}


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 in
      "Subversion"
      tab is opened.
  2. Update action
    1. Switch to
      "Files"
      view.
    2. Invoke Window | Output | Versioning Output from main menu.
      "Versioning Output"
      should be opened.
    3. Invoke Subversion | Update popup menu action on project root.
    • {{{1}}}
  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.
    2. Switch on View | Show Diff Sidebar option from main menu. Diff column should be shown in the left of side of editor.
    3. Select this file.
    4. Invoke Subversion | 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. Invoke Subversion | Show Changes from main menu.
    4. Files should be listed in
      "Subversion"
      tab - {"Main.java"} as [[[LocallyModified | [Locally Modified]], "NewClass" and also the new packages "xx" and "yy" should be displayed as [[LocallyNew].
    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
      "All"
      , {"Local"} and "Remote" 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 {"All"} - displays locally modified files only, "Local" - displays remotely modified files only and "Remote" - displays both locally and 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 selected 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 Subversion | 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. If this action is invoked on context that has no modified files, information dialog should be displayed only.
  10. Applying patch
    1. Switch to
      "Files"
      view and select project root.
    2. Invoke Subversion | Revert Modifications... from main menu or Subversion | Revert Modifications from popup menu. (Select
      "Revert Local Changes"
      option and push Revert button.)
    3. Make sure that all modified files are "uptodated" now.
    4. Select project root and invoke Tools | Apply Diff Patch... popup menu action.
    5. Answer
      "Yes"
      in question dialog to confirm watching differences.
    • EXPECTED RESULT: Verify that new tabs were opened into the editor for all patched files. Verify results generated by
      "Command-line Diff"
      and {"Built-in Diff"} engines. Verify results displayed by "Graphical Diff Viewer", "Textual Diff" and "Modern Diff" Viewer visualizers.
  11. Create conflict
    1. Modify
      "Main.java"
      file and save it.
    2. Invoke Subversion | Check out... from main menu and setup the same parameters as for previous Suites but with different
      "Workfile location"
      .
    3. Open the same project, modify
      "Main.java"
      class at the same line as in previous test suite, and commit it.
    4. Return to previous project, select the project root and invoke Subversion | Update with Dependencies popup menu action.
    • EXPECTED RESULT:
      "Conflicts warning"
      dialog should be displayed. Path to {"Main.java"} file should be indicated with red badges. This file should change its color to red too. Verify functionality of All, Local and Remote buttons in "Subversion" tab.
  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 line with conflict. Left pane should read
      "Working File"
      , right pane {"Remote File"} and bottom should read "Merge Result".
    3. Select left modification (the working one) and push
      "Accept"
      button above its pane.
    4. 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 data node should change back to
      "Main.java"
      and should have appropriate badge (blue badges for path). In addition, the merge tool must be closed.
  13. Conflict Resolved
    1. Do all steps -
      "Create conflict"
      test case.
    2. Invoke Subversion | Show Changes on project root.
    3. From within editor resolve manually all conflict by editing the
      "Main.java"
      file and save the file.
    4. Invoke Subversion | Conflict Resolved popup menu action on
      "Main.java"
      node from {"Subversion"} tab.
    • EXPECTED RESULT: The data node should change back to
      "Main.java"
      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 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 Yes in follow-up question dialog.
    10. Select
      "NewClass.java"
      in {"Subversion"} tab and invoke Commit...
    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, invoke Subversion | Show Changes and expand {"xx.yy"} package node.
    2. Create new java class
      "NewClass1.java"
      in the package {"xx.yy"}.
    3. Invoke Delete popup menu action from within
      "Subversion"
      tab on {"NewClass1.java"} file node.
    4. Confirm your decision by clicking OK 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. Select package node that contains files.
    2. Invoke Delete popup menu action on package node.
    3. Confirm your decision by clicking Yes in follow-up question dialog.
    4. Select all deleted nodes in
      "Subversion"
      tab and invoke Revert Delete
    5. Confirm your decision by clicking Yes in follow-up question dialog.
    6. Package and its files should appear in all of explorer views.
    7. Repeat 2nd step.
    8. Confirm your decision by clicking Yes in follow-up question dialog.
    9. From
      "Subversion"
      push Commit button.
    • EXPECTED RESULT: Content of the package should disappear from all views. The package itself won't disappear until you delete it again from
      "Files"
      view.
  17. Project Deletion
    1. Create new project.
    2. Add this project into the source control. Select its root and invoke Subversion | Show Changes from main menu.
    3. Switch to
      "Projects"
      view, select project node and invoke Delete Project popup menu action. (Confirm dialog and delete also sources)
    • EXPECTED RESULT: All files should appear in
      "Subversion"
      view. These files should be in {"Locally Deleted"} status. Select all files in "Locally Deleted" state and invoke Revert Delete popup action from "Subversion" view. After successful action it should be allowed to open this project again.
  18. Exclude file from commit
    1. Create
      "JFrame"
      in {"xx.yy"} package.
    2. Invoke Subversion | Commit... on this JFrame in
      "Projects"
      view.
    3. Switch to
      "Subversion"
      tab, there should be listed {"NewJFrame.java"} and "NewJFrame.form" files. Select both the files and invoke Commit....
    4. "Commit"
      dialog should be displayed with these JFrame files. Change the {"Commit Action"} to "Exclude from Commit" for both files.
    5. "Commit"
      button should be disabled.
    6. Invoke Subversion | Show Changes action on the project root.
    7. From within
      "Subversion"
      tab select both files of newly created JFrame and invoke Exclude from commit popup menu action.
    • EXPECTED RESULT: Both 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") into {"xx.yy"} package.
    2. Select this java file and invoke Subversion | Ignore .
    • {{result|EXPECTED RESULT:
      "NewClass2.java"
      should change its color to gray with [[Ignored] annotations 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
      "New Package"
      ("tt2") into {"javaapplication"} package.
    2. Select this "tt2" package and invoke Subversion | Ignore .
    • EXPECTED RESULT:
      "tt2"
      should disappear from {"Subversion"} view. "Javaaplication" should be listed the instead. Invoke Diff action on it. There should "svn:ignore" in the "Property" column of the table. In the "Locally Modified" part of the diff view there should be value "tt2". Alternativelly you can externally verify that ".svn" administrative directory of parent folder of "tt2" package contains file "dir-props" listing "tt2" 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 (Locally New)"} files. Path to this should be indicated with blue badges.
    3. Select project root and invoke Subversion | 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"
      and invoke Subversion | Revert Modifications
    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 {"Interface.java"}
    2. Add new package
      "aa.bb"
      and new {"NewClass.java"}
    3. Invoke Subversion | Commit... on
      "aa"
      package.
    4. Commit dialog shows up. There should be
      "Interface.java"
      and {"aa"} listed in commit dialog. Push "Commit" button.
    5. Make sure that only
      "aa"
      and its file were added. Have a look in tab 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 Branch, Merge Changes From Branch, 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
      "Next"
      button. Special window shows up, push Refactor.
    3. File with new name should be listed in
      "Subversion"
      view as {"[LocallyCopied]"} and old one "[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 {"Next"} button. Special window shows up, push "Refactor".
    7. Make sure that all refactored nodes with new name are marked as
      "[[LocallyCopied | Locally Copied]]"
      (for directories only {"[LocallyNew]"</nowiki>.
    • 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
    1. Select project root and invoke Subversion | Copy to... popup menu action.
    2. Dialog for branching shows up. Setup
      "Copy to Repository Folder"
      (create new location for copy purpose). Push Browse button. Verify functionality of this component. Try to create new folder with use of New Folder button or through the popup menu on some node in <tt>{"Repository Browser"
      } component. Select folder "branches" or create one if it does not exist.
    3. Enter
      "Copy Description"
      field.
    4. Verify that
      "Switch to Copy"
      check box is displayed in dialog and check it.
    5. If this action was invoked on context with some modified files make sure that warning message is being displayed about locally modified files in context.
    • EXPECTED RESULT: Verify in
      "Output"
      tab whether project was copied properly. Nodes in explorer view should be annotated. If {"Switch to Copy"} was not checked, then sources shouldn't be switched to newly created copy.
  2. 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 and there should be listed
      "Main.java"
      file and information about the commit - {"Committing to "Project" branch"}. Push "Commit" button.
    • EXPECTED RESULT: Verify in
      "Output"
      tab whether the action finished successfully.
  3. Multiple branches
    1. Create new e.g.
      "NewInterface"
      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 and information about the commit - {"Committing to "Project" 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 desired "Revision" where "NewInterface" doesn't exist.
    7. "NewInterface"
      file should disappear from all views.
    8. Select again project root and invoke Subversion | Switch to Copy... popup menu action.
    9. Verify that
      "Repository File (Folder)"
      (depends on context it was invoked for) combo box, {"Browse"} button, "Repository Revision" text field and "Search" button were shown.
    10. Choose
      "Repository File/Folder"
      , desired revision number and push Switch button.
    11. Verify whether
      "NewInterface"
      file appears in all views again.
    12. Select
      "Main.java"
      file and invoke Subversion | Switch to Copy... popup menu action.
    13. In the dialog setup
      "Repository File/Folder"
      for trunk and push the Switch button.
    14. Verify that file contains changes made in the trunk.
    15. Modify and save both
      "Main.java"
      and {"NewInterface"} file.
    16. Select the project root and invoke Subversion | Commit... from the main menu.
    17. Dialog shows up, with these two files. There should be warning about attempt to commit to multiple branches - commit dialog now contains also
      "Branch"
      column - if there is nothing in the column, the file is to be commited to the trunk, otherwise to some branch (its name will be there).
    • EXPECTED RESULT: Verify that
      "Main.java"
      was committed to trunk and {"NewInterface"} was committed to "Copy" location. (Switch to both locations and verify changes.)
  4. Merge from branches
    1. Select the project root, invoke Subversion | Switch to Copy... action.
    2. In the dialog setup
      "Repository File/Folder"
      for trunk and push Switch button.
    3. All project sources should contain only "Trunk" changes.
    4. Create
      "NewInterface"
      and add new method to {"NewInterface"}, save and commit it.
    5. Add new variable to
      "Main.java"
      , save and commit it.
    6. Switch project to
      "new_copy"
      .
    7. Open
      "Main.java"
      into the editor, modify the type of the variable created in step 5 at the same line. Save the file.
    8. Open
      "NewInterface"
      into the editor, modify the return value of the method created in step 4 at the same line. Save the file.
    9. Select project root invoke Subversion | Merge ... popup menu action.
    10. 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.
    11. Dialog shows up with the information that there were conflicts.
    • EXPECTED RESULT: Files in conflicts are displayed with red color in
      "Subversion"
      tab. Resolve all the conflicts.


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