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;
}
-