aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2018-02-16 11:19:37 +0000
committerPeter Maydell <peter.maydell@linaro.org>2018-02-16 11:19:37 +0000
commit0402ca3c70356e09e694fece39256790ff7755f2 (patch)
treee60eaec9d9f13e2b70a4704e58ebf23378211888 /tests
parent5e5432b766c424a5d1e1b81315ce6ac1dc0fa3ed (diff)
parent6809df1df036840d41a0cc9ca77cc6a0214fb1b5 (diff)
downloadqemu-0402ca3c70356e09e694fece39256790ff7755f2.zip
qemu-0402ca3c70356e09e694fece39256790ff7755f2.tar.gz
qemu-0402ca3c70356e09e694fece39256790ff7755f2.tar.bz2
Merge remote-tracking branch 'remotes/berrange/tags/qio-next-pull-request' into staging
# gpg: Signature made Thu 15 Feb 2018 17:50:22 GMT # gpg: using RSA key BE86EBB415104FDF # gpg: Good signature from "Daniel P. Berrange <dan@berrange.com>" # gpg: aka "Daniel P. Berrange <berrange@redhat.com>" # Primary key fingerprint: DAF3 A6FD B26B 6291 2D0E 8E3F BE86 EBB4 1510 4FDF * remotes/berrange/tags/qio-next-pull-request: allow to build with older sed io/channel-command: Do not kill the child process after closing the pipe io: Add /dev/fdset/ support to QIOChannelFile io: Don't call close multiple times in QIOChannelFile io: Fix QIOChannelFile when creating and opening read-write io/channel-websock: handle continuous reads without any data io: fix QIONetListener memory leak Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/test-io-channel-file.c29
1 files changed, 25 insertions, 4 deletions
diff --git a/tests/test-io-channel-file.c b/tests/test-io-channel-file.c
index 6bfede6..2e94f63 100644
--- a/tests/test-io-channel-file.c
+++ b/tests/test-io-channel-file.c
@@ -24,16 +24,21 @@
#include "io-channel-helpers.h"
#include "qapi/error.h"
-static void test_io_channel_file(void)
+#define TEST_FILE "tests/test-io-channel-file.txt"
+#define TEST_MASK 0600
+
+static void test_io_channel_file_helper(int flags)
{
QIOChannel *src, *dst;
QIOChannelTest *test;
+ struct stat st;
+ mode_t mask;
+ int ret;
-#define TEST_FILE "tests/test-io-channel-file.txt"
unlink(TEST_FILE);
src = QIO_CHANNEL(qio_channel_file_new_path(
TEST_FILE,
- O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0600,
+ flags, TEST_MASK,
&error_abort));
dst = QIO_CHANNEL(qio_channel_file_new_path(
TEST_FILE,
@@ -45,18 +50,33 @@ static void test_io_channel_file(void)
qio_channel_test_run_reader(test, dst);
qio_channel_test_validate(test);
+ /* Check that the requested mode took effect. */
+ mask = umask(0);
+ umask(mask);
+ ret = stat(TEST_FILE, &st);
+ g_assert_cmpint(ret, >, -1);
+ g_assert_cmpuint(TEST_MASK & ~mask, ==, st.st_mode & 0777);
+
unlink(TEST_FILE);
object_unref(OBJECT(src));
object_unref(OBJECT(dst));
}
+static void test_io_channel_file(void)
+{
+ test_io_channel_file_helper(O_WRONLY | O_CREAT | O_TRUNC | O_BINARY);
+}
+
+static void test_io_channel_file_rdwr(void)
+{
+ test_io_channel_file_helper(O_RDWR | O_CREAT | O_TRUNC | O_BINARY);
+}
static void test_io_channel_fd(void)
{
QIOChannel *ioc;
int fd = -1;
-#define TEST_FILE "tests/test-io-channel-file.txt"
fd = open(TEST_FILE, O_CREAT | O_TRUNC | O_WRONLY, 0600);
g_assert_cmpint(fd, >, -1);
@@ -114,6 +134,7 @@ int main(int argc, char **argv)
g_test_init(&argc, &argv, NULL);
g_test_add_func("/io/channel/file", test_io_channel_file);
+ g_test_add_func("/io/channel/file/rdwr", test_io_channel_file_rdwr);
g_test_add_func("/io/channel/file/fd", test_io_channel_fd);
#ifndef _WIN32
g_test_add_func("/io/channel/pipe/sync", test_io_channel_pipe_sync);