Mercurial > projects > dstress
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 <webmastro@kuehne.cn>" /> + <meta name="author" content="Thomas Kuehne <webmastro@kuehne.cn>" /> + <meta name="DC.Creator" content="Thomas Kuehne <webmastro@kuehne.cn>" /> + <meta name="DC.Publisher" content="Thomas Kuehne <webmastro@kuehne.cn>" /> + <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>© 2004, 2005 Thomas Kühne <thomas [at] kuehne.cn></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>> log.txt >> 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>> log.txt >> 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 > 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><!-- summary --></i></li> + <li>use <i>...resultfile</i> instead of <i>resultfile</i> to mark all FAIL, XPASS, ERROR testcases of this logfile by <i><!-- P! --></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 <email@host></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>