diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2015-01-13 21:44:21 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2015-01-15 10:32:54 +0100 |
commit | 44703b84feaafa4f0a4f8df11c5a503dcf48616e (patch) | |
tree | b88986fbedf4e2f1cf273c0917e84c3a5c2f376d /src/tests/cmocka/dummy_child.c | |
parent | dc7d8ab0f796239338ea67cf6698e0bc6b619174 (diff) | |
download | sssd-44703b84feaafa4f0a4f8df11c5a503dcf48616e.tar.gz sssd-44703b84feaafa4f0a4f8df11c5a503dcf48616e.tar.xz sssd-44703b84feaafa4f0a4f8df11c5a503dcf48616e.zip |
TESTS: Cover child_common.c with unit tests
The module wasn't tested properly, which made it harder to patch it
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Diffstat (limited to 'src/tests/cmocka/dummy_child.c')
-rw-r--r-- | src/tests/cmocka/dummy_child.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/tests/cmocka/dummy_child.c b/src/tests/cmocka/dummy_child.c index 057fa6450..3f79ca837 100644 --- a/src/tests/cmocka/dummy_child.c +++ b/src/tests/cmocka/dummy_child.c @@ -35,6 +35,10 @@ int main(int argc, const char *argv[]) int opt; int debug_fd = -1; poptContext pc; + ssize_t len; + ssize_t written; + errno_t ret; + uint8_t buf[IN_BUF_SIZE]; const char *action = NULL; const char *guitar; const char *drums; @@ -80,6 +84,31 @@ int main(int argc, const char *argv[]) DEBUG(SSSDBG_CRIT_FAILURE, "This band sounds weird\n"); _exit(1); } + } else if (strcasecmp(action, "echo") == 0) { + errno = 0; + len = sss_atomic_read_s(STDIN_FILENO, buf, IN_BUF_SIZE); + if (len == -1) { + ret = errno; + DEBUG(SSSDBG_CRIT_FAILURE, "read failed [%d][%s].\n", ret, strerror(ret)); + _exit(1); + } + close(STDIN_FILENO); + + errno = 0; + written = sss_atomic_write_s(3, buf, len); + if (written == -1) { + ret = errno; + DEBUG(SSSDBG_CRIT_FAILURE, "write failed [%d][%s].\n", ret, + strerror(ret)); + _exit(1); + } + close(STDOUT_FILENO); + + if (written != len) { + DEBUG(SSSDBG_CRIT_FAILURE, "Expected to write %zu bytes, wrote %zu\n", + len, written); + _exit(1); + } } } |