Portage has some tests that use the unittest framework that ships with python (2.3-2.4ish)
Tests have a specific naming convention.
-in tests/ there is a runTest script that invokes tests/__init__.py
+in pym/portage/tests/ there is a runTest script that invokes pym/portage/tests/__init__.py
This init looks at a hardcoded list of test dirs to search for tests.
If you add a new dir and don't see your new tests, make sure that the dir is in this list.
So if I was to write a vercmp test, and vercmp is in portage_versions.
-tests/portage_versions/test_vercmp.py
+pym/portage/tests/portage_versions/test_vercmp.py
would be the filename.
The __init__.py file now does recursive tests, but you need to tell it so. For example, if
you had cache tests the dir format would be something like...
-tests/cache/flat_hash/test_foo.py
+pym/portage/tests/cache/flat_hash/test_foo.py
and you would put "cache/flat_hash" into the testDirs variable in __init__.py.
+
+
+Skipping
+--------
+
+Please use the portage.tests.* classes as they support throwing a SkipException for
+tests that are known to fail. Normally one uses testing to do Test Driven Development
+(TDD); however we do not do that here. Therefore there are times when legitimate tests
+exist but fail due to code in trunk. We would still like the suite to pass in some instances
+because the suite is built around two things, testing functionality in the current code as
+well as poking holes in the current code (isvalidatom is an example). So sometimes we desire
+a test to point out that "this needs fixing" but it doesn't affect portage's overall
+functionality. You should raise portage.tests.SkipException in that case.
+
+emerge
+------
+
+The emerge namespace currently has 0 tests (and no runner)