changeset 639:463c60e26040

updated readme
author thomask
date Sun, 21 Aug 2005 18:22:43 +0000
parents 61d8b062bf80
children 1fc8a80e4599
files Makefile dstress.c readme.html readme.txt
diffstat 4 files changed, 479 insertions(+), 75 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Sat Aug 20 18:24:41 2005 +0000
+++ b/Makefile	Sun Aug 21 18:22:43 2005 +0000
@@ -83,8 +83,8 @@
 return__	:= ./return__
 ifeq__		:= ./ifeq__
 extract__	:= ./extract__
-dstress__	:= ./dstress__
-crashRun__	:= ./crashRun__
+dstress__	:= ./dstress
+crashRun__	:= ./crashRun
 
 # settings
 to_log 		:= >> $(LOG) 2>&1
--- a/dstress.c	Sat Aug 20 18:24:41 2005 +0000
+++ b/dstress.c	Sun Aug 21 18:22:43 2005 +0000
@@ -93,12 +93,12 @@
 #define OBJ		"-odobj "
 #ifdef USE_WINDOWS
 #define TLOG			".\\obj\\log.tmp"
-#define CRASH_RUN		".\\crashRun__"
+#define CRASH_RUN		".\\crashRun"
 #define GDB_SCRIPTER	".\\obj\\gdb.tmp"
 #else
 #ifdef USE_POSIX
 #define TLOG			"./obj/log.tmp"
-#define CRASH_RUN		"./crashRun__"
+#define CRASH_RUN		"./crashRun"
 #define GDB_SCRIPTER	"./obj/gdb.tmp"
 #endif
 #endif
@@ -255,19 +255,6 @@
 	return strip(cleanPathSeperator(back));
 }
 
-/* query the environment for general flags */
-char* getGeneralFlags(){
-	char* back = getenv("DFLAGS");
-	if(back == NULL){
-		back = getenv("dflags");
-		if(back==NULL){
-			 back = calloc(1,1);
-		}
-	}
-	return strip(cleanPathSeperator(back));
-}
-
-
 /* extract the FIRST occurance of a given TAG until the next linebreak */
 char* getCaseFlag(const char* data, const char* tag){
 	char* begin;
@@ -483,7 +470,7 @@
 	}
 #else
 
-//#error comment me out, if your test cases produce neither eternal loops nor Access Violations
+#error comment me out, if your test cases produce neither eternal loops nor Access Violations
 	return system(cmd);
 
 #endif /* USE_POSIX else */
@@ -492,7 +479,6 @@
 
 int main(int argc, char* arg[]){
 	char* compiler;		/* the compiler - from enviroment flag "DMD" */
-	char* cmd_arg_general;	/* additional arguments - from enviroment flag "DFLAGS" */
 	char* cmd_arg_case;	/* additional arguments - from the testcase file */
 	char* buffer;		/* general purpose buffer */
 	int modus;		/* test modus: RUN NORUN COMPILE NOCOMPILE */
@@ -534,7 +520,6 @@
 	/* gen flags */
 	case_file = cleanPathSeperator(strdup(arg[2]));
 	compiler = getCompiler();
-	cmd_arg_general = getGeneralFlags();
 	gdb = getGDB();
 	buffer = loadFile(case_file);
 
@@ -611,7 +596,6 @@
 #ifdef DEBUG
 	fprintf(stderr, "case:     \"%s\"\n", case_file);
 	fprintf(stderr, "compiler: \"%s\"\n", compiler);
-	fprintf(stderr, "DFLAGS G: \"%s\"\n", cmd_arg_general);
 	fprintf(stderr, "DFLAGS C: \"%s\"\n", cmd_arg_case);
 	fprintf(stderr, "ELINE   : \"%s\"\n", error_line);
 	fprintf(stderr, "EFILE   : \"%s\"\n", error_file);
@@ -622,13 +606,11 @@
 	/* start working */
 	if(modus==COMPILE || modus==NOCOMPILE){
 		/* gen command */
-		buffer = malloc(strlen(compiler)+strlen(cmd_arg_general)+strlen(cmd_arg_case)+strlen(OBJ)
+		buffer = malloc(strlen(compiler)+strlen(cmd_arg_case)+strlen(OBJ)
 			+strlen(case_file)+strlen(TLOG)+64);
 		buffer[0]='\x00';
 		strcat(buffer, compiler);
 		strcat(buffer, " ");
-		strcat(buffer, cmd_arg_general);
-		strcat(buffer, " ");
 		strcat(buffer, cmd_arg_case);
 		strcat(buffer, " -c ");
 		if(NULL==strstr(buffer, "-od")){
@@ -683,12 +665,10 @@
 		fprintf(stderr,"--------\n");
 	}else if(modus==RUN || modus==NORUN){
 		/* gen command */
-		buffer = malloc(strlen(compiler)+strlen(cmd_arg_general)+strlen(cmd_arg_case)+strlen(OBJ)
+		buffer = malloc(strlen(compiler)+strlen(cmd_arg_case)+strlen(OBJ)
 			+strlen(case_file)*2+strlen(TLOG)+64);
 		strcpy(buffer, compiler);
 		strcat(buffer, " ");
-		strcat(buffer, cmd_arg_general);
-		strcat(buffer, " ");
 		strcat(buffer, cmd_arg_case);
 		strcat(buffer, " ");
 		if(NULL==strstr(buffer, "-od")){
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/readme.html	Sun Aug 21 18:22:43 2005 +0000
@@ -0,0 +1,244 @@
+<html>
+	<head>
+		<meta http-equiv="content-type" content="text/html; charset=us-ascii" />
+		<meta http-equiv="content-language" content="en" />
+		<meta http-equiv="pics-label" content='(pics-1.1 "http://www.icra.org/ratingsv02.html" l gen true for "http://kuehne.cn")' />
+		<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.classify.org/safesurf/" L gen true for "http://dstress.kuehne.cn" r (SS~~000 1))' />
+		<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://vancouver-webpages.com/VWP1.0/" l gen true comment "VWP1.0" by "webmastro@kuehne.cn" on "2004.09.21T01:30-0700" for "dstress.kuehne.cn" r (P 0 S 0 V 0 Com 0 Tol 0 Env 0 SF 0 Edu 0 Can 0 MC 0 Gam -1 ))' />
+		<meta http-equiv="Content-Script-Type" content="text/javascript" />
+		<meta http-equiv="Content-Style-Type" content="text/css" />
+		<title>DStress - D compiler test suite</title>
+		<meta name="DC.Identifier" content="http://dstress.kuehne.cn/readme.html" />
+		<link rel="stylesheet" type="text/css" href="./www/formate.css" />
+		<meta name="distribution" content="Global" />
+		<meta name="DC.Format" content="text/html" />
+		<meta name="DC.Type" content="Software" />
+		<meta name="generator" content="Thomas Kuehne &lt;webmastro@kuehne.cn&gt;" />
+		<meta name="author" content="Thomas Kuehne &lt;webmastro@kuehne.cn&gt;" />
+		<meta name="DC.Creator" content="Thomas Kuehne &lt;webmastro@kuehne.cn&gt;" />
+		<meta name="DC.Publisher" content="Thomas Kuehne &lt;webmastro@kuehne.cn&gt;" />
+		<meta name="robots" content="index,follow" />
+		<meta name="DOCUMENT-STATE" content="STATIC" />
+		<meta name="DC.Language" content="en" />
+		<meta name="date" content="2005-08-14" />
+		<meta name="DC.Date" content="2005-08-14" />
+		<link rel="Report" href="./www/dstress.html" title="Report" />
+		<link rel="Results" href="./www/results.html"/>
+		<link rel="copyright" href="./license.txt"/>
+		<link rel="author" href="./authors.txt">
+	</head>
+	<body>
+
+		<center><h2><a id="top" name="top"></a>DStress - a D compiler test suite</h2><p>&#169; 2004, 2005 Thomas K&uuml;hne &lt;thomas [at] kuehne.cn&gt;</p></center>
+
+
+		<h3><a name="abstract" id="abstract" href="#top">^</a> Abstract</h3>
+		<blockquote>
+			 DStress is a collection of bug tracking and language conformance test cases for the <a href="http://digitalmars.com/d/">D programming language</a>. This document describes the use of the testing framework. The test summary can be found at <a href="./www/dstress.html">http://dstress.kuehne.cn/www/dstress.html</a> and a complete listing at <a href="./www/results.html">http://dstress.kuehne.cn/www/results.html</a>.
+		</blockquote>
+
+		<h3><a name="index" id="index" href="#top">^</a> Index</h3>
+		<blockquote>
+			<ol>
+				<li><a href="#conditions">Conditions</a></li>
+				<li><a href="#symbols">Symbols</a></li>
+				<li><a href="#environment-settings">Environment Settings</a></li>
+				<li><a href="#testcase-settings">Testcase Settings</a></li>
+				<li><a href="#testing">Testing</a></li>
+				<li><a href="#report-generation">Report Generation</a></li>
+				<li><a href="#sourcecode-metadata">Sourcecode Metadata</a></li>
+			</ol>
+		</blockquote>
+
+		<h3><a name="conditions" id="conditions" href="#top">^</a> Conditions</h3>
+		<blockquote>
+			<dl>
+				<dt>Passed</dt>
+				<dd><ol>
+					<li>compiler return code zero</li>
+					<li>no assertion was thrown</li>
+					<li>return code of main is zero (applies only to the runtime tests)</li>
+				</ol></dd>
+				<dt>Failed</dt>
+				<dd><ol>
+					<li>compiler return code unequal zero</li>
+					<li>linker return code unequal zero</li>
+					<li>assertion was thrown</li>
+					<li>return code of main isn't zero (applies only to the runtime tests)</li>
+				</ol></dd>
+				<dt>Error</dt>
+				<dd><ol>
+					<li>compiler segfaulted</li>
+					<li>test case segfaulted</li>
+					<li>unexpected compiler failure without source indication</li>
+				</ol></dd>
+			</dl>
+		</blockquote>
+
+		<h3><a name="symbols" id="symbols" href="#top">^</a> Symbols</h3>
+		<blockquote>
+			 The symbols are the same as those used by the <a href="http://www.gnu.org/software/dejagnu/">DejaGnu</a> test framework.
+			<dl>
+				<dt>PASS</dt>
+					<dd>test case was expected to pass, and it did</dd>
+				<dt>XPASS</dt>
+					<dd>test case was expected to fail, but passed</dd>
+				<dt>FAIL</dt>
+					<dd>test case was expected to pass, but failed</dd>
+				<dt>XFAIL</dt>
+					<dd>test case was expected to fail, and it did</dd>
+				<dt>ERROR</dt>
+					<dd>compiler, linker or test case segfaulted</dd>
+			</dl>
+		</blockquote>
+
+		<h3><a name="environment-settings" id="environment-settings" href="#top">^</a> Environment Settings</h3>
+		<blockquote>
+			<dl>
+				<dd>
+					<dt>DMD / dmd</dt>
+						<dd>the D compiler, e.g.: <i>c:\dmd\bin\dmd.exe</i></dd>
+						<dd>use the wrapper <i>gdmd</i> for the GDC compiler</dd>
+						<dd>default value: <i>dmd</i></dd>
+					<dt>GDB / gdb</dt>
+						<dd>a debugger with gdb-like commands, e.g.: <i>/usr/local/bin/gdb</i></dd>
+						<dd>default value: <i>gdb</i></dd>
+				</dd>
+			</dl>
+		</blockquote>
+
+		<h3><a name="testcase-settings" id="testcase-settings" href="#top">^</a> Testcase Settings</h3>
+		<blockquote>
+			The settings starts with the end of one of the markers listed below and continues until the end of the line.
+			<dl>
+				<dt>__DSTRESS_DFLAGS__</dt>
+					<dd>additional compiler arguments</dd>
+					<dd>default: <i>empty</i></dd>
+				<dt>__DSTRESS_EFILE__</dd>
+					<dd>expected failing source file</dd>
+					<dd>default: if __DSTRESS_ELINE__ isn't empty <i>current source file</i>, else <i>empty</i></dd>
+				<dt>__DSTRESS_ELINE__</dt>
+					<dd>expected failing source line</dd>
+					<dd>default: <i>empty</i></dd>
+				<dt>__GDB_PATTERN__</dd>
+					<dd>expected regular expression in GDB's output</dd>
+					<dd>default: <i>empty</i></dd>
+				<dt>__GDB_SCRIPT__</dd>
+					<dd>GDB command sequence</dd>
+					<dd>note: replace linebreaks by <i>\n</i></dd>
+					<dd>default: <i>empty</i></dd>
+			</dl>
+		</blockquote>
+
+		<h3><a name="testing" id="testing" href="#top">^</a> Testing</h3>
+		<blockquote>
+			Testcases that are newer than the result file are ignored.
+			<dl>
+				<dt>Posix Systems: AIX, Apple, BSD, Linux, Unix</dt>
+				<dd>
+					<dl>
+						<dt>Requirements</dt>
+							<dd>a C compiler</dd>
+							<dd><a href="./dstress.c">dstress.c</a></dd>
+							<dd><a href="./crashRun.c">crashRun.c</a></dd>
+							<dd>a D compiler</dd>
+							<dd>GnuMake version 3.80 or later (optional)</dd>
+						<dt>Step-by-Step (without GnuMake)</dt>
+							<dd>
+								<ol>
+									<li>compile <i>dstress.c</i><blockquote><pre><span class="cmd">gcc -o dstress dstress.c</span></pre></blockquote></li>
+									<li>compile <i>crashRun.c</i><blockquote><pre><span class="cmd">gcc -o crashRun crashRun.c</span></pre></blockquote></li>
+									<li>test D compiler:<blockquote><pre><span class="cmd">./dstress compile compile/const_12.d</span></pre></blockquote></li>
+									<li>test linker and shell:<blockquote><pre><span class="cmd">./dstress run run/main_02.d</span></pre></blockquote></li>
+									<li>start testing:<blockquote><pre><span class="cmd">./dstress [compile|nocompile|run|norun] testfile.d 2&gt;&gt; log.txt &gt;&gt; results.txt</span></pre></blockquote></li>
+								</ol>
+							</dd>
+						<dt>Step-by-Step (with GnuMake)</dt>
+							<dd>
+								<ol>
+									<li>clean-up:<blockquote><pre><span class="cmd">make distclean</span></pre></blockquote></li>
+									<li>start testing:<blockquote><pre><span class="cmd">make all > results</span></pre></blockquote></li>
+								</ol>
+							</dd>
+					</dl>
+				</dd>
+				<dt>Windows Systems</dt>
+				<dd>
+					<dl>
+						<dt>Requirements</dt>
+							<dd>a C compiler</dd>
+							<dd><a href="./dstress.c">dstress.c</a></dd>
+							<dd>a D compiler</dd>
+						<dt><a name="windows-restrictions" id="windows-restrictions"></a>Restrictions</dt>
+							<dd>no eternal-loop protection</dd>
+							<dd>no proper Access Violation detection</dd>
+							<dd>Access Violations might cause pop-ups requiring human interaction</dd>
+						<dt>Step-by-Step</dt>
+							<dd>
+								<ol>
+									<li>make sure you understand the <a href="#windows-restrictions"> restrictions</a></li>
+									<li>open dstress.c, search for <i>#error comment me out</i> and follow the instruction</li>
+									<li>compile <i>dstress.c</i><blockquote><pre><span class="cmd">dmc -o dstress dstress.c</span></pre></blockquote></li>
+									<li>test D compiler:<blockquote><pre><span class="cmd">dstress compile compile\const_12.d</span></pre></blockquote></li>
+									<li>test linker and shell:<blockquote><pre><span class="cmd">dstress run run\main_02.d</span></pre></blockquote></li>
+									<li>start testing:<blockquote><pre><span class="cmd">dstress [compile|nocompile|run|norun] testfile.d 2&gt;&gt; log.txt &gt;&gt; results.txt</span></pre></blockquote></li>
+								</ol>
+							</dd>
+				</dd>
+			</dl>
+		</blockquote>
+
+		<h3><a name="report-generation" id="report-generation" href="#top">^</a> Report Generation</h3>
+		<blockquote>
+			<dl>
+				<dt>Requirements</dt>
+				<dd>
+					<ul>
+						<li>a Java compiler</li>
+						<li><a href="./www/GenReport.java">GenReport.java</a></li>
+						<li>at least one logfile</li>
+					</ul>
+				</dd>
+				<dt>Step-by-Step</dt>
+				<dd>
+					<ol>
+						<li>compile the reporter class<blockquote><pre><span class="cmd">javac GenReporter.java</span></pre></blockquote></li>
+						<li>feed the logfile(s) to the reporter class<blockquote><pre><span class="cmd">java cn.kuehne.dmd.dstress.GenReport results1 results2 &gt; report.raw</span></pre></blockquote></li>
+						<li>sort and insert <i>report.raw</i> with apropiate HTML tags into a HTML file</li>
+					</ol>
+				</dd>
+				<dt>Notes</dt>
+				<dd>
+					<ul>
+						<li>the output is unsorted</li>
+						<li>one or more result-files can be feed to the reporter class</li>
+						<li>lines containing statistic data are marked by <i>&lt;!-- summary --&gt;</i></li>
+						<li>use <i>...resultfile</i> instead of <i>resultfile</i> to mark all FAIL, XPASS, ERROR testcases of this logfile by <i>&lt;!-- P! --&gt;</i></li>
+						<li>more than one resultfile can be marked</li>
+					</ul>
+				</dd>
+			</dl>
+		</blockquote>
+
+		<h3><a name="sourcecode-metadata" id="sourcecode-metadata" href="#top">^</a> Sourcecode Metadata</h3>
+		<blockquote>
+			Metadata starts with one of the markers listed below and continues until the end of the line.
+			<dl>
+				<dt>@author@</dt>
+					<dd>the bug/testcase reporter</dd>
+					<dd>common format: <i>Name &lt;email@host&gt;</i></dd>
+				<dt>@date@</dt>
+					<dd>first report date</dd>
+					<dd>common format: <i>year-month-day</i>
+				<dt>@uri@</dt>
+					<dd>the message id of the email/newsgroup message or the webpage</dd>
+					<dd>common format: <i>news:msg-id@host</i> or <i>http://host/page</i></dd>
+				<dt>@WARNING@</dt>
+					<dd>marks testcases with external dependencies or architecture/compiler specific data</dd>
+					<dd>common format: <i>descriptive text</i></dd>
+			</dl>
+		</blockquote>
+
+		<div><br /><br /><hr /><a href='http://dstress.kuehne.cn/www/dstress.html'>http://dstress.kuehne.cn/readme.html</a>; 2005-08-21; <a href="mailto:webmastro@kuehne.cn">Webmaster</a></div>
+	</body>
+</html>
\ No newline at end of file
--- a/readme.txt	Sat Aug 20 18:24:41 2005 +0000
+++ b/readme.txt	Sun Aug 21 18:22:43 2005 +0000
@@ -1,57 +1,237 @@
-Project:
-	DStress
+
+    DStress - a D compiler test suite
+
+(c) 2004, 2005 Thomas Kühne <thomas [at] kuehne.cn>
+
+
+      ^ <#top> Abstract
 
-Copyright:
-	(c) 2004, 2005 Thomas Kühne; GNU General Public License 
+    DStress is a collection of bug tracking and language conformance
+    test cases for the D programming language
+    <http://digitalmars.com/d/>. This document describes the use of the
+    testing framework. The test summary can be found at
+    <http://dstress.kuehne.cn/www/dstress.html> and a
+    complete listing at <http://dstress.kuehne.cn/www/results.html>.
+
+
+      ^ <#top> Index
+
+       1. Conditions <#conditions>
+       2. Symbols <#symbols>
+       3. Environment Settings <#environment-settings>
+       4. Testcase Settings <#testcase-settings>
+       5. Testing <#testing>
+       6. Report Generation <#report-generation>
+       7. Sourcecode Metadata <#sourcecode-metadata>
+
 
-URL:
-	http://dstress.kuehne.cn/www/dstress.html
-	http://dstress.kuehne.cn/ (svn access)
-	mailto:dstress@kuehne.cn
+      ^ <#top> Conditions
+
+    Passed
+
+           1. compiler return code zero
+           2. no assertion was thrown
+           3. return code of main is zero (applies only to the runtime
+              tests)
+
+    Failed
 
-Description:
-	stress tests and bug checks for D-language compilers
+           1. compiler return code unequal zero
+           2. linker return code unequal zero
+           3. assertion was thrown
+           4. return code of main isn't zero (applies only to the
+              runtime tests)
+
+    Error
+
+           1. compiler segfaulted
+           2. test case segfaulted
+           3. unexpected compiler failure without source indication
+
+
+      ^ <#top> Symbols
+
+    The symbols are the same as those used by the DejaGnu
+    <http://www.gnu.org/software/dejagnu/> test framework.
 
-Requirements:
-	1) a D compiler
-	2) GnuMake, at least 3.80(2002-10-03)
-		3.79(2000-04-11) does NOT support the eval function
+    PASS
+        test case was expected to pass, and it did
+    XPASS
+        test case was expected to fail, but passed
+    FAIL
+        test case was expected to pass, but failed
+    XFAIL
+        test case was expected to fail, and it did
+    ERROR
+        compiler, linker or test case segfaulted
+
+
+      ^ <#top> Environment Settings
+
+    DMD / dmd
+        the D compiler, e.g.: /c:\dmd\bin\dmd.exe/
+        use the wrapper /gdmd/ for the GDC compiler
+        default value: /dmd/
+    GDB / gdb
+        a debugger with gdb-like commands, e.g.: //usr/local/bin/gdb/
+        default value: /gdb/
+
+
+      ^ <#top> Testcase Settings
+
+    The settings starts with the end of one of the markers listed below
+    and continues until the end of the line.
 
-Condition Passed:
-	1) no assertion is thrown
-	and 2) return value of main is 0 (zero)
+    __DSTRESS_DFLAGS__
+        additional compiler arguments
+        default: /empty/
+    __DSTRESS_EFILE__
+        expected failing source file
+        default: if __DSTRESS_ELINE__ isn't empty /current source file/,
+        else /empty/
+    __DSTRESS_ELINE__
+        expected failing source line
+        default: /empty/
+    __GDB_PATTERN__
+        expected regular expression in GDB's output
+        default: /empty/
+    __GDB_SCRIPT__
+        GDB command sequence
+        note: replace linebreaks by /\n/
+        default: /empty/
 
-Condition Failed:
-	1) compiler error
-	2) linker error
-	3) wrong assertion
-	4) return value of main isn't 0 (zero)
+
+      ^ <#top> Testing
+
+    Testcases that are newer than the result file are ignored.
+
+    Posix Systems: AIX, Apple, BSD, Linux, Unix
+
+        Requirements
+            a C compiler
+            dstress.c <./dstress.c>
+            crashRun.c <./crashRun.c>
+            a D compiler
+            GnuMake version 3.80 or later (optional)
+        Step-by-Step (without GnuMake)
+
+               1. compile /dstress.c/
 
-Output Synopsis: (DejaGnu / POSIX 1003.3)
-	PASS:	- test case was expected to pass, and it did
-	XPASS:	- test case was expected to fail, but passed
-	FAIL:	- test case was expected to pass, but failed
-	XFAIL:	- test case was expected to fail, and it did
-	ERROR:	- compiler, linker or test case segfaulted; 
-		- resource limit (480 seconds per test case / 500MB)
-		- inapropiate error messages 
+gcc -o dstress dstress.c
+
+               2. compile /crashRun.c/
+
+gcc -o crashRun crashRun.c
+
+               3. test D compiler:
+
+./dstress compile compile/const_12.d
+
+               4. test linker and shell:
+
+./dstress run run/main_02.d
+
+               5. start testing:
+
+./dstress [compile|nocompile|run|norun] testfile.d 2>> log.txt >> results.txt
+
+        Step-by-Step (with GnuMake)
+
+               1. clean-up:
+
+make distclean
+
+               2. start testing:
+
+make all > results
+
+    Windows Systems
+
+        Requirements
+            a C compiler
+            dstress.c <./dstress.c>
+            a D compiler
+        Restrictions
+            no eternal-loop protection
+            no proper Access Violation detection
+            Access Violations might cause pop-ups requiring human
+            interaction
+        Step-by-Step
+
+               1. make sure you understand the restrictions
+                  <#windows-restrictions>
+               2. open dstress.c, search for /#error comment me out/ and
+                  follow the instruction
+               3. compile /dstress.c/
+
+dmc -o dstress dstress.c
+
+               4. test D compiler:
+
+dstress compile compile\const_12.d
+
+               5. test linker and shell:
+
+dstress run run\main_02.d
+
+               6. start testing:
 
-Testing:
-	1) the environment variable $DMD / %DMD% is used to detect the compiler executeable
-	2) the environment variable $DFLAGS / %DFLAGS% is used for additional compiler arguments
-	3) run as "make distclean all"
-	4) for manual tests used the "dstress.c" source, e.g.
-		./dstress nocompile ./the_source_file.d
-		./dstress run ./some_dir/source.html
+dstress [compile|nocompile|run|norun] testfile.d 2>> log.txt >> results.txt
+
+
+      ^ <#top> Report Generation
+
+    Requirements
+
+            * a Java compiler
+            * GenReport.java <./www/GenReport.java>
+            * at least one logfile
+
+    Step-by-Step
+
+           1. compile the reporter class
+
+javac GenReporter.java
+
+           2. feed the logfile(s) to the reporter class
+
+java cn.kuehne.dmd.dstress.GenReport results1 results2 > report.raw
+
+           3. sort and insert /report.raw/ with apropiate HTML tags into
+              a HTML file
+
+    Notes
 
-Source code comments:
-	@author@ 		reporter / author
-	@date@ 			year-month-day
-	@uri@			message id
-	@url@			message xRef
-	@WARNING@		external dependencies (e.g. Phobos)
-	@bugwatch@		marks glitches used to hide bugs in external dependencies
-	__DSTRESS_DFLAGS__	everything following in the same line will be interpreted
-				as _additional_ compiler flags
-	__DSTRESS_ELINE__	offending source line (error line)
-	__DSTRESS_EFILE__	offending source file (error file)
+            * the output is unsorted
+            * one or more result-files can be feed to the reporter class
+            * lines containing statistic data are marked by /<!--
+              summary -->/
+            * use /...resultfile/ instead of /resultfile/ to mark all
+              FAIL, XPASS, ERROR testcases of this logfile by /<!-- P! -->/
+            * more than one resultfile can be marked
+
+
+      ^ <#top> Sourcecode Metadata
+
+    Metadata starts with one of the markers listed below and continues
+    until the end of the line.
+
+    @author@
+        the bug/testcase reporter
+        common format: /Name <email@host>/
+    @date@
+        first report date
+        common format: /year-month-day/
+    @uri@
+        the message id of the email/newsgroup message or the webpage
+        common format: /news:msg-id@host/ or /http://host/page/
+    @WARNING@
+        marks testcases with external dependencies or
+        architecture/compiler specific data
+        common format: /descriptive text/
+
+
+
+------------------------------------------------------------------------
+http://dstress.kuehne.cn/readme.html; 2005-08-21; Webmaster
+<mailto:webmastro@kuehne.cn>