anchor.diff:  split_string(String) ->
       string:tokens(String, [$,]).
   
  +cfgopts(State) ->
  +    Opts = rebar_state:get(State, ct_tests, []),
  +    rebar_utils:filtermap(fun filter_opts/1, Opts).
  +
  +filter_opts({test_spec, _}) ->
  +    ?WARN("Test specs not supported", []),
  +    false;
  +filter_opts({suite, Suite}) when is_integer(hd(Suite)) -> true;
  +filter_opts({suite, Suite}) when is_atom(Suite) ->
  +    {true, {suite, atom_to_list(Suite)}};
  +filter_opts({suite, Suites}) ->
  +    {true, {suite, lists:map(fun(S) when is_atom(S) -> atom_to_list(S);
  +                                (S) when is_list(S) -> S
  +                             end,
  +                             Suites)}};
  +filter_opts(_) -> true.
  +
   select_tests(State, ProjectApps, CmdOpts, CfgOpts) ->
       Merged = lists:ukeymerge(1,
                                lists:ukeysort(1, CmdOpts),
  
positive.code:     case {proplists:get_value(suite, Opts), proplists:get_value(dir, Opts)} of
          {Suites, undefined} -> set_compile_dirs(State, Apps, {suite, Suites});
          {undefined, Dirs}   -> set_compile_dirs(State, Apps, {dir, Dirs});
          {Suites, [Dir]}     -> set_compile_dirs(State, Apps, join(Suites, Dir));
          {_Suites, _Dirs}    -> {error, "Only a single directory may be specified when specifying suites"}
      end.
  
  join(Suites, Dir) ->
      {suite, lists:map(fun(S) -> filename:join([Dir, S]) end, Suites)}.
  
  
negative.code:     end,
      filelib:ensure_dir(filename:join([Logdir, "dummy.beam"])),
      [{logdir, Logdir}|lists:keydelete(logdir, 1, Opts)].
  
  run_test_verbose(Opts) -> handle_results(ct:run_test(Opts)).
  
  