anchor.diff:    [{F, strip(read_body(F, []))} || F <- RequestFiles].
   
   %%%_* Internal export --------------------------------------------------
  -run_test(Caller, TestcaseDir, DefaultHost, Params) ->
  -  Result = run_scenario(get_scenario(TestcaseDir), DefaultHost, Params),
  +run_test(Caller, TestcaseDir, Request, Params) ->
  +  Result = run_scenario(get_scenario(TestcaseDir), Request, Params),
     Caller ! {done, Result}.
   
   %%%_* Internal =========================================================
  
positive.code:                       | {error, any()}].
  %% @doc Run test scenario. Argument is the full path to the testcase dir.
  %% @end
  run(TestcaseDir) -> run(TestcaseDir, "127.0.0.1").
  
  -spec ?MODULE:run(string(), string()) ->
                       [{string(), pass | {fail, {atom(), any()}}}
                        | {error, any()}].
  %% @doc Run test scenario. Argument is the full path to the testcase dir.
  %% @end
  run(TestCaseDir, DefaultHost) -> run(TestCaseDir, DefaultHost, []).
  
  -spec ?MODULE:run(string(), string(), list()) ->
                       [{string(), pass | {fail, {atom(), any()}}}
                        | {error, any()}].
  %% @doc Run test scenario. Argument is the full path to the testcase dir.
  %% Last argument is a key-value list of substitute parameters.
  %% @end
  run(TestcaseDir, DefaultHost, Params) ->
    spawn_link(?MODULE, run_test, [self(), TestcaseDir, DefaultHost, Params]),
    receive {done, Result}    -> Result
    after   ?TESTCASE_TIMEOUT -> {error, testcase_timeout}
    end.
  
negative.code: %%%
  %%% * Url can be given either as a "url" parameter or as host/port/ssl/path
  %%%   Default host is 127.0.0.1 in run/1 but could be passed in run/2
  %%%   as well. Request parameters overrides the ones in the request files.
  %%%
  %%% * Tags with special meaning in response files. Try not to overuse these:
  %%%    ">>_"   Match anything (i.e. no real validation, only check existence)
  