Hurd development would benefit greatly from automated tests.
Unit tests should be added for all the major components
(Mach; Hurd servers and libraries).
Also, functional tests can be performed on various levels:
Mach; individual servers; and interaction of several servers.

(The highest level would actually be testing libc functionality,
which in turn uses the various Hurd mechanisms.
glibc already comes with a test suite --
though it might be desirabe to add some extra tests
for exercising specific aspects of the Hurd...)

The Goal of this task is to provide testing frameworks
that allow automatically running tests
as part of the Hurd and Mach build processes.
The student will have to create the necessary infrastrucure,
and a couple of sample tests employing it.
Ideally, all the aspects mentioned above should be covered.
At least some have to be ready for use and upstream merging
before the end of the summer.

(As a bonus,
in addition to these explicit tests,
it would be helpful to integrate some methods
for testing locking validity,
performing static code analysis etc.)

This task probably requires some previous experience
with unit testing of C programs,
as well as dealing with complex build systems.
No in-depth knowledge about any specific parts of the Hurd should be necessary,
but some general understanding of the Hurd architecture
will have to be aquired to complete this project.
This makes it a very good project
to get started on Hurd development

Possible mentors: ?

Exercise: Create a program performing some simple test(s) on the Hurd or Mach code.
It doesn't need to be integrated in the build process yet --
a standalone progrem with it's own Makefile is fine for now.

Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled
GNU Free Documentation License.