From 2f40a05f2631b9c92758720c2e9703cb0c9198d7 Mon Sep 17 00:00:00 2001 From: Christopher Lenz Date: Wed, 30 Apr 2008 00:45:50 +0000 Subject: Update MochiWeb code in trunk to r66. git-svn-id: https://svn.apache.org/repos/asf/incubator/couchdb/trunk@652206 13f79535-47bb-0310-9956-ffa450edef68 --- src/mochiweb/reloader.erl | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) (limited to 'src/mochiweb/reloader.erl') diff --git a/src/mochiweb/reloader.erl b/src/mochiweb/reloader.erl index fcb27c1c..2ff154ba 100644 --- a/src/mochiweb/reloader.erl +++ b/src/mochiweb/reloader.erl @@ -80,16 +80,7 @@ doit(From, To) -> [case file:read_file_info(Filename) of {ok, FileInfo} when FileInfo#file_info.mtime >= From, FileInfo#file_info.mtime < To -> - io:format("Reloading ~p ...", [Module]), - code:purge(Module), - case code:load_file(Module) of - {module, Module} -> - io:format(" ok.~n"), - reload; - {error, Reason} -> - io:format(" ~p.~n", [Reason]), - error - end; + reload(Module); {ok, _} -> unmodified; {error, enoent} -> @@ -103,5 +94,31 @@ doit(From, To) -> error end || {Module, Filename} <- code:all_loaded(), is_list(Filename)]. +reload(Module) -> + io:format("Reloading ~p ...", [Module]), + code:purge(Module), + case code:load_file(Module) of + {module, Module} -> + io:format(" ok.~n"), + case erlang:function_exported(Module, test, 0) of + true -> + io:format(" - Calling ~p:test() ...", [Module]), + case catch Module:test() of + ok -> + io:format(" ok.~n"), + reload; + Reason -> + io:format(" fail: ~p.~n", [Reason]), + reload_but_test_failed + end; + false -> + reload + end; + {error, Reason} -> + io:format(" fail: ~p.~n", [Reason]), + error + end. + + stamp() -> erlang:localtime(). -- cgit v1.2.3