anchor.diff:  %%% Internal functions
   %%====================================================================
   
  +%% @doc if the command line has an 'all' prespective run all tests instead of
  +%% just those that changed
  +-spec build_all(sin_config:config()) ->
  +    all | changed.
  +build_all(BuildRef) ->
  +    case sin_config:get_value(BuildRef, "command_line.arg") of
  +	"all" ->
  +	    all;
  +	_ ->
  +	    changed
  +    end.
  +
   %% @doc Run tests for all the applications specified.
   %% @private
  --spec test_apps(sin_config:config(), [string()], [[atom()]]) -> ok.
  -test_apps(BuildRef, [AppName | T], Acc) ->
  +-spec test_apps(all | changed,
  +		sin_config:config(), [string()], [[atom()]]) -> ok.
  +test_apps(BuildAll, BuildRef, [AppName | T], Acc) ->
       io:format("testing app ~s~n", [AppName]),
       Modules = sin_config:get_value(BuildRef,
                                 "apps." ++ AppName ++ ".file_list"),
  
positive.code:                                      atom_to_list(App)
                               end, sin_config:get_value(BuildRef,
                                                    "project.apps")),
  	    test_apps(BuildRef, Apps, []),
  	    print_overall_percentage(BuildRef, Apps)
      end,
      BuildRef.
  
negative.code:     Acc.
  
  %% @doc Run tests for each module that has a test/0 function
  -spec run_module_tests(all | changed, [atom()]) -> ok.
  run_module_tests(BuildAll, AllModules) ->
      lists:foreach(
        fun({{_, Module, _, _, _},
  	   {HasChanged, TestImplementations,
  	    TestedModules, _}}) ->
  	      case {BuildAll, lists:member(proper, TestImplementations),
  		    tested_changed(TestedModules, AllModules)} of
  		  {all, _, _} ->
  		      proper:module(Module);
  		  {_, true, true} ->
  		      proper:module(Module);
  		  _ ->
  		      ok
  	      end,
  	      case {BuildAll,
  		    lists:member(eunit, TestImplementations), HasChanged} of
  		  {all, _, _} ->
  		      ewl_talk:say("testing ~p", [Module]),
  		      eunit:test(Module),
  		      print_code_coverage(Module);
  		  {_, true, changed} ->
  		      ewl_talk:say("testing ~p", [Module]),
  		      eunit:test(Module),
  		      print_code_coverage(Module);
  