Allow multiple --skip options

 - Attempting to fix issue where py.test is not skipping mysql tests on
   jenkins as it should
 - Limiting tests to CrawlDBI -- this needs to be opened back up in a
   subsequent commit

Version:   2014.1112.58
Change-Id: Ic1fd145b73670fbef318e7ac8184f7c286a03694
print-debug skip checks

 - Attempting to fix issue where py.test is not skipping mysql tests on
   jenkins as it should
 - Limiting tests to CrawlDBI -- this needs to be opened back up in a
   subsequent commit
 - Report skiptag and class name when we don't skip to stdout
 - Run py.test with -s so we can see stdout
 - Remove nose, nose-ignore-docstring as requirements
 - Add pytest as a requirement
 - Report the py.test version before running the tests

Version:   2014.1112.59
Change-Id: Idc9f69674dab567e2d4989531e979dc97d87763e
Move tag-based skip checks to pytest_runtest_setup()

 - Attempting to fix issue where py.test is not skipping mysql tests on
   jenkins as it should
 - Apparently, HelpedTestCase.setUp() was not getting run for the mysql
   tests on jenkins for some reason. Trying it from conftest.py where maybe
   the setup code will be run more reliably.
 - Reset these once issue is resolved:
    - Report skiptag and class name when we don't skip to stdout
    - Run py.test with -s so we can see stdout
    - Limited tests to CrawlDBI in test.sh

Version:   2014.1112.60
Change-Id: Ifbb26232e3fc543da17187d9eccde0f743da1c9c
Move all skip checking to pytest_runtest_setup()

 - This appears to have addressed the issue where py.test was not skipping
   mysql tests on jenkins as it should
 - Resetting these since the issue is resolved:
    - Report skiptag and class name when we don't skip to stdout
    - Run py.test with -s so we can see stdout
    - Limited tests to CrawlDBI in test.sh
 - Also enabling debugger activation in test setUp() or
   pytest_runtest_setup by prepending the testname with '.' or '..' in the
   --dbg option on the command line

Version:   2014.1112.61
Change-Id: I94bdca9158574165858de132955f32c7013b802a
Allow markers in --skip option

 - So I can say, eg, 'py.test --skip jenkins_fail' to see what happens when
   we skip the tests that fail on jenkins because of missing infrastructure

Version:   2014.1112.62
Change-Id: I3f8c5260afe77407d3a78add41023ddcf016610b
Addressing more jenkins failures

 - AlertTest.test_alert_email_defcfg fails complaining that no default
   config file is available, because it's setting $CRAWL_CONF. Reset the
   config to fix it.
 - Reset config in CheckableTest.test_eq
 - Reset config in CheckableTest.test_ctor_args
 - Reset config in CheckableTest.test_ctor

Version:   2014.1112.63
Change-Id: I1ad25d72cb905b9d40017df407c2b1b679ca57c8
Another round of jenkins failures (test_mpra)

 - Gave the mpra tests a stand-alone dictionary-based configuration so
   there's no dependency on a missing configuration file. Affected all
   three tests

Version:   2014.1112.64
Change-Id: I71ba84cb515d497d1695c76affe6348ff92ef8a7
Bug: default config not set by mysql and db2 make_tcfg

Version:   2014.1112.65
Change-Id: I639c09836cbcef4d092ae4bd35430786d38640da
Update software layer architecture in DevNotes.md

Version:   2014.1112.66
Change-Id: If89bbbe8a9c0a212153e00c22b5b23408de3de98
Test util.rgxin() returning 1st match or None, not True/False

Version:   2014.1112.67
Change-Id: Ieba544c76b80178c9bf7da0597067300cc81bb20
Make util.rgxin() return first match or None

Version:   2014.1112.68
Change-Id: I6542e96910c448ebfeb26e85e4900ff894a70062
Test, code for composite primary key duplicate inserts

 - Insert with duplicate key value should fail with exception
 - Unless ignore=True, in which case non-duplicates are inserted and
   duplicates are silently discarded
 - But mysql throws a warning even with ignore=True, so we had to add
   warning management to the mysql db.insert() routine
 - Add ignore=False arg to db.insert()

Version:   2014.1112.69
Change-Id: Ia572393b566bb37f533edda53078f5e7cbe910ca
Make plugins return error counts

 - To support populating the incipient history table

Version:   2014.1112.70
Change-Id: I9f2c77943fe7be293c34163e96731802cf425bf4
Implement history table

 - Define the table
 - When a plugin fires, record the event in history

Version:   2014.1112.71
Change-Id: Iff2ab12342daa1b49dbe5ae171dcf05ca9f405e5
Fix emerging test failures

 - test_CrawlDBI.py:
    * Isolate test_ctor_tblpfx_none with its own config
    * Add calls to self.dbgfunc() to allow ad hoc debugging
 - test_CrawlPlugin.py:
    * The config generated by make_cfg() was from scratch and did not
      include everything needed by all tests. Updated to base it on
      hpssic_sqlite_test.cfg, encapsulate some significant logic around
      setting options in nested method optset()
    * Add calls to self.dbgfunc() to allow ad hoc debugging
 - test_html.py:
    * If HPSS is unavailable, skip test_html_report()
 - test_util.py:
    * Expect empty list back from csv_list() when passing it an empty or
      whitespace string

Version:   2014.1112.72
Change-Id: If7f11a954af9ed8d1795ecfe40765a2bb692a582
Low level tweaks to support history_load(), etc.

 - Provide a definitive list of default plugins in a single routine (used
   in history_load())
 - csv_list() changes to return the empty list on input of empty/whitespace
   string (used in history_load())
 - New messages

Version:   2014.1112.73
Change-Id: Icc694c7b03c31efca0e1c6e1080e5889ad884cf8
Routine to load_history() in each sublib

 - Linkage method in CrawlPlugin so crawl can get its list of plugins from
   the config and doesn't have to know (many) details about specific
   plugins

Version:   2014.1112.74
Change-Id: Ib9eab5545a0fb612033f76330eb0992445a05bb2
Support elements for loading and showing history

 - history_load(), history_show() in crawl.py
 - retrieve_history() in crawl_lib.py

Version:   2014.1112.75
Change-Id: I7690eb3e643679db608b03cde629e0528640f0df
Interactive code for managing history table

 - Ability to load history table from plugin tables and log files
 - Ability to report content of history table
 - Ability to drop/reset history table

Version:   2014.1112.76
Change-Id: I6e450c0ab945533d92a2e85cacbcf4c463798ed8