diff --git a/test/check_execio.c b/test/check_execio.c --- a/test/check_execio.c +++ b/test/check_execio.c @@ -1,25 +1,28 @@ /* - Copyright 2010 Nathan Phillip Brink, Ethan Zonca - - This file is a part of DistRen. + * Copyright 2010 Nathan Phillip Brink, Ethan Zonca + * + * This file is a part of DistRen. + * + * DistRen is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * DistRen is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with DistRen. If not, see . + */ - DistRen is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - DistRen is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with DistRen. If not, see . -*/ +#include "check_execio.h" #include "common/execio.h" #include +#include START_TEST (check_execio) { @@ -32,21 +35,46 @@ START_TEST (check_execio) char inbuf[20]; size_t bytesread; - + size_t pos; + + pos = 1; + fail_unless(execio_open(&eio, echoargv[0], echoargv) == 0, "execio_open failed"); fail_unless(execio_read(eio, inbuf, sizeof(inbuf) - 1, &bytesread) == 0, "error using execio_read\n"); - + pos += bytesread; + + while (bytesread && pos < (sizeof(inbuf) - 1)) + { + execio_read(eio, &inbuf[pos], sizeof(inbuf) - 1 - pos, &bytesread); + pos += bytesread; + } + + fail_if (pos > 10, + "I read more than 10 bytes from the command ``echo test'' when I expected only 5 or 6 bytes"); + + inbuf[sizeof(inbuf) - 1] = '\0'; + fail_if (strncmp(inbuf, "test", 4), + "Expecting ``test''; got ``%s''", + inbuf); + fail_unless(execio_close(eio) == 0, "error using execio_close\n"); } END_TEST -int main(int argc, char *argv[]) +Suite *execio_suite() { - return 0; - /* see http://check.sourceforge.net/doc/check.html/check_6.html#SEC6 */ + Suite *s; + TCase *tc; + + s = suite_create("execio"); + + tc = tcase_create("core"); + tcase_add_test(tc, check_execio); + suite_add_tcase(s, tc); + + return s; } -