summaryrefslogtreecommitdiff
path: root/src/mochiweb/reloader.erl
diff options
context:
space:
mode:
authorChristopher Lenz <cmlenz@apache.org>2008-04-30 00:45:50 +0000
committerChristopher Lenz <cmlenz@apache.org>2008-04-30 00:45:50 +0000
commit2f40a05f2631b9c92758720c2e9703cb0c9198d7 (patch)
tree1a3bee7cc5e62f1f8f88e4727b3d92f70dd0787b /src/mochiweb/reloader.erl
parent31168059f61685443a30450dc0a0623e11f1bbc6 (diff)
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
Diffstat (limited to 'src/mochiweb/reloader.erl')
-rw-r--r--src/mochiweb/reloader.erl37
1 files changed, 27 insertions, 10 deletions
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().