44 int status = AST_TEST_FAIL;
46 const char *command =
"true";
47 char *
const args[] = {
"true", NULL };
51 info->name =
"test_capture_true";
52 info->category =
"/main/test_capture/";
53 info->summary =
"capture true exit unit test";
55 "Capture exit code from true command.";
56 return AST_TEST_NOT_RUN;
61 ast_test_status_update(
test,
"Executing true exit test...\n");
64 ast_test_status_update(
test,
"couldn't find %s\n", command);
68 if (ast_test_capture_command(&cap, command, args, NULL, 0) != 1) {
69 ast_test_status_update(
test,
"ast_test_capture_command() failed\n");
73 if (cap.outlen != 0) {
74 ast_test_status_update(
test,
"unexpected value for stdout\n");
78 if (cap.errlen != 0) {
79 ast_test_status_update(
test,
"unexpected value for stderr\n");
84 ast_test_status_update(
test,
"invalid process id\n");
88 if (cap.exitcode != 0) {
89 ast_test_status_update(
test,
"child exited %d\n", cap.exitcode);
93 status = AST_TEST_PASS;
96 ast_test_capture_free(&cap);
103 int status = AST_TEST_FAIL;
105 const char *command =
"false";
106 char *
const args[] = {
"false", NULL };
110 info->name =
"test_capture_false";
111 info->category =
"/main/test_capture/";
112 info->summary =
"capture false exit unit test";
114 "Capture exit code from false command.";
115 return AST_TEST_NOT_RUN;
120 ast_test_status_update(
test,
"Executing false exit test...\n");
123 ast_test_status_update(
test,
"couldn't find %s\n", command);
127 if (ast_test_capture_command(&cap, command, args, NULL, 0) != 1) {
128 ast_test_status_update(
test,
"ast_test_capture_command() failed\n");
132 if (cap.outlen != 0) {
133 ast_test_status_update(
test,
"unexpected value for stdout\n");
137 if (cap.errlen != 0) {
138 ast_test_status_update(
test,
"unexpected value for stderr\n");
143 ast_test_status_update(
test,
"invalid process id\n");
147 if (cap.exitcode != 1) {
148 ast_test_status_update(
test,
"child exited %d\n", cap.exitcode);
152 status = AST_TEST_PASS;
155 ast_test_capture_free(&cap);
162 int status = AST_TEST_FAIL;
164 const char *command =
"base64";
165 char *
const args[] = {
"base64", NULL };
166 const char data[] =
"Mary had a little lamb.";
167 const unsigned datalen =
sizeof(data) - 1;
168 const char output[] =
"TWFyeSBoYWQgYSBsaXR0bGUgbGFtYi4=\n";
169 const unsigned outputlen =
sizeof(output) - 1;
173 info->name =
"test_capture_with_stdin";
174 info->category =
"/main/test_capture/";
175 info->summary =
"capture with stdin unit test";
177 "Capture output from stdin transformation command.";
178 return AST_TEST_NOT_RUN;
183 ast_test_status_update(
test,
"Executing stdin test...\n");
186 ast_test_status_update(
test,
"couldn't find %s\n", command);
190 if (ast_test_capture_command(&cap, command, args, data, datalen) != 1) {
191 ast_test_status_update(
test,
"ast_test_capture_command() failed\n");
195 if (cap.outlen != outputlen || memcmp(cap.outbuf, output, cap.outlen)) {
196 ast_test_status_update(
test,
"unexpected value for stdout\n");
200 if (cap.errlen != 0) {
201 ast_test_status_update(
test,
"unexpected value for stderr\n");
206 ast_test_status_update(
test,
"invalid process id\n");
210 if (cap.exitcode != 0) {
211 ast_test_status_update(
test,
"child exited %d\n", cap.exitcode);
215 status = AST_TEST_PASS;
218 ast_test_capture_free(&cap);
225 int status = AST_TEST_FAIL;
227 const char *command =
"date";
228 char *args[] = {
"date",
"DATE",
"FORMAT", NULL };
230 const char format[] =
"+%a, %d %b %y %T %z";
231 const char format2[] =
"%a, %d %b %y %T %z\n";
233 unsigned myresultlen;
239 info->name =
"test_capture_with_dynamic";
240 info->category =
"/main/test_capture/";
241 info->summary =
"capture with dynamic argument unit test";
243 "Capture output from dynamic transformation command.";
244 return AST_TEST_NOT_RUN;
249 ast_test_status_update(
test,
"Executing dynamic argument test...\n");
252 ast_test_status_update(
test,
"couldn't find %s\n", command);
257 snprintf(date,
sizeof(date),
"--date=@%lu", now);
259 tm = localtime(&now);
260 strftime(myresult,
sizeof(myresult), format2, tm);
261 myresultlen = strlen(myresult);
264 args[2] = (
char *)format;
266 if (ast_test_capture_command(&cap, command, args, NULL, 0) != 1) {
267 ast_test_status_update(
test,
"ast_test_capture_command() failed\n");
271 if (cap.outlen != myresultlen || memcmp(cap.outbuf, myresult, cap.outlen)) {
272 ast_test_status_update(
test,
"unexpected value for stdout\n");
276 if (cap.errlen != 0) {
277 ast_test_status_update(
test,
"unexpected value for stderr\n");
282 ast_test_status_update(
test,
"invalid process id\n");
286 if (cap.exitcode != 0) {
287 ast_test_status_update(
test,
"child exited %d\n", cap.exitcode);
291 status = AST_TEST_PASS;
294 ast_test_capture_free(&cap);
301 int status = AST_TEST_FAIL;
303 const char *command =
"sh";
304 char *
const args[] = {
"sh",
"-c",
"echo -n 'foo' >&2 ; echo -n 'zzz' >&1 ; echo -n 'bar' >&2", NULL };
308 info->name =
"test_capture_stdout_stderr";
309 info->category =
"/main/test_capture/";
310 info->summary =
"capture stdout & stderr unit test";
312 "Capture both stdout and stderr from shell.";
313 return AST_TEST_NOT_RUN;
318 ast_test_status_update(
test,
"Executing stdout/stderr test...\n");
321 ast_test_status_update(
test,
"couldn't find %s\n", command);
325 if (ast_test_capture_command(&cap, command, args, NULL, 0) != 1) {
326 ast_test_status_update(
test,
"ast_test_capture_command() failed\n");
330 if (cap.outlen != 3 || memcmp(cap.outbuf,
"zzz", 3)) {
331 ast_test_status_update(
test,
"unexpected value for stdout\n");
335 if (cap.errlen != 6 || memcmp(cap.errbuf,
"foobar", 6)) {
336 ast_test_status_update(
test,
"unexpected value for stderr\n");
341 ast_test_status_update(
test,
"invalid process id\n");
345 if (cap.exitcode != 0) {
346 ast_test_status_update(
test,
"child exited %d\n", cap.exitcode);
350 status = AST_TEST_PASS;
353 ast_test_capture_free(&cap);
358 static int unload_module(
void)
360 AST_TEST_UNREGISTER(test_capture_with_stdin);
361 AST_TEST_UNREGISTER(test_capture_with_dynamic);
362 AST_TEST_UNREGISTER(test_capture_stdout_stderr);
363 AST_TEST_UNREGISTER(test_capture_true);
364 AST_TEST_UNREGISTER(test_capture_false);
368 static int load_module(
void)
370 AST_TEST_REGISTER(test_capture_with_stdin);
371 AST_TEST_REGISTER(test_capture_with_dynamic);
372 AST_TEST_REGISTER(test_capture_stdout_stderr);
373 AST_TEST_REGISTER(test_capture_true);
374 AST_TEST_REGISTER(test_capture_false);
Asterisk main include file. File version handling, generic pbx functions.
static void cleanup(void)
Clean up any old apps that we don't need any more.
int ast_check_command_in_path(const char *cmd)
Test for the presence of an executable command in $PATH.
A capture of running an external process.
#define AST_TEST_DEFINE(hdr)
#define ASTERISK_GPL_KEY
The text the key() function should return.
Asterisk module definitions.