emacs-plugins / c-settings / cedet-1.0 / PRERELEASE_CHECKLIST

Prerelease Checklist:

  This is a list of things to do/try before posting a release to make sure
  the release will work as well as can be expected:

Before a dist is made:

Update all version numbers

  * M-x load-file RET ~/cedet/cedet-update-version.el
  * M-x cuv-update
    - Answer all questions, updating verion numbers as needed.

Add a CVS tag

  * Create a new copy of CVS TRUNK
    - mkdir <some dir>
    - cvs -d <username> co cedet
    - mv cedet cedet-<branchname>  # (such as cedet-1p0beta3)
    - cd cedet-branchname
    - touch `find . -name Makefile`
    - make dist
    - ./ # Test out that basic stuff is working before tagging.
    - cvs tag -b <branchname>     

  * update new sandbox to branch
    - cvs update -r <branchname>

  * Apply patches to above while resolving other issues.

  * Build the new area:
    - touch `find . -name Makefile`
    - make EMACS=semacs

Update Changelogs

  * Use a fresh emacs
    - emacs -q
    - M-x load-file RET common/cedet.el RET
  * Update the Log from CVS
    - M-x load-file RET cedet-update-changelog.el RET
    - M-x cuc-update-all-changelogs RET

Build a DIST file

  * touch `find . -name Makefile`
  * make
  * make dist

After a dist is made:

CEDET Unit tests
  * From a CVS area:
  * make utest

CEDET integration test
  * From a CVS area:
  * make itest

CEDET Full distribution testing
  * From a CVS area:
  * make dist
  * ./ EMACS
    - where EMACS is the version of emacs you want to test with

CEDET & Common area

  * Uncompress/Untar release archive.
  * Compile with Makefile:
     make EMACS=xemacs
  * Build on multiple platforms
     - Linux
     - Windows
     - Other

  * Check version numbers of different tools.

     - Verify output of:
       M-x cedet-version RET
       - Check the declared version numbers.
       - Make sure that if changes were made to those modules, the version
         is updated.

  * Start in a clean Emacs:
    - Start emacs this way:

      emacs -q
      xemacs -q

      M-x load-file RET cedet/common/cedet.el RET
      M-x semantic-load-enable-minimum-features RET

  * All individual CEDET unit test

      M-x cedet-utest RET
      - Note: Runs all automated unit tests.  These tests are repeated below.
      - Note: This runs a couple more tests than the MAKE command above.

  * Test ezimage

      M-x ezimage-image-association-dump RET
      - Verify some common images for Emacs and XEmacs.
      M-x ezimage-image-dump RET
      - Verify the default registered images for Emacs and XEmacs.

      NOTE: These are in cedet-utest, but pictures need verification.

  * Test pulse
      M-x pulse-test RET
      - Verify pulse does what messages say.
      - Try in Emacs 22, and older Emacs, or XEmacs.  (different behaviors)

    NOTE: This is in cedet-utest.  Needs additional x-platform care.


  * M-x eieio-browse RET

    This will list the currently loaded class hierarcies.  After using
    the test harness, and loading semantic, this should be a long list.

  * Running tests for semantic/semanticdb, and EDE both test
    other basic EIEIO features.


  * Make sure the semanticdb inversion check against persistent file loading
    is updated if the file-format has changed.

  * In a clean Emacs  

    Visit files for different modes.  Include:
      All files in cedet/semantic/tests.
      .html file of your choice.
      .texi files from the doc directory.
      A lisp file, such as semantic.el.
      C# file
      .js javascript file

    Start with:
      M-x toggle-debug-on-error RET - Enable debugging within the
          parser and incremental parser.  (Usually hidden.)

    For each supported mode:
      M-x bovinate RET - verify tags are accurate.
      M-x speedbar RET - Open the file and verify tags.
      - Check the TAGS menu for tags in that file.
      M-x global-semantic-highlight-edits-mode RET
      - Edit a file.  See the highlight of newly inserted text.
      - Customize `semantic-edits-verbose-flag' to be non-nil.
      - Wait for the idle scheduler, it should clean up the edits.
        - observe messages from incremental parser.  Do they relate
	  to the edits?
      - M-x bovinate RET - verify your changes are reflected.

      Visit the menu Senator->Modes
      - Enable that mode (if not already enabled) and verify the
        advertised behavior.

      - Test aspects of the Senator navigation menu.

      M-x semantic-analyze-current-context RET
       - Do this in different contexts in your language
         files.   Verify that reasonable results are returned
         such as identification of assignments, function arguments, etc.

       - Optionally, use `semantic-speedbar-analysis' instead of

       - At a location with incomplete syntax (a list of arguments
         with no close paren for instance: repeat previous step. 

      M-x semanticdb-find-test-translate-path RET
       - Verify the list matches the include files.
         You may need to check the value of
         `semanticdb-find-default-throttle' to determine what should, or
 	 should not be on the list.

      - With cursor on different types of declarations:
      M-x semantic-test-all-format-tag-functions RET
        - Verify all formats work.

      - Use your favorite semantic-enabled tool.

  * Try semantic-regtest.el (from CVS).


  * In a clean Emacs

    M-x speedbar RET

    - browse through directories, expand tags in some files.
    - Special support files to try:
      - texinfo files (speedbar.texi)
      - html files
      - rmail files (RMAIL)

    M-x Info-speedbar-browser RET

    - browse through the manuals


   * In a clean Emacs

     - Examine files in the ede directory, such as:

     - For files in these project, verify the Project menu
     - Try builds for these files
     - Try some other menu items


   * In a clean Emacs

     M-x cogre RET mygraph RET

     Create a block diagram.

   * In a clean Emacs

     from cogre.el, put cursor on `cogre-graph-element'

     M-x cogre-uml-quick-class RET RET

     - Verify the grpah.  (on parent, some direct children.)
     - Move some blocks around (M-f, M-b, M-n, M-p)


   * Verify menu working in SRT, C++, and Emacs Lisp.
     * Make sure srecode-mode is on.

   * Try inserting file:empty in some modes, and then a function
     to make sure prompts work.

   * Check the maps:
     M-x srecode-get-maps RET

     Note: In cedet-utest, but make sure the output contains the known


   * Run `checkdoc' against various source files to make sure
     doc strings are conforming.


   * Test this new release against dependent tools, including:
     - JDEE
     - ECB

After patches are applied:

After patches are applied to the release branch, merge them back into

  In a sandbox with TRUNK/HEAD active.
  * cvs update -j <branchname> filename

    - This merges changes from the branch into the trunk.
    - Use emacs to check these branch merges in.