developer-manual: Regenerate
[privoxy.git] / doc / webserver / developer-manual / testing.html
index f578200..b96b746 100644 (file)
@@ -3,47 +3,39 @@
 <html>
 <head>
   <title>Testing Guidelines</title>
-  <meta name="GENERATOR" content=
-  "Modular DocBook HTML Stylesheet Version 1.79">
+  <meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
   <link rel="HOME" title="Privoxy Developer Manual" href="index.html">
   <link rel="PREVIOUS" title="Coding Guidelines" href="coding.html">
   <link rel="NEXT" title="Releasing a New Version" href="newrelease.html">
   <link rel="STYLESHEET" type="text/css" href="../p_doc.css">
-  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </head>
-<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink=
-"#840084" alink="#0000FF">
+<body class="SECT1" bgcolor="#EEEEEE" text="#000000" link="#0000FF" vlink="#840084" alink="#0000FF">
   <div class="NAVHEADER">
-    <table summary="Header navigation table" width="100%" border="0"
-    cellpadding="0" cellspacing="0">
+    <table summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
       <tr>
         <th colspan="3" align="center">Privoxy Developer Manual</th>
       </tr>
       <tr>
-        <td width="10%" align="left" valign="bottom"><a href="coding.html"
-        accesskey="P">Prev</a></td>
+        <td width="10%" align="left" valign="bottom"><a href="coding.html" accesskey="P">Prev</a></td>
         <td width="80%" align="center" valign="bottom"></td>
-        <td width="10%" align="right" valign="bottom"><a href=
-        "newrelease.html" accesskey="N">Next</a></td>
+        <td width="10%" align="right" valign="bottom"><a href="newrelease.html" accesskey="N">Next</a></td>
       </tr>
     </table>
     <hr align="left" width="100%">
   </div>
   <div class="SECT1">
-    <h1 class="SECT1"><a name="TESTING" id="TESTING">5. Testing
-    Guidelines</a></h1>
+    <h1 class="SECT1"><a name="TESTING" id="TESTING">5. Testing Guidelines</a></h1>
     <p>To be filled.</p>
     <div class="SECT2">
-      <h2 class="SECT2"><a name="TESTING-PLAN" id="TESTING-PLAN">5.1.
-      Testplan for releases</a></h2>
+      <h2 class="SECT2"><a name="TESTING-PLAN" id="TESTING-PLAN">5.1. Testplan for releases</a></h2>
       <p>Explain release numbers. major, minor. developer releases. etc.</p>
       <ol type="1">
         <li>
           <p>Remove any existing rpm with rpm -e</p>
         </li>
         <li>
-          <p>Remove any file that was left over. This includes (but is not
-          limited to)</p>
+          <p>Remove any file that was left over. This includes (but is not limited to)</p>
           <ul>
             <li>
               <p>/var/log/privoxy</p>
           <p>Install the rpm. Any error messages?</p>
         </li>
         <li>
-          <p>start,stop,status <span class="APPLICATION">Privoxy</span> with
-          the specific script (e.g. /etc/rc.d/init/privoxy stop). Reboot your
-          machine. Does autostart work?</p>
+          <p>start,stop,status <span class="APPLICATION">Privoxy</span> with the specific script (e.g.
+          /etc/rc.d/init/privoxy stop). Reboot your machine. Does autostart work?</p>
         </li>
         <li>
-          <p>Start browsing. Does <span class="APPLICATION">Privoxy</span>
-          work? Logfile written?</p>
+          <p>Start browsing. Does <span class="APPLICATION">Privoxy</span> work? Logfile written?</p>
         </li>
         <li>
           <p>Remove the rpm. Any error messages? All files removed?</p>
       </ol>
     </div>
     <div class="SECT2">
-      <h2 class="SECT2"><a name="FUZZING" id="FUZZING">5.2. Fuzzing
-      Privoxy</a></h2>
-      <p>To make fuzzing more convenient, Privoxy can be configured with
-      --enable-fuzz which will result in the --fuzz option becoming
-      available.</p>
+      <h2 class="SECT2"><a name="PRIVOXY-REGRESSION-TEST" id="PRIVOXY-REGRESSION-TEST">5.2. Testing with <span class=
+      "APPLICATION">Privoxy-Regression-Test</span></a></h2>
+      <p>If you compiled, packaged or merely installed Privoxy, it is recommended to run <span class=
+      "APPLICATION">Privoxy-Regression-Test</span> to verify that at least the tested parts of <span class=
+      "APPLICATION">Privoxy</span> are working as expected.</p>
+      <p>This is actually pretty easy. For details, please see <b class="COMMAND">perldoc
+      privoxy-regression-test.pl</b>.</p>
+      <p>Here is an example of what <span class="APPLICATION">Privoxy-Regression-Test</span> can do for you:</p>
+      <table border="0" bgcolor="#E0E0E0" width="100%">
+        <tr>
+          <td>
+            <pre class="PROGRAMLISTING"># Run all the tests
+fk@t520 ~ $privoxy-regression-test.pl
+2020-12-14 12:16:32: Asking Privoxy for the number of action files available ...
+2020-12-14 12:16:32: Gathering regression tests from 9 action file(s) delivered by Privoxy 3.0.30.
+2020-12-14 12:16:32: Executing regression tests ...
+2020-12-14 12:16:41: Ooops. Expected removal but: 'Referer: https://p.p/' is still there.
+2020-12-14 12:16:41: Failure for test 785. Header 'Referer: https://p.p/' and tag 'hide-referrer{conditional-block}'
+2020-12-14 12:16:41: Ooops. Got: 'Referer: https://p.p/' while expecting: 'Referer: http://p.p/'
+2020-12-14 12:16:41: Failure for test 791. Header 'Referer: https://p.p/' and tag 'hide-referrer{conditional-forge}'
+2020-12-14 12:16:44: Executed 1087 regression tests. Skipped 115. 1085 successes, 2 failures.
+# Repeat one of the failing tests and get a curl command to quickly reproduce the problem
+# without causing too much log noise.
+fk@t520 ~ $privoxy-regression-test.pl --test-number 785 --verbose --debug 4
+2020-12-14 12:17:55: Asking Privoxy for the number of action files available ...
+[...]
+2020-12-14 12:17:56: Executing regression tests ...
+2020-12-14 12:17:56: Executing: curl --include  -H 'Proxy-Connection:'  -H 'Connection: close'  -s  -S  --user-agent 'Privoxy-Regression-Test 0.7.2'  --max-time '5'  --globoff  -H 'X-Privoxy-Control: hide-referrer{conditional-block}' -H 'Referer: https://p.p/'  http://p.p/show-request 2&#62;&#38;1
+2020-12-14 12:17:56: Ooops. Expected removal but: 'Referer: https://p.p/' is still there.
+2020-12-14 12:17:56: Failure for test 785 (0/13/5). Header 'Referer: https://p.p/' and tag 'hide-referrer{conditional-block}'
+2020-12-14 12:17:56: Executed 1 regression tests. Skipped 1201. 0 successes, 1 failures.
+     </pre>
+          </td>
+        </tr>
+      </table>
+      <p>Use the if the <b class="COMMAND">--privoxy-address</b> option if the http_proxy environment variable isn't
+      configured.</p>
+    </div>
+    <div class="SECT2">
+      <h2 class="SECT2"><a name="FUZZING" id="FUZZING">5.3. Fuzzing Privoxy</a></h2>
+      <p>To make fuzzing more convenient, Privoxy can be configured with --enable-fuzz which will result in the --fuzz
+      option becoming available.</p>
       <p>Example (tested on ElectroBSD):</p>
       <table border="0" bgcolor="#E0E0E0" width="100%">
         <tr>
           <td>
-            <pre class="PROGRAMLISTING">
-            # Compile Privoxy with instrumentation for afl
+            <pre class="PROGRAMLISTING"># Compile Privoxy with instrumentation for afl
 $ export CC=afl-clang
 $ export CFLAGS="-fsanitize=address -ggdb"
 $ export CPPFLAGS=-I/usr/local/include/
@@ -132,10 +158,10 @@ Aborting
 
 $ export ASAN_OPTIONS='abort_on_error=1'
 $ mkdir input output
-$ echo '$1 bla fasel $2' &gt; input/pcrs
+$ echo '$1 bla fasel $2' &#62; input/pcrs
 $ afl-fuzz -i input -o output -m none ~/git/privoxy/privoxy --fuzz pcrs-substitute - --stfu
 
-$ cat &gt;input/pcrs.txt
+$ cat &#62;input/pcrs.txt
 FILTER: bla fasel
 s@(.{1})[432](\d+)@$1$2$hostname@UgisT
 
@@ -147,21 +173,16 @@ $ afl-fuzz -i input/ -o output/ -f bla.filter -m none privoxy --fuzz filter bla.
   </div>
   <div class="NAVFOOTER">
     <hr align="left" width="100%">
-    <table summary="Footer navigation table" width="100%" border="0"
-    cellpadding="0" cellspacing="0">
+    <table summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
       <tr>
-        <td width="33%" align="left" valign="top"><a href="coding.html"
-        accesskey="P">Prev</a></td>
-        <td width="34%" align="center" valign="top"><a href="index.html"
-        accesskey="H">Home</a></td>
-        <td width="33%" align="right" valign="top"><a href="newrelease.html"
-        accesskey="N">Next</a></td>
+        <td width="33%" align="left" valign="top"><a href="coding.html" accesskey="P">Prev</a></td>
+        <td width="34%" align="center" valign="top"><a href="index.html" accesskey="H">Home</a></td>
+        <td width="33%" align="right" valign="top"><a href="newrelease.html" accesskey="N">Next</a></td>
       </tr>
       <tr>
         <td width="33%" align="left" valign="top">Coding Guidelines</td>
         <td width="34%" align="center" valign="top">&nbsp;</td>
-        <td width="33%" align="right" valign="top">Releasing a New
-        Version</td>
+        <td width="33%" align="right" valign="top">Releasing a New Version</td>
       </tr>
     </table>
   </div>