]> git.ipfire.org Git - thirdparty/mlmmj.git/commitdiff
test: add unit test for mygetline
authorBaptiste Daroussin <bapt@FreeBSD.org>
Thu, 16 Dec 2021 13:07:53 +0000 (14:07 +0100)
committerBaptiste Daroussin <bapt@FreeBSD.org>
Thu, 16 Dec 2021 13:07:53 +0000 (14:07 +0100)
src/mygetline.c
tests/mlmmj.c

index 15566c45311e7e0dc53ac64c71fca970a68c4895..334f35e9c8e5fb66978e38060b2cf45f1c394594 100644 (file)
@@ -31,7 +31,7 @@
 #include "mygetline.h"
 #include "memory.h"
 
-static char *mygetuntil(int fd, int eof)
+char *mygetline(int fd)
 {
        size_t i = 0, res, buf_size = BUFSIZE;  /* initial buffer size */
        char *buf, ch;
@@ -63,14 +63,9 @@ static char *mygetuntil(int fd, int eof)
                        buf = myrealloc(buf, buf_size);
                }
                buf[i++] = ch;
-               if(eof != EOF && ch == eof) {
+               if(ch == '\n') {
                        buf[i] = '\0';
                        return buf;
                }
        }
 }
-
-char *mygetline(int fd)
-{
-       return mygetuntil(fd, '\n');
-}
index 7deaf4d89a8961c2a284a3b311bc638e8a754cf3..486d7df957a53e8867d3a459cb0b17d04376009b 100644 (file)
@@ -40,6 +40,7 @@
 #include "utils.h"
 #include "memory.h"
 #include "mail-functions.h"
+#include "mygetline.h"
 
 ATF_TC(random_int);
 ATF_TC(statctrl);
@@ -57,6 +58,7 @@ ATF_TC(write_data);
 ATF_TC(write_quit);
 ATF_TC(write_rset);
 ATF_TC(write_replyto);
+ATF_TC(mygetline);
 
 ATF_TC_HEAD(random_int, tc) { }
 ATF_TC_HEAD(statctrl, tc) { }
@@ -74,6 +76,7 @@ ATF_TC_HEAD(write_data, tc) {}
 ATF_TC_HEAD(write_quit, tc) {}
 ATF_TC_HEAD(write_rset, tc) {}
 ATF_TC_HEAD(write_replyto, tc) {}
+ATF_TC_HEAD(mygetline, tc) {}
 
 #ifndef NELEM
 #define NELEM(array)    (sizeof(array) / sizeof((array)[0]))
@@ -390,6 +393,29 @@ ATF_TC_BODY(write_replyto, tc)
                atf_tc_fail("Unexpected output");
 }
 
+ATF_TC_BODY(mygetline, tc)
+{
+       int fd = open("test", O_CREAT|O_RDWR, 0644);
+       ATF_REQUIRE(mygetline(fd) == NULL);
+       dprintf(fd, "a");
+       lseek (fd, 0, SEEK_SET);
+       char *res = mygetline(fd);
+       ATF_REQUIRE(res != NULL);
+       ATF_REQUIRE_STREQ(res, "a");
+       for (int i = 0; i < BUFSIZ + 2; i++)
+               dprintf(fd, "a");
+       lseek (fd, 0, SEEK_SET);
+       res = mygetline(fd);
+       ATF_REQUIRE(res != NULL);
+       dprintf(fd, "\nab\n");
+       lseek (fd, 0, SEEK_SET);
+       res = mygetline(fd);
+       res = mygetline(fd);
+       ATF_REQUIRE(res != NULL);
+       ATF_REQUIRE_STREQ(res, "ab\n");
+       close(fd);
+}
+
 ATF_TP_ADD_TCS(tp)
 {
        ATF_TP_ADD_TC(tp, random_int);
@@ -408,6 +434,7 @@ ATF_TP_ADD_TCS(tp)
        ATF_TP_ADD_TC(tp, write_quit);
        ATF_TP_ADD_TC(tp, write_rset);
        ATF_TP_ADD_TC(tp, write_replyto);
+       ATF_TP_ADD_TC(tp, mygetline);
 
        return (atf_no_error());
 }