+==============================+
| rpminspect and librpminspect |
+==============================+

The tests below are the categories handled by rpmdiff-checker, which
is the ancestor to rpminspect.  Red Hat associates may recognize these
as the grid categories on the rpmdiff webui.  Each test category may
perform a couple of tests.  As tests are documented and implemented,
the specifics will be noted during the work in progress.

* indicates the logic for the tests has moved to librpminspect
! means the work is in-progress


Mandatory test categories to migrate (top is highest priority):
---------------------------------------------------------------
 TEST_CONFIG

 - Need to enable 'rebaseable' list checking in the upstream
   inspection.  Per product release.

 - Add a 'rebase' inspection that just fails if packages are being
   rebased but not on the rebaseable list.  This should be off by
   default but then enabled in a maintenance profile.


Unranked tests categories to migrate (might also decide to skip them):
----------------------------------------------------------------------
!TEST_METADATA
    need to get the fedora_without_redhat test implemented from checker
!TEST_PATCHES
    completed License tag test (as INSPECT_LICENSE)
 TEST_POLITICS
 TEST_REQUIRES
 TEST_RPATH
 TEST_SCRIPT
 TEST_STRIP
 TEST_TRIGGERS
 TEST_VIRUS


Questions:
    - Check for strings and filenames with 'fedora' without mention of
      'redhat'?  I say no because it's subjective and seems pointless.

    - Do we need the politics check?  All it does is look for image
      files that contain 'taiwan' in the filename.  If they are not on
      the taiwan_flag_whitelist, they raise a VERIFY result that
      anyone can waive.


Test categories that have been migrated:
----------------------------------------
*TEST_CHANGED (changedfiles)
*TEST_DESKTOP (desktop)
*TEST_EMPTYRPM (emptyrpm)
*TEST_FILELIST (addedfiles and removedfiles)
*TEST_JAVABYTECODE (javabytecode)
*TEST_MANPAGE (manpage)
*TEST_OWNERSHIP (ownership)
*TEST_SHELLSYNTAX (shellsyntax)
*TEST_XML (xml)
*TEST_IPV6 (part of elf inspection in rpminspect)
*TEST_EXECSHIELD (elf)
*TEST_NEEDED (DT_NEEDED)
*TEST_UPSTREAM (upstream; the BZ 'Rebase' keyword check against the
                Errata Tool bug list was not migrated, see below)
*TEST_PERMS (permissions and capabilities)
*TEST_MODPARM (kmod)
*TEST_MODPCIID (kmod)
*TEST_RPMCHANGE (arch and subpackages)
*TEST_CHANGELOG (changelog)
*TEST_PATHNAMES (pathmigration; the forbidden init paths are added
                 to forbidden_path_prefixes in the config file and
                 those are caught by 'addedfiles')
*TEST_SIZE (filesize)
*TEST_SYMLINK (symlinks)
*TEST_SPECFILE (disttag, license, and %files)
*TEST_TYPES (types)
*TEST_FILEMOVE (movedfiles)
*TEST_ABI (abidiff and kmidiff)


Test categories excluded (see MISSING):
---------------------------------------
 TEST_BUILDLOG
 TEST_RPMLINT
 TEST_UPSTREAM (only the rebase keyword check)
 TEST_ELFLINT
 TEST_MULTILIB
 TEST_SPECFILE (only the 32-bit x86 $RPM_OPT_FLAGS check)


+============+
| test suite |
+============+

Integration tests to write for rpminspect
-----------------------------------------

The test suite needs more integration tests written.  The following
inspections lack integration tests:

    modularity
    javabytecode
    changedfiles (compare only)
    removedfiles (compare only)
    addedfiles (compare only)
    annocheck
    DT_NEEDED
    capabilities
    arch
    subpackages
    pathmigration
    abidiff
    kmidiff

Need unit tests for run_cmd() verifying NULL as the last parameter.


+=======+
| Other |
+=======+

General functionality
---------------------

* In the [inspections] section in config files, all for "ALL = on"
  and "ALL = off" to toggle everything.  Similar to the command
  line option.

* Create a single-line reporting mode as suggested by mhroncok that
  will report changes (see issue #26).

* Support path ignores in the config file:
      * Allow path specification using standard wildcard syntax.
      * Allow path ignores to be across all inspections or only
        specific inspections.

* Improve the performance of the peer matching code.  Possibly
  fork off per subpackage and only run across subsets or some
  other method.  Current code works but degrades as subpackage
  count and size increases a lot.

* Add verbose runtime reporting.  This is currently only available
  for downloading packages.  Need to figure out how to separate it
  from the test results.


Documentation
-------------

Developer guide
Testing guide
User guide

Make sure rpminspect.1 is current and correct.

Also rpminspect.conf.5 documenting the configuration file and the
profile configuration files.
