Pārlūkot izejas kodu

tests: Replace returns with exits in the main functions
This will allow us to redefine the exit function.

For example:
```
#define exit(code) { \
fprintf(stderr, "%s:%d: exit(%s) in function ‘%s’\n",
__FILE__, __LINE__, #code, __func__); \
_exit(code); \
}
```

Tibor Nagy 6 gadi atpakaļ
vecāks
revīzija
d1a424c002

+ 1 - 1
tests/dirent/main.c

@@ -10,7 +10,7 @@ int main(void) {
 
     if (dir == NULL) {
         perror("opendir");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     struct dirent* entry;

+ 1 - 1
tests/dirent/scandir.c

@@ -12,7 +12,7 @@ int main(void) {
     int len = scandir("example_dir/", &array, filter, alphasort);
     if (len < 0) {
         perror("scandir");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     for(int i = 0; i < len; i += 1) {

+ 2 - 2
tests/fcntl/create.c

@@ -7,9 +7,9 @@ int main(void) {
     if (fd >= 0) {
         write(fd, "Hello World!\n", 13);
         close(fd);
-        return EXIT_SUCCESS;
+        exit(EXIT_SUCCESS);
     } else {
         write(STDERR_FILENO, "creat failed\n", 13);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 }

+ 1 - 1
tests/netdb/getaddrinfo.c

@@ -22,7 +22,7 @@ int main(void) {
     errcode = getaddrinfo("www.redox-os.org", NULL, &hints, &res);
     if (errcode != 0) {
         perror("getaddrinfo");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     while (res) {

+ 8 - 8
tests/pwd.c

@@ -19,7 +19,7 @@ int main(void) {
     struct passwd *pwd = getpwuid(0);
     if (errno != 0) {
         perror("getpwuid");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     if (pwd != NULL) {
         print(pwd);
@@ -30,7 +30,7 @@ int main(void) {
     pwd = getpwnam("nobody");
     if (errno != 0) {
         perror("getpwnam");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     if (pwd != NULL) {
         print(pwd);
@@ -43,12 +43,12 @@ int main(void) {
     if (getpwuid_r(0, &pwd2, buf, 100, &result) < 0) {
         perror("getpwuid_r");
         free(buf);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     if (result != NULL) {
         if (result != &pwd2) {
             free(buf);
-            return EXIT_FAILURE;
+            exit(EXIT_FAILURE);
         }
         print(&pwd2);
     }
@@ -57,12 +57,12 @@ int main(void) {
     if (getpwnam_r("nobody", &pwd2, buf, 100, &result) < 0) {
         perror("getpwuid_r");
         free(buf);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     if (result != NULL) {
         if (result != &pwd2) {
             free(buf);
-            return EXIT_FAILURE;
+            exit(EXIT_FAILURE);
         }
         print(&pwd2);
     }
@@ -72,11 +72,11 @@ int main(void) {
     char buf2[1];
     if (getpwuid_r(0, &pwd2, buf2, 1, &result) == 0) {
         puts("This shouldn't have succeeded, but did!");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     if (errno != ERANGE) {
         perror("getpwuid_r");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     puts("Returned ERANGE because the buffer was too small 👍");
 }

+ 2 - 2
tests/regex.c

@@ -11,7 +11,7 @@ int main(void) {
         regerror(error, &regex, error_buf, 255);
         error_buf[255] = 0;
         printf("regcomp error: %d = %s\n", error, error_buf);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     regmatch_t matches[3] = {{0}};
@@ -23,7 +23,7 @@ int main(void) {
     if (error) {
         regerror(error, &regex, error_buf, 255);
         printf("regexec error: %d = %s\n", error, error_buf);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     for (int group = 0; group < 3; group += 1) {

+ 1 - 1
tests/resource/getrusage.c

@@ -10,7 +10,7 @@ int main(void) {
     struct rusage r_usage;
     if (getrusage(RUSAGE_SELF, &r_usage) < 0) {
         perror("getrusage");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     printf("ru_utime:");
     ptimeval(&r_usage.ru_utime);

+ 2 - 2
tests/signal.c

@@ -12,14 +12,14 @@ int main(void) {
     if (signal(SIGUSR1, &handler) == SIG_ERR) {
         puts("Signal error!");
         printf("%d\n", errno);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     puts("Raising...");
     if (raise(SIGUSR1)) {
         puts("Raise error!");
         printf("%d\n", errno);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     puts("Raised.");
 }

+ 1 - 1
tests/stdio/fgets.c

@@ -13,7 +13,7 @@ int main(void) {
             puts("EOF");
             if (!feof(f)) {
                 puts("feof() not updated!");
-                return EXIT_FAILURE;
+                exit(EXIT_FAILURE);
             }
             break;
         }

+ 1 - 1
tests/stdio/fread.c

@@ -9,7 +9,7 @@ int main(void) {
     for (int i = 1; i <= 32; ++i) {
         if (fread(buf, 1, i, fp) < 0) {
             perror("fread");
-            return EXIT_FAILURE;
+            exit(EXIT_FAILURE);
         }
         buf[i] = 0;
 

+ 1 - 1
tests/stdio/fseek.c

@@ -5,7 +5,7 @@ int main(void) {
 	FILE *f = fopen("stdio/stdio.in", "r");
     if (fseek(f, 14, SEEK_CUR) < 0) {
         puts("fseek error");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     char buffer[256];
     printf("%s", fgets(buffer, 256, f));

+ 3 - 3
tests/stdio/fwrite.c

@@ -7,15 +7,15 @@ int main(void) {
 	const char ptr[] = "Hello World!";
 
 	if (fwrite(ptr, 0, 17, f)) {
-		return EXIT_FAILURE;
+		exit(EXIT_FAILURE);
 	}
 
 	if (fwrite(ptr, 7, 0, f)) {
-		return EXIT_FAILURE;
+		exit(EXIT_FAILURE);
 	}
 
 	if (fwrite(ptr, 0, 0, f)) {
-		return EXIT_FAILURE;
+		exit(EXIT_FAILURE);
 	}
 
 	fwrite(ptr, sizeof(ptr), 1, f);

+ 2 - 2
tests/stdio/getc_unget.c

@@ -6,8 +6,8 @@ int main(void) {
 	char c;
 	if ((c = getchar()) == 'h') {
 		printf("Worked!\n");
-		return EXIT_SUCCESS;
+		exit(EXIT_SUCCESS);
 	}
 	printf("failed :( %c\n", c);
-	return EXIT_FAILURE;
+	exit(EXIT_FAILURE);
 }

+ 3 - 3
tests/stdio/mutex.c

@@ -11,17 +11,17 @@ int main(void) {
 
     if (!ftrylockfile(f)) {
         puts("Mutex unlocked but it shouldn't be");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     funlockfile(f);
 
     if (ftrylockfile(f)) {
         puts("Mutex locked but it shouldn't be");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     if (!ftrylockfile(f)) {
         puts("Mutex unlocked but it shouldn't be");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     funlockfile(f);
 }

+ 2 - 2
tests/stdio/popen.c

@@ -10,7 +10,7 @@ int main(void) {
     fp = popen("ls -1 example_dir", "r");
     if (fp == NULL) {
         perror("popen");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     while (fgets(path, 256, fp) != NULL) {
@@ -21,7 +21,7 @@ int main(void) {
     status = pclose(fp);
     if (status == -1) {
         perror("pclose");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     } else {
         printf("status %x\n", status);
     }

+ 2 - 2
tests/stdio/rename.c

@@ -21,8 +21,8 @@ int main(void) {
     close(fd);
     remove(newpath);
     if (strcmp(str, buf) == 0) {
-        return EXIT_SUCCESS;
+        exit(EXIT_SUCCESS);
     } else {
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 }

+ 2 - 2
tests/stdio/sprintf.c

@@ -12,7 +12,7 @@ int main(void) {
     );
     if (ret != 68) {
         printf("Failed! Return value was %d\n", ret);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     memset(buffer, 0, sizeof(buffer));
@@ -25,7 +25,7 @@ int main(void) {
     );
     if (ret != 86) {
         printf("Failed! Return value was %d\n", ret);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     puts(buffer);

+ 2 - 2
tests/stdlib/a64l.c

@@ -6,7 +6,7 @@ int main(void) {
     long l = a64l(s);
     if (l != 194301926) {
         printf("Invalid result: a64l(%s) = %ld\n", s, l);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     printf("Correct a64l: %s = %ld\n", s, l);
 
@@ -15,7 +15,7 @@ int main(void) {
     l = a64l(s);
     if (l != 53222) {
         printf("Invalid result: a64l(%s) = %ld\n", s, l);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     printf("Correct a64l: %s = %ld\n", s, l);
 }

+ 1 - 1
tests/stdlib/bsearch.c

@@ -13,7 +13,7 @@ int int_cmp(const void* a, const void* b) {
       size_t i = 0; \
       for (; i < len; ++i) printf("%d,", arr[i]); \
       printf("] expected %p but got %p\n", (void*) expect, res); \
-      return EXIT_FAILURE; \
+      exit(EXIT_FAILURE); \
     } \
   } while (0);
 

+ 1 - 1
tests/stdlib/env.c

@@ -34,7 +34,7 @@ int main(void) {
     if (env) {
         puts("This should be null, but isn't");
         puts(env);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     } else {
         puts("Value deleted successfully!");
     }

+ 2 - 2
tests/stdlib/realpath.c

@@ -8,7 +8,7 @@ int main(void) {
     char* path = realpath("stdlib/realpath.c", NULL);
     if (!path) {
         perror("realpath");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     puts(path);
 
@@ -21,7 +21,7 @@ int main(void) {
     if (!path) {
         perror("realpath");
         free(path);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     puts(path);
 

+ 6 - 6
tests/string/mem.c

@@ -9,7 +9,7 @@ int main(void) {
     arr[50] = 1;
     if ((size_t)memchr((void *)arr, 1, 100) - (size_t)arr != 50) {
         puts("Incorrect memchr");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     puts("Correct memchr");
     char arr2[51];
@@ -17,25 +17,25 @@ int main(void) {
     memccpy((void *)arr2, (void *)arr, 1, 100);
     if (arr[50] != 1) {
         puts("Incorrect memccpy");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     puts("Correct memccpy");
     int res;
     if ((res = memcmp("hello world", "hello world", 11))) {
         printf("Incorrect memcmp (1), expected 0 found %d\n", res);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     if ((res = memcmp("hello world", "hello worlt", 11)) >= 0) {
         printf("Incorrect memcmp (2), expected -, found %d\n", res);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     if ((res = memcmp("hello world", "hallo world", 5)) <= 0) {
         printf("Incorrect memcmp (3), expected +, found %d\n", res);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     if ((res = memcmp("hello world", "henlo world", 5)) >= 0) {
         printf("Incorrect memcmp (4), expected -, found %d\n", res);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     puts("Correct memcmp");
 }

+ 2 - 2
tests/string/strrchr.c

@@ -8,14 +8,14 @@ int main(void) {
   if (ptr != &s0[10]) {
     printf("%p != %p\n", ptr, &s0[10]);
     printf("strrchr FAIL , exit with status code %d\n", 1);
-    return EXIT_FAILURE;
+    exit(EXIT_FAILURE);
   }
   char s1[] = "";
   ptr = strrchr(s1, 'a');
   if (ptr != NULL) {
     printf("%p != 0\n", ptr);
     printf("strrchr FAIL, exit with status code %d\n", 1);
-    return EXIT_FAILURE;
+    exit(EXIT_FAILURE);
   }
   printf("strrch PASS, exiting with status code %d\n", 0);
 }

+ 1 - 1
tests/time/asctime.c

@@ -10,6 +10,6 @@ int main(void) {
     char *time_string = asctime(time_info);
 
     if (time_string == NULL || strcmp(time_string, "Thu Jan  1 00:00:00 1970\n") != 0) {
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 }

+ 2 - 2
tests/time/gmtime.c

@@ -14,7 +14,7 @@ int main(void) {
         info->tm_year != expected.tm_year || info->tm_wday != expected.tm_wday ||
         info->tm_yday != expected.tm_yday || info->tm_isdst != expected.tm_isdst ||
         info->tm_gmtoff != expected.tm_gmtoff || strcmp(info->tm_zone, expected.tm_zone) != 0) {
-            return EXIT_FAILURE;
+            exit(EXIT_FAILURE);
     }
 
     if (info->tm_sec != expected.tm_sec || info->tm_min != expected.tm_min ||
@@ -22,6 +22,6 @@ int main(void) {
         info->tm_year != expected.tm_year || info->tm_wday != expected.tm_wday ||
         info->tm_yday != expected.tm_yday || info->tm_isdst != expected.tm_isdst ||
         info->tm_gmtoff != expected.tm_gmtoff || strcmp(info->tm_zone, expected.tm_zone) != 0) {
-            return EXIT_FAILURE;
+            exit(EXIT_FAILURE);
     }
 }

+ 3 - 3
tests/time/mktime.c

@@ -14,9 +14,9 @@ int check(time_t input) {
             t->tm_year, t->tm_yday, t->tm_mon, t->tm_mday, t->tm_wday, t->tm_hour, t->tm_min, t->tm_sec
         );
         puts("Failed!");
-        return EXIT_FAILURE;
+        return 1;
     }
-    return EXIT_SUCCESS;
+    return 0;
 }
 
 int main(void) {
@@ -31,7 +31,7 @@ int main(void) {
     time_t inputs[] = { -(day * 33), -day, -500, 0, 1531454950 };
     for (int i = 0; i < 5; i += 1) {
         if (check(inputs[i])) {
-            return EXIT_FAILURE;
+            exit(EXIT_FAILURE);
         }
     }
 

+ 3 - 3
tests/time/time.c

@@ -8,18 +8,18 @@ int main(void) {
     int cgt = clock_gettime(CLOCK_REALTIME, &tm);
     if (cgt == -1) {
         perror("clock_gettime");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     time_t t = time(NULL);
     if (t == (time_t)-1) {
         perror("time");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     clock_t c = clock();
     if (c == (clock_t)-1) {
         perror("clock");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 }

+ 2 - 2
tests/unistd/access.c

@@ -5,11 +5,11 @@
 int main(void) {
     if (access("example_dir/1-never-gonna-give-you-up", R_OK | W_OK)) {
         perror("access");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     if (!access("example_dir/1-never-gonna-give-you-up", X_OK)) {
         puts("Accessing a file with X_OK worked even though it... probably... shouldn't?");
         puts("Please run `chmod 644 example_dir/*` and try again.");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 }

+ 1 - 1
tests/unistd/getcwd.c

@@ -15,7 +15,7 @@ int main(void) {
     if (strcmp(first, second)) {
         puts("Not matching");
         free(second);
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     free(second);

+ 4 - 4
tests/unistd/link.c

@@ -12,7 +12,7 @@ int main(void) {
     // Stat for the inode
     if (stat("unistd/link.c", &buf)) {
         perror("stat");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     unsigned long inode = buf.st_ino;
     printf("%ld\n", inode);
@@ -20,7 +20,7 @@ int main(void) {
     // Create the link
     if (link("unistd/link.c", "link.out")) {
         perror("link");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     // Make sure inodes match
@@ -38,10 +38,10 @@ int main(void) {
     // Remove link
     if (unlink("link.out")) {
         perror("unlink");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
     if (!stat("link.out", &buf) || errno != ENOENT) {
         perror("stat");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 }

+ 8 - 8
tests/unistd/pipe.c

@@ -11,7 +11,7 @@ int main(void) {
 
     if (pipe(pip) < 0) {
         perror("pipe");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     pid = fork();
@@ -29,13 +29,13 @@ int main(void) {
         /* check result */
         if (bytes < 0) {
             perror("pipe write");
-            return EXIT_FAILURE;
+            exit(EXIT_FAILURE);
         } else if (bytes != strlen(outstring)) {
             fprintf(stderr, "pipe write: %d != %ld\n", bytes, strlen(outstring));
-            return EXIT_FAILURE;
+            exit(EXIT_FAILURE);
         }
 
-        return EXIT_SUCCESS;
+        exit(EXIT_SUCCESS);
     }
     else			/* parent : receives message from child */
     {
@@ -54,17 +54,17 @@ int main(void) {
         /* check result */
         if (bytes < 0) {
             perror("pipe read");
-            return EXIT_FAILURE;
+            exit(EXIT_FAILURE);
         } else if (bytes != strlen(outstring)) {
             fprintf(stderr, "pipe read: %d != %ld\n", bytes, strlen(outstring));
-            return EXIT_FAILURE;
+            exit(EXIT_FAILURE);
         } else if (memcmp(instring, outstring, strlen(outstring)) != 0) {
             fprintf(stderr, "pipe read does not match pipe write\n");
-            return EXIT_FAILURE;
+            exit(EXIT_FAILURE);
         } else {
             printf("%s\n", instring);
         }
 
-        return EXIT_SUCCESS;
+        exit(EXIT_SUCCESS);
     }
 }

+ 1 - 1
tests/unistd/stat.c

@@ -11,7 +11,7 @@ int main(void) {
 
     if (stat("unistd/stat.c", &buf)) {
         perror("stat");
-        return EXIT_FAILURE;
+        exit(EXIT_FAILURE);
     }
 
     printf("st_size: %lu\n", buf.st_size);

+ 1 - 1
tests/waitpid.c

@@ -7,7 +7,7 @@ int main(void) {
     if (pid == 0) {
         // child
         sleep(1);
-        return EXIT_SUCCESS;
+        exit(EXIT_SUCCESS);
     } else {
         // parent
         int stat_loc;

+ 1 - 1
tests/wchar/putwchar.c

@@ -12,7 +12,7 @@ int main(void) {
         if (0xFFFFFFFFu == putwchar(wcs[i]))
         {
             printf("Unable to putwchar() the wide character.\n");
-            return EXIT_FAILURE;
+            exit(EXIT_FAILURE);
         }
     }
 }