Add a --coverage option to 'python setup.py test' and 'python setup.py trial'. refs #1698

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
Delete useless stuff from Makefile.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
Update coverage-related targets in Makefile. refs #1698

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
Update .PHONY declarations in Makefile.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
Remove 'trialcoverage' plugin and support code

Closes ticket:2281 (trac).

This removes src/allmydata/test/trial_coverage.py, which was a
in-process way to run trial tests under the "coverage" code-coverage
tool. These days, the preferred way to do this is with "coverage run",
although the actual invocation is a bit messy because of the way
bin/trial uses subprocess.call() to invoke the real entrypoint script
with the right PYTHONPATH (see #1698 for details). Hopefully this will
be improved to use a simpler "coverage run .." command in the future.

This patch also removes twisted/plugins/allmydata_trial.py, which
enabled the "--reporter=bwverbose-coverage" option. Finally it modifies
setup.py to stop looking for that option and adding "trialcoverage" to
the dependencies list, which gets us closer to removing "setup_requires"
entirely.
Merge pull request #107 from warner/2281-trialcoverage

Remove 'trialcoverage' plugin and support code
coverage2el.py: update to current coverage-3.7.1 API
Makefile: remove 'twisted' from SOURCES
Rename README.txt to README.rst, and add Travis-CI and Coveralls badges to it.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
Update welcome.xhtml

Add a tooltip to explain what SDMF means. Cannot find a definition for MDMF; I presume "Medium" but at the risk of being wrong, I don't want to just blindly make that suggested change.
welcome.xhtml: explain MDMF too
travis: show os.statvfs before build, to investigate #2290
test_disk_stats: tolerate used==0 for a Travis worker bug

Some Travis-CI workers report persistently empty disks, causing spurious
test failures. It's not really that important to assert used>0, so this
relaxes the test.

Closes ticket:2290
Avoid Popen() of executables that don't exist

The stdlib 'subprocess' module in python-2.7.4 through 2.7.7 suffers
from http://bugs.python.org/issue18851 which causes unrelated file
descriptors to be closed when `subprocess.call()` fails the `exec()`,
such as when the executable being invoked does not actually exist. There
appears to be some randomness involved. This was fixed in python-2.7.8.

Tahoe's iputil.py uses subprocess.call on many different "ifconfig"-type
executables, most of which don't exist on any given platform (added in
git commit 8e31d66cd0b). This results in a lot of file-descriptor
closing, which (at least during unit tests) tends to clobber important
things like Tub TCP sockets. This seems to be the root cause behind
ticket:2121, in which normal code tries to close already-closed sockets,
crashing the unit tests. Since different platforms have different
ifconfigs, some platforms will experience more failed execs than others,
so this bug could easily behave differently on linux vs freebsd, as well
as working normally on python-2.7.8 or 2.7.4.

This patch inserts a guard to make sure that os.path.isfile() is true
before allowing Popen.call() to try executing the target. This ought to
be enough to avoid the bug. It changes both iputil.py and
allmydata.__init__ (which uses Popen for calling "lsb_release"), which
are all the places where 'subprocess' is used outside of unit tests.

Other potential fixes: use the 'subprocess32' module from PyPI (which is
a bug-free backport of the Python3 stdlib subprocess module, but would
introduce a new dependency), or require python >= 2.7.8 (but this would
rule out development/deployment on the current OS-X 10.9 release, which
ships with 2.7.5, as well as other distributions like Ubuntu 14.04 LTS).

I believe this closes ticket:2121, and given the apparent relationship
between 2121 and 2023, I think it also closes ticket:2023 (although
since 2023 doesn't have copies of the failing log files, it's hard to
tell). I'm hoping that this will tide us over until 1.11 is released, at
which point we can execute on the plan to remove iputil.py entirely by
changing the way that nodes learn their externally-facing IP address.
Merge pull request #109 from warner/2023-caution

Avoid Popen() of executables that don't exist
Add pkg-config directory to .gitignore
reflow to fill-column 77

and add comment informing your text editor that fill-column=77
Change python.org link (https, main download page); editing.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>