auser-poolparty 0.2.71 → 0.2.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. data/History.txt +3 -0
  2. data/Manifest.txt +38 -81
  3. data/PostInstall.txt +1 -1
  4. data/README.txt +1 -0
  5. data/lib/erlang/messenger/Makefile +15 -0
  6. data/lib/erlang/messenger/lib/eunit/Makefile +28 -0
  7. data/lib/erlang/messenger/lib/eunit/ebin/autoload.beam +0 -0
  8. data/lib/erlang/messenger/lib/eunit/ebin/code_monitor.beam +0 -0
  9. data/lib/erlang/messenger/lib/eunit/ebin/eunit.beam +0 -0
  10. data/lib/erlang/messenger/lib/eunit/ebin/eunit_autoexport.beam +0 -0
  11. data/lib/erlang/messenger/lib/eunit/ebin/eunit_data.beam +0 -0
  12. data/lib/erlang/messenger/lib/eunit/ebin/eunit_lib.beam +0 -0
  13. data/lib/erlang/messenger/lib/eunit/ebin/eunit_proc.beam +0 -0
  14. data/lib/erlang/messenger/lib/eunit/ebin/eunit_serial.beam +0 -0
  15. data/lib/erlang/messenger/lib/eunit/ebin/eunit_server.beam +0 -0
  16. data/lib/erlang/messenger/lib/eunit/ebin/eunit_striptests.beam +0 -0
  17. data/lib/erlang/messenger/lib/eunit/ebin/eunit_test.beam +0 -0
  18. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tests.beam +0 -0
  19. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tty.beam +0 -0
  20. data/lib/erlang/messenger/lib/eunit/ebin/file_monitor.beam +0 -0
  21. data/lib/erlang/messenger/lib/eunit/src/Makefile +46 -0
  22. data/lib/poolparty/dependency_resolutions/puppet.rb +1 -0
  23. data/lib/poolparty/modules/resourcing_dsl.rb +5 -5
  24. data/lib/poolparty/plugins/deploydirectory.rb +1 -1
  25. data/lib/poolparty/pool/resource.rb +12 -3
  26. data/lib/poolparty/spec/core/string.rb +8 -2
  27. data/lib/poolparty/spec/matchers/a_spec_extensions_base.rb +3 -1
  28. data/lib/poolparty/spec/matchers/have_deploydirectory.rb +11 -11
  29. data/lib/poolparty/spec/matchers/have_gempackage.rb +1 -1
  30. data/lib/poolparty/version.rb +1 -1
  31. data/lib/poolpartyspec.rb +1 -3
  32. data/poolparty.gemspec +44 -87
  33. data/spec/poolparty/plugins/deploydirectory_spec.rb +1 -0
  34. data/spec/poolparty/pool/resource_spec.rb +13 -0
  35. data/spec/poolparty/spec/core/string_spec.rb +57 -0
  36. data/website/index.html +2 -2
  37. metadata +43 -86
  38. data/lib/erlang/messenger/lib/eunit/.svn/all-wcprops +0 -53
  39. data/lib/erlang/messenger/lib/eunit/.svn/entries +0 -140
  40. data/lib/erlang/messenger/lib/eunit/.svn/format +0 -1
  41. data/lib/erlang/messenger/lib/eunit/.svn/prop-base/NOTES.svn-base +0 -5
  42. data/lib/erlang/messenger/lib/eunit/.svn/text-base/AUTHORS.svn-base +0 -2
  43. data/lib/erlang/messenger/lib/eunit/.svn/text-base/CHANGELOG.svn-base +0 -14
  44. data/lib/erlang/messenger/lib/eunit/.svn/text-base/COPYING.svn-base +0 -504
  45. data/lib/erlang/messenger/lib/eunit/.svn/text-base/NOTES.svn-base +0 -276
  46. data/lib/erlang/messenger/lib/eunit/.svn/text-base/README.svn-base +0 -3
  47. data/lib/erlang/messenger/lib/eunit/.svn/text-base/sys.config.svn-base +0 -9
  48. data/lib/erlang/messenger/lib/eunit/.svn/text-base/vsn.mk.svn-base +0 -1
  49. data/lib/erlang/messenger/lib/eunit/doc/.svn/all-wcprops +0 -59
  50. data/lib/erlang/messenger/lib/eunit/doc/.svn/entries +0 -142
  51. data/lib/erlang/messenger/lib/eunit/doc/.svn/format +0 -1
  52. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/erlang.png.svn-base +0 -5
  53. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/eunit.html.svn-base +0 -5
  54. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/index.html.svn-base +0 -5
  55. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/modules-frame.html.svn-base +0 -5
  56. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/overview-summary.html.svn-base +0 -5
  57. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/packages-frame.html.svn-base +0 -5
  58. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/edoc-info.svn-base +0 -3
  59. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/erlang.png.svn-base +0 -0
  60. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/eunit.html.svn-base +0 -172
  61. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/index.html.svn-base +0 -17
  62. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/modules-frame.html.svn-base +0 -12
  63. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/overview-summary.html.svn-base +0 -984
  64. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/overview.edoc.svn-base +0 -980
  65. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/packages-frame.html.svn-base +0 -11
  66. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/stylesheet.css.svn-base +0 -55
  67. data/lib/erlang/messenger/lib/eunit/ebin/.svn/all-wcprops +0 -5
  68. data/lib/erlang/messenger/lib/eunit/ebin/.svn/dir-prop-base +0 -8
  69. data/lib/erlang/messenger/lib/eunit/ebin/.svn/entries +0 -28
  70. data/lib/erlang/messenger/lib/eunit/ebin/.svn/format +0 -1
  71. data/lib/erlang/messenger/lib/eunit/examples/.svn/all-wcprops +0 -23
  72. data/lib/erlang/messenger/lib/eunit/examples/.svn/entries +0 -66
  73. data/lib/erlang/messenger/lib/eunit/examples/.svn/format +0 -1
  74. data/lib/erlang/messenger/lib/eunit/examples/.svn/prop-base/eunit_examples.erl.svn-base +0 -5
  75. data/lib/erlang/messenger/lib/eunit/examples/.svn/prop-base/fib.erl.svn-base +0 -5
  76. data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/eunit_examples.erl.svn-base +0 -339
  77. data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/fib.erl.svn-base +0 -19
  78. data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/tests.txt.svn-base +0 -1
  79. data/lib/erlang/messenger/lib/eunit/include/.svn/all-wcprops +0 -11
  80. data/lib/erlang/messenger/lib/eunit/include/.svn/entries +0 -41
  81. data/lib/erlang/messenger/lib/eunit/include/.svn/format +0 -1
  82. data/lib/erlang/messenger/lib/eunit/include/.svn/prop-base/eunit.hrl.svn-base +0 -5
  83. data/lib/erlang/messenger/lib/eunit/include/.svn/text-base/eunit.hrl.svn-base +0 -313
  84. data/lib/erlang/messenger/lib/eunit/src/.svn/all-wcprops +0 -113
  85. data/lib/erlang/messenger/lib/eunit/src/.svn/entries +0 -259
  86. data/lib/erlang/messenger/lib/eunit/src/.svn/format +0 -1
  87. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/autoload.erl.svn-base +0 -5
  88. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/code_monitor.erl.svn-base +0 -5
  89. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit.erl.svn-base +0 -5
  90. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_autoexport.erl.svn-base +0 -5
  91. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_data.erl.svn-base +0 -5
  92. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_internal.hrl.svn-base +0 -5
  93. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_lib.erl.svn-base +0 -5
  94. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_proc.erl.svn-base +0 -5
  95. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_serial.erl.svn-base +0 -5
  96. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_server.erl.svn-base +0 -5
  97. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_striptests.erl.svn-base +0 -5
  98. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_test.erl.svn-base +0 -5
  99. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_tests.erl.svn-base +0 -5
  100. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_tty.erl.svn-base +0 -5
  101. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/file_monitor.erl.svn-base +0 -5
  102. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/autoload.erl.svn-base +0 -388
  103. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/code_monitor.erl.svn-base +0 -243
  104. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.app.src.svn-base +0 -21
  105. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.appup.src.svn-base +0 -1
  106. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.erl.svn-base +0 -196
  107. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_autoexport.erl.svn-base +0 -102
  108. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_data.erl.svn-base +0 -798
  109. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_internal.hrl.svn-base +0 -48
  110. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_lib.erl.svn-base +0 -682
  111. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_proc.erl.svn-base +0 -552
  112. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_serial.erl.svn-base +0 -157
  113. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_server.erl.svn-base +0 -340
  114. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_striptests.erl.svn-base +0 -64
  115. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_test.erl.svn-base +0 -334
  116. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_tests.erl.svn-base +0 -45
  117. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_tty.erl.svn-base +0 -272
  118. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/file_monitor.erl.svn-base +0 -409
@@ -1,340 +0,0 @@
1
- %% This library is free software; you can redistribute it and/or modify
2
- %% it under the terms of the GNU Lesser General Public License as
3
- %% published by the Free Software Foundation; either version 2 of the
4
- %% License, or (at your option) any later version.
5
- %%
6
- %% This library is distributed in the hope that it will be useful, but
7
- %% WITHOUT ANY WARRANTY; without even the implied warranty of
8
- %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9
- %% Lesser General Public License for more details.
10
- %%
11
- %% You should have received a copy of the GNU Lesser General Public
12
- %% License along with this library; if not, write to the Free Software
13
- %% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
14
- %% USA
15
- %%
16
- %% $Id:$
17
- %%
18
- %% @author Richard Carlsson <richardc@it.uu.se>
19
- %% @copyright 2006 Richard Carlsson
20
- %% @private
21
- %% @see eunit
22
- %% @doc EUnit server process
23
-
24
- -module(eunit_server).
25
-
26
- -export([start/1, stop/1, start_test/4, watch/3, watch_path/3,
27
- watch_regexp/3]).
28
-
29
- -export([main/1]). % private
30
-
31
- -include("eunit.hrl").
32
- -include("eunit_internal.hrl").
33
-
34
-
35
- -define(AUTO_TIMEOUT, 60000). %% auto test time limit
36
-
37
- %% TODO: pass options to server, such as default timeout?
38
-
39
- start(Server) when is_atom(Server) ->
40
- ensure_started(Server).
41
-
42
- stop(Server) ->
43
- command(Server, stop).
44
-
45
-
46
- -record(job, {super, test, options}).
47
-
48
- %% The `Super' process will receive a stream of status messages; see
49
- %% eunit_proc:status_message/3 for details.
50
-
51
- start_test(Server, Super, T, Options) ->
52
- command(Server, {start, #job{super = Super,
53
- test = T,
54
- options = Options}}).
55
-
56
- watch(Server, Module, Opts) when is_atom(Module) ->
57
- command(Server, {watch, {module, Module}, Opts}).
58
-
59
- watch_path(Server, Path, Opts) ->
60
- command(Server, {watch, {path, filename:flatten(Path)}, Opts}).
61
-
62
- watch_regexp(Server, Regex, Opts) ->
63
- case regexp:parse(Regex) of
64
- {ok, R} ->
65
- command(Server, {watch, {regexp, R}, Opts});
66
- {error, _}=Error ->
67
- Error
68
- end.
69
-
70
- %% This makes sure the server is started before sending the command, and
71
- %% returns {ok, Result} if the server accepted the command or {error,
72
- %% server_down} if the server process crashes. If the server does not
73
- %% reply, this function will wait until the server is killed.
74
-
75
- command(Server, Cmd) ->
76
- if is_atom(Server), Cmd /= stop -> ensure_started(Server);
77
- true -> ok
78
- end,
79
- if is_pid(Server) -> command_1(Server, Cmd);
80
- true ->
81
- case whereis(Server) of
82
- undefined -> {error, server_down};
83
- Pid -> command_1(Pid, Cmd)
84
- end
85
- end.
86
-
87
- command_1(Pid, Cmd) when is_pid(Pid) ->
88
- Pid ! {command, self(), Cmd},
89
- command_wait(Pid, 1000, undefined).
90
-
91
- command_wait(Pid, Timeout, Monitor) ->
92
- receive
93
- {Pid, Result} -> Result;
94
- {'DOWN', Monitor, process, Pid, _R} -> {error, server_down}
95
- after Timeout ->
96
- %% avoid creating a monitor unless some time has passed
97
- command_wait(Pid, infinity, erlang:monitor(process, Pid))
98
- end.
99
-
100
- %% Starting the server
101
-
102
- ensure_started(Name) ->
103
- ensure_started(Name, 5).
104
-
105
- ensure_started(Name, N) when N > 0 ->
106
- case whereis(Name) of
107
- undefined ->
108
- Parent = self(),
109
- Pid = spawn(fun () -> server_start(Name, Parent) end),
110
- receive
111
- {Pid, ok} ->
112
- Pid;
113
- {Pid, error} ->
114
- receive after 200 -> ensure_started(N - 1) end
115
- end;
116
- Pid ->
117
- Pid
118
- end;
119
- ensure_started(_, _) ->
120
- throw(no_server).
121
-
122
- server_start(undefined = Name, Parent) ->
123
- %% anonymous server
124
- server_start_1(Name, Parent);
125
- server_start(Name, Parent) ->
126
- try register(Name, self()) of
127
- true -> server_start_1(Name, Parent)
128
- catch
129
- _:_ ->
130
- Parent ! {self(), error},
131
- exit(error)
132
- end.
133
-
134
- server_start_1(Name, Parent) ->
135
- Parent ! {self(), ok},
136
- server_init(Name).
137
-
138
- -record(state, {name,
139
- stopped,
140
- jobs,
141
- queue,
142
- auto_test,
143
- modules,
144
- paths,
145
- regexps}).
146
-
147
- server_init(Name) ->
148
- server(#state{name = Name,
149
- stopped = false,
150
- jobs = dict:new(),
151
- queue = queue:new(),
152
- auto_test = queue:new(),
153
- modules = sets:new(),
154
- paths = sets:new(),
155
- regexps = sets:new()}).
156
-
157
- server(St) ->
158
- server_check_exit(St),
159
- ?MODULE:main(St).
160
-
161
- %% @private
162
- main(St) ->
163
- receive
164
- {done, auto_test, _Pid} ->
165
- server(auto_test_done(St));
166
- {done, Reference, _Pid} ->
167
- server(handle_done(Reference, St));
168
- {command, From, _Cmd} when St#state.stopped ->
169
- From ! {self(), stopped};
170
- {command, From, Cmd} ->
171
- server_command(From, Cmd, St);
172
- {code_monitor, {loaded, M, _Time}} ->
173
- case is_watched(M, St) of
174
- true ->
175
- server(new_auto_test(self(), M, St));
176
- false ->
177
- server(St)
178
- end
179
- end.
180
-
181
- server_check_exit(St) ->
182
- case dict:size(St#state.jobs) of
183
- 0 when St#state.stopped -> exit(normal);
184
- _ -> ok
185
- end.
186
-
187
- server_command(From, {start, Job}, St) ->
188
- Reference = make_ref(),
189
- St1 = case proplists:get_bool(enqueue, Job#job.options) of
190
- true ->
191
- enqueue(Job, From, Reference, St);
192
- false ->
193
- start_job(Job, From, Reference, St)
194
- end,
195
- server_command_reply(From, {ok, Reference}),
196
- server(St1);
197
- server_command(From, stop, St) ->
198
- %% unregister the server name and let remaining jobs finish
199
- server_command_reply(From, {error, stopped}),
200
- catch unregister(St#state.name),
201
- server(St#state{stopped = true});
202
- server_command(From, {watch, Target, _Opts}, St) ->
203
- %% the code watcher is only started on demand
204
- code_monitor:monitor(self()),
205
- %% TODO: propagate options to testing stage
206
- St1 = add_watch(Target, St),
207
- server_command_reply(From, ok),
208
- server(St1);
209
- server_command(From, {forget, Target}, St) ->
210
- St1 = delete_watch(Target, St),
211
- server_command_reply(From, ok),
212
- server(St1);
213
- server_command(From, Cmd, St) ->
214
- server_command_reply(From, {error, {unknown_command, Cmd}}),
215
- server(St).
216
-
217
- server_command_reply(From, Result) ->
218
- From ! {self(), Result}.
219
-
220
- enqueue(Job, From, Reference, St) ->
221
- case dict:size(St#state.jobs) of
222
- 0 ->
223
- start_job(Job, From, Reference, St);
224
- _ ->
225
- St#state{queue = queue:in({Job, From, Reference},
226
- St#state.queue)}
227
- end.
228
-
229
- dequeue(St) ->
230
- case queue:out(St#state.queue) of
231
- {empty, _} ->
232
- St;
233
- {{value, {Job, From, Reference}}, Queue} ->
234
- start_job(Job, From, Reference, St#state{queue = Queue})
235
- end.
236
-
237
- start_job(Job, From, Reference, St) ->
238
- From ! {start, Reference},
239
- %% The default is to run tests in order unless otherwise specified
240
- Order = proplists:get_value(order, Job#job.options, inorder),
241
- eunit_proc:start(Job#job.test, Order, Job#job.super, Reference),
242
- St#state{jobs = dict:store(Reference, From, St#state.jobs)}.
243
-
244
- handle_done(Reference, St) ->
245
- case dict:find(Reference, St#state.jobs) of
246
- {ok, From} ->
247
- From ! {done, Reference},
248
- dequeue(St#state{jobs = dict:erase(Reference,
249
- St#state.jobs)});
250
- error ->
251
- St
252
- end.
253
-
254
- %% Adding and removing watched modules or paths
255
-
256
- add_watch({module, M}, St) ->
257
- St#state{modules = sets:add_element(M, St#state.modules)};
258
- add_watch({path, P}, St) ->
259
- St#state{paths = sets:add_element(P, St#state.paths)};
260
- add_watch({regexp, R}, St) ->
261
- St#state{regexps = sets:add_element(R, St#state.regexps)}.
262
-
263
- delete_watch({module, M}, St) ->
264
- St#state{modules = sets:del_element(M, St#state.modules)};
265
- delete_watch({path, P}, St) ->
266
- St#state{paths = sets:del_element(P, St#state.paths)};
267
- delete_watch({regexp, R}, St) ->
268
- St#state{regexps = sets:del_element(R, St#state.regexps)}.
269
-
270
- %% Checking if a module is being watched
271
-
272
- is_watched(M, St) when is_atom(M) ->
273
- sets:is_element(M, St#state.modules) orelse
274
- is_watched(code:which(M), St);
275
- is_watched(Path, St) ->
276
- sets:is_element(filename:dirname(Path), St#state.paths) orelse
277
- match_any(sets:to_list(St#state.regexps), Path).
278
-
279
- match_any([R | Rs], Str) ->
280
- case regexp:first_match(Str, R) of
281
- {match, _, _} -> true;
282
- _ -> match_any(Rs, Str)
283
- end;
284
- match_any([], _Str) -> false.
285
-
286
- %% Running automatic tests when a watched module is loaded.
287
- %% Uses a queue in order to avoid overlapping output when several
288
- %% watched modules are loaded simultaneously. (The currently running
289
- %% automatic test is kept in the queue until it is done. An empty queue
290
- %% means that no automatic test is running.)
291
-
292
- new_auto_test(Server, M, St) ->
293
- case queue:is_empty(St#state.auto_test) of
294
- true ->
295
- start_auto_test(Server, M);
296
- false ->
297
- ok
298
- end,
299
- St#state{auto_test = queue:in({Server, M}, St#state.auto_test)}.
300
-
301
- auto_test_done(St) ->
302
- %% remove finished test from queue before checking for more
303
- {_, Queue} = queue:out(St#state.auto_test),
304
- case queue:out(Queue) of
305
- {{value, {Server, M}}, _} ->
306
- %% this is just lookahead - the item is not removed
307
- start_auto_test(Server, M);
308
- {empty, _} ->
309
- ok
310
- end,
311
- St#state{auto_test = Queue}.
312
-
313
- start_auto_test(Server, M) ->
314
- spawn(fun () -> auto_super(Server, M) end).
315
-
316
- auto_super(Server, M) ->
317
- process_flag(trap_exit, true),
318
- %% Give the user a short delay before any output is produced
319
- receive after 333 -> ok end,
320
- %% Make sure output is sent to console on server node
321
- group_leader(whereis(user), self()),
322
- Pid = spawn_link(fun () -> auto_proc(Server, M) end),
323
- receive
324
- {'EXIT', Pid, _} ->
325
- ok
326
- after ?AUTO_TIMEOUT ->
327
- exit(Pid, kill),
328
- io:put_chars("\n== EUnit: automatic test was aborted ==\n"),
329
- io:put_chars("\n> ")
330
- end,
331
- Server ! {done, auto_test, self()}.
332
-
333
- auto_proc(Server, M) ->
334
- %% Make the output start on a new line instead of on the same line
335
- %% as the current shell prompt.
336
- io:fwrite("\n== EUnit: testing module ~w ==\n", [M]),
337
- eunit:test(Server, M, [enqueue]),
338
- %% Make sure to print a dummy prompt at the end of the output, most
339
- %% of all so that the Emacs mode realizes that input is active.
340
- io:put_chars("\n-> ").
@@ -1,64 +0,0 @@
1
- %% This library is free software; you can redistribute it and/or modify
2
- %% it under the terms of the GNU Lesser General Public License as
3
- %% published by the Free Software Foundation; either version 2 of the
4
- %% License, or (at your option) any later version.
5
- %%
6
- %% This library is distributed in the hope that it will be useful, but
7
- %% WITHOUT ANY WARRANTY; without even the implied warranty of
8
- %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9
- %% Lesser General Public License for more details.
10
- %%
11
- %% You should have received a copy of the GNU Lesser General Public
12
- %% License along with this library; if not, write to the Free Software
13
- %% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
14
- %% USA
15
- %%
16
- %% $Id:$
17
- %%
18
- %% @author Richard Carlsson <richardc@it.uu.se>
19
- %% @author Eric Merritt <cyberlync@gmail.com>
20
- %% @copyright 2006 Richard Carlsson, Eric Merritt
21
- %% @private
22
- %% @see eunit
23
- %% @doc Parse transform for stripping EUnit test functions.
24
-
25
- -module(eunit_striptests).
26
-
27
- -include("eunit_internal.hrl").
28
-
29
- -export([parse_transform/2]).
30
-
31
- parse_transform(Forms, Options) ->
32
- TestSuffix = proplists:get_value(eunit_test_suffix, Options,
33
- ?DEFAULT_TEST_SUFFIX),
34
- GeneratorSuffix = proplists:get_value(eunit_generator_suffix,
35
- Options,
36
- ?DEFAULT_GENERATOR_SUFFIX),
37
- ExportSuffix = proplists:get_value(eunit_export_suffix, Options,
38
- ?DEFAULT_EXPORT_SUFFIX),
39
- Exports = lists:foldl(fun ({attribute,_,export,Es}, S) ->
40
- sets:union(sets:from_list(Es), S);
41
- (_F, S) -> S
42
- end,
43
- sets:new(), Forms),
44
- F = fun (Form, Acc) ->
45
- form(Form, Acc, Exports, TestSuffix, GeneratorSuffix,
46
- ExportSuffix)
47
- end,
48
- lists:reverse(lists:foldl(F, [], Forms)).
49
-
50
- form({function, _L, Name, 0, _Cs}=Form, Acc, Exports, TestSuffix,
51
- GeneratorSuffix, ExportSuffix) ->
52
- N = atom_to_list(Name),
53
- case not sets:is_element({Name, 0}, Exports)
54
- andalso (lists:suffix(TestSuffix, N)
55
- orelse lists:suffix(GeneratorSuffix, N)
56
- orelse lists:suffix(ExportSuffix, N))
57
- of
58
- true ->
59
- Acc;
60
- false ->
61
- [Form | Acc]
62
- end;
63
- form(Form, Acc, _, _, _, _) ->
64
- [Form | Acc].