module-init-tools coding standards
----------------------------------

Patches to module-init-tools are welcome.  Please note the following
design goals:

1) insmod and rmmod are designed to be as simple as possible.

2) modprobe is designed to be a swiss-army-knife, but the config file
   format is designed to be as simple as possible: let the user create
   complexity if they wish. Having said that, the "install" and "remove"
   commands serve as examples of what we don't want to do in the future,
   due to the problems they cause with identifying module dependencies.

3) module-init-tools contains a testsuite.  Patches which do not pass
   the testsuite get a frowny face. It's easy to run the testsuite,
   as you can see below. Please do test patches before posting.

The testsuite
-------------

The testsuite is under tests/test-*: one directory for each tool. To
run the testsuite, type the following from the top level directory:

	./tests/runtests

To start the tests at a particular test, use that test name on the
command line, eg. "./tests/runtests 26blacklist.sh".  To see exactly
what the test is doing, use -vv, eg

	./tests/runtests -vv 26blacklist.sh

To only test a given endianess or bitness, use

	TEST_ENDIAN=32 TEST_BITS=le ./tests/runtests

Each test is a shell script run with "-e": ie. if any command fails,
the test will fail.  The path is set up with special test versions of
the utilities (and possibly valgrind wrappers), so just invoke
"modprobe" etc. as normal.  Environment variables can be used to
control normally hardwired behaviour:

1) $MODTEST_UNAME:
	The result "uname" is to return.  Set to 2.6.27 by default.

2) $MODTEST_OVERRIDE<n>, $MODTEST_OVERRIDE_WITH<n>
	These cause file operations on $MODTEST_OVERRIDE1 to occur on
	$MODTEST_OVERRIDE_WITH1, etc.  The numbers must be consecutive:
	the code stops searching for a replacement when a number is not
	found.  This is used to stop the utilities looking in 
	/lib/modules/2.6.27/ for example.

	Other environment variables can be found in testing.h.

There are various pre-compiled test modules under tests/data/.  Each
one has big and little endian and 32 and 64-bit variants: modprobe
must handle both 32 and 64 bit (for x86-64, PPC64, Sparc64, IA64), and
depmod and modinfo must handle any endianness as well.  If you need to
add a new module to test something, put the source under tests/src,
make sure it passes for the cases you can test, and I'll compile and
test the others.

When writing tests, make sure your test aborts on any unexpected
behaviour: eg. compare the result is equal to what you expect, rather
than not equal to something.

Cheers!
Rusty and Jon.
