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: 
  prepare_tests(State) ->
      %% command line test options
      CmdOpts = opts(State),
      %% rebar.config test options
      CfgOpts = rebar_state:get(State, ct_tests, []),
      ProjectApps = rebar_state:project_apps(State),
      %% prioritize tests to run first trying any command line specified
      %% tests falling back to tests specified in the config file finally
      %% running a default set if no other tests are present
      select_tests(State, ProjectApps, CmdOpts, CfgOpts).
  
  opts(State) ->
      {RawOpts, _} = rebar_state:command_parsed_args(State),
      %% filter out opts common_test doesn't know about and convert
      %% to ct acceptable forms
  
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)).
  
  