nix-test 0.0.1

Testing helpers for Nix
#include <stdio.h>
#include <string.h>
#include <errno.h>

#define ERRNO_EQ(ERR)                   \
    do {                                \
        if (0 == strcmp(err, #ERR)) {   \
            return ERR;                 \
        }                               \
    } while (0)

int
assert_errno_eq(const char* err) {
    ERRNO_EQ(EPERM);
    ERRNO_EQ(ENOENT);
    ERRNO_EQ(ESRCH);
    ERRNO_EQ(EINTR);
    ERRNO_EQ(EIO);
    ERRNO_EQ(ENXIO);
    ERRNO_EQ(E2BIG);
    ERRNO_EQ(ENOEXEC);
    ERRNO_EQ(EBADF);
    ERRNO_EQ(ECHILD);
    ERRNO_EQ(EAGAIN);
    ERRNO_EQ(ENOMEM);
    ERRNO_EQ(EACCES);
    ERRNO_EQ(EFAULT);
    ERRNO_EQ(ENOTBLK);
    ERRNO_EQ(EBUSY);
    ERRNO_EQ(EEXIST);
    ERRNO_EQ(EXDEV);
    ERRNO_EQ(ENODEV);
    ERRNO_EQ(ENOTDIR);
    ERRNO_EQ(EISDIR);
    ERRNO_EQ(EINVAL);
    ERRNO_EQ(ENFILE);
    ERRNO_EQ(EMFILE);
    ERRNO_EQ(ENOTTY);
    ERRNO_EQ(ETXTBSY);
    ERRNO_EQ(EFBIG);
    ERRNO_EQ(ENOSPC);
    ERRNO_EQ(ESPIPE);
    ERRNO_EQ(EROFS);
    ERRNO_EQ(EMLINK);
    ERRNO_EQ(EPIPE);
    ERRNO_EQ(EDOM);
    ERRNO_EQ(ERANGE);
    ERRNO_EQ(EDEADLK);
    ERRNO_EQ(ENAMETOOLONG);
    ERRNO_EQ(ENOLCK);
    ERRNO_EQ(ENOSYS);
    ERRNO_EQ(ENOTEMPTY);
    ERRNO_EQ(ELOOP);
    ERRNO_EQ(ENOMSG);
    ERRNO_EQ(EIDRM);
    ERRNO_EQ(EINPROGRESS);
    ERRNO_EQ(EALREADY);
    ERRNO_EQ(ENOTSOCK);
    ERRNO_EQ(EDESTADDRREQ);
    ERRNO_EQ(EMSGSIZE);
    ERRNO_EQ(EPROTOTYPE);
    ERRNO_EQ(ENOPROTOOPT);
    ERRNO_EQ(EPROTONOSUPPORT);
    ERRNO_EQ(ESOCKTNOSUPPORT);
    ERRNO_EQ(EPFNOSUPPORT);
    ERRNO_EQ(EAFNOSUPPORT);
    ERRNO_EQ(EADDRINUSE);
    ERRNO_EQ(EADDRNOTAVAIL);
    ERRNO_EQ(ENETDOWN);
    ERRNO_EQ(ENETUNREACH);
    ERRNO_EQ(ENETRESET);
    ERRNO_EQ(ECONNABORTED);
    ERRNO_EQ(ECONNRESET);
    ERRNO_EQ(ENOBUFS);
    ERRNO_EQ(EISCONN);
    ERRNO_EQ(ENOTCONN);
    ERRNO_EQ(ESHUTDOWN);
    ERRNO_EQ(ETOOMANYREFS);
    ERRNO_EQ(ETIMEDOUT);
    ERRNO_EQ(ECONNREFUSED);
    ERRNO_EQ(EHOSTDOWN);
    ERRNO_EQ(EHOSTUNREACH);

#ifdef LINUX
    ERRNO_EQ(ECHRNG);
    ERRNO_EQ(EL2NSYNC);
    ERRNO_EQ(EL3HLT);
    ERRNO_EQ(EL3RST);
    ERRNO_EQ(ELNRNG);
    ERRNO_EQ(EUNATCH);
    ERRNO_EQ(ENOCSI);
    ERRNO_EQ(EL2HLT);
    ERRNO_EQ(EBADE);
    ERRNO_EQ(EBADR);
    ERRNO_EQ(EXFULL);
    ERRNO_EQ(ENOANO);
    ERRNO_EQ(EBADRQC);
    ERRNO_EQ(EBADSLT);
    ERRNO_EQ(EBFONT);
    ERRNO_EQ(ENOSTR);
    ERRNO_EQ(ENODATA);
    ERRNO_EQ(ETIME);
    ERRNO_EQ(ENOSR);
    ERRNO_EQ(ENONET);
    ERRNO_EQ(ENOPKG);
    ERRNO_EQ(EREMOTE);
    ERRNO_EQ(ENOLINK);
    ERRNO_EQ(EADV);
    ERRNO_EQ(ESRMNT);
    ERRNO_EQ(ECOMM);
    ERRNO_EQ(EPROTO);
    ERRNO_EQ(EMULTIHOP);
    ERRNO_EQ(EDOTDOT);
    ERRNO_EQ(EBADMSG);
    ERRNO_EQ(EOVERFLOW);
    ERRNO_EQ(ENOTUNIQ);
    ERRNO_EQ(EBADFD);
    ERRNO_EQ(EREMCHG);
    ERRNO_EQ(ELIBACC);
    ERRNO_EQ(ELIBBAD);
    ERRNO_EQ(ELIBSCN);
    ERRNO_EQ(ELIBMAX);
    ERRNO_EQ(ELIBEXEC);
    ERRNO_EQ(EILSEQ);
    ERRNO_EQ(ERESTART);
    ERRNO_EQ(ESTRPIPE);
    ERRNO_EQ(EUSERS);
    ERRNO_EQ(EOPNOTSUPP);
    ERRNO_EQ(ESTALE);
    ERRNO_EQ(EUCLEAN);
    ERRNO_EQ(ENOTNAM);
    ERRNO_EQ(ENAVAIL);
    ERRNO_EQ(EISNAM);
    ERRNO_EQ(EREMOTEIO);
    ERRNO_EQ(EDQUOT);
    ERRNO_EQ(ENOMEDIUM);
    ERRNO_EQ(EMEDIUMTYPE);
    ERRNO_EQ(ECANCELED);
    ERRNO_EQ(ENOKEY);
    ERRNO_EQ(EKEYEXPIRED);
    ERRNO_EQ(EKEYREVOKED);
    ERRNO_EQ(EKEYREJECTED);
    ERRNO_EQ(EOWNERDEAD);
    ERRNO_EQ(ENOTRECOVERABLE);
    ERRNO_EQ(ERFKILL);
    ERRNO_EQ(EHWPOISON);
#endif

#ifdef DARWIN
    ERRNO_EQ(ENOTSUP);
    ERRNO_EQ(EPROCLIM);
    ERRNO_EQ(EUSERS);
    ERRNO_EQ(EDQUOT);
    ERRNO_EQ(ESTALE);
    ERRNO_EQ(EREMOTE);
    ERRNO_EQ(EBADRPC);
    ERRNO_EQ(ERPCMISMATCH);
    ERRNO_EQ(EPROGUNAVAIL);
    ERRNO_EQ(EPROGMISMATCH);
    ERRNO_EQ(EPROCUNAVAIL);
    ERRNO_EQ(EFTYPE);
    ERRNO_EQ(EAUTH);
    ERRNO_EQ(ENEEDAUTH);
    ERRNO_EQ(EPWROFF);
    ERRNO_EQ(EDEVERR);
    ERRNO_EQ(EOVERFLOW);
    ERRNO_EQ(EBADEXEC);
    ERRNO_EQ(EBADARCH);
    ERRNO_EQ(ESHLIBVERS);
    ERRNO_EQ(EBADMACHO);
    ERRNO_EQ(ECANCELED);
    ERRNO_EQ(EILSEQ);
    ERRNO_EQ(ENOATTR);
    ERRNO_EQ(EBADMSG);
    ERRNO_EQ(EMULTIHOP);
    ERRNO_EQ(ENODATA);
    ERRNO_EQ(ENOLINK);
    ERRNO_EQ(ENOSR);
    ERRNO_EQ(ENOSTR);
    ERRNO_EQ(EPROTO);
    ERRNO_EQ(ETIME);
    ERRNO_EQ(EOPNOTSUPP);
    ERRNO_EQ(ENOPOLICY);
    ERRNO_EQ(ENOTRECOVERABLE);
    ERRNO_EQ(EOWNERDEAD);
    ERRNO_EQ(EQFULL);
#endif

    return 0;
}