aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@users.noreply.github.com>2020-04-21 00:39:44 -0400
committerGitHub <noreply@github.com>2020-04-21 00:39:44 -0400
commitd78903961ee95376bccde7c1313be5b583911ab7 (patch)
tree143bfb96e78b6a4efcc4949b077d3d747f8f8c13 /tests
parent110489259c0696c0cee5bec6ad7695a0c93d4e74 (diff)
parentf7fd09d92a3f819cf815125a1c898c572b94d33c (diff)
downloadspmc-d78903961ee95376bccde7c1313be5b583911ab7.tar.gz
Merge pull request #29 from jhunkeler/tests-errors
Ignore NULL reasons + tests
Diffstat (limited to 'tests')
-rw-r--r--tests/test_error_handler_spm_perror.c43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/test_error_handler_spm_perror.c b/tests/test_error_handler_spm_perror.c
new file mode 100644
index 0000000..a8b55db
--- /dev/null
+++ b/tests/test_error_handler_spm_perror.c
@@ -0,0 +1,43 @@
+#include "spm.h"
+#include "framework.h"
+
+const char *testFmt = "case %s: returned '%s', expected '%s'\n";
+struct TestCase testCase[] = {
+ {.caseValue.sptr = "oh no it broke", .truthValue.sptr = "oh no it broke: No such file or directory", .arg[0].signed_integer = ENOENT},
+ {.caseValue.sptr = "kaboom", .truthValue.sptr = "kaboom: Failed to fetch package", .arg[0].signed_integer = SPM_ERR_PKG_FETCH},
+};
+size_t numCases = sizeof(testCase) / sizeof(struct TestCase);
+
+int main(int argc, char *argv[]) {
+ char *tty_path = NULL;
+ if ((tty_path = ttyname(STDERR_FILENO)) == NULL) {
+ perror("tty check");
+ return 0;
+ }
+
+ for (size_t i = 0; i < numCases; i++) {
+ char buf[BUFSIZ] = {0,};
+ char *buffer = buf;
+ int stderr_save = 0;
+
+ fflush(stderr);
+
+ // Redirect stdout
+ stderr_save = dup(STDERR_FILENO);
+ freopen("/dev/null", "w", stderr);
+ setvbuf(stderr, buffer, _IOLBF, sizeof(buf));
+
+ // Do test
+ spmerrno = testCase[i].arg[0].signed_integer;
+ spm_perror(testCase[i].caseValue.sptr);
+ fflush(stderr);
+
+ strip(buffer);
+
+ // Restore stderr
+ dup2(stderr_save, STDERR_FILENO);
+ setvbuf(stderr, NULL, _IONBF, 0);
+
+ myassert(strcmp(buffer, testCase[i].truthValue.sptr) == 0, testFmt, testCase[i].caseValue.sptr, buffer, testCase[i].truthValue.sptr);
+ }
+}