From 55db70793f2a065b7ad47a2403b2d261dc2725da Mon Sep 17 00:00:00 2001 From: Masatake YAMATO Date: Wed, 5 Jul 2023 01:54:54 +0900 Subject: [PATCH] test: (mkfds::make-regular-file) add a parameter for writing some bytes Signed-off-by: Masatake YAMATO --- tests/helpers/test_mkfds.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/helpers/test_mkfds.c b/tests/helpers/test_mkfds.c index 3d7c9a88a2..fe3c35ad4e 100644 --- a/tests/helpers/test_mkfds.c +++ b/tests/helpers/test_mkfds.c @@ -401,6 +401,13 @@ static void *make_w_regular_file(const struct factory *factory, struct fdesc fde struct arg delete = decode_arg("delete", factory->params, argc, argv); bool bDelete = ARG_BOOLEAN(delete); + struct arg write_bytes = decode_arg("write-bytes", factory->params, argc, argv); + int iWrite_bytes = ARG_INTEGER(write_bytes); + + if (iWrite_bytes < 0) + err(EXIT_FAILURE, "write-bytes must be a positive number or zero."); + + free_arg(&write_bytes); free_arg(&delete); free_arg(&file); @@ -432,6 +439,17 @@ static void *make_w_regular_file(const struct factory *factory, struct fdesc fde fname = NULL; } + for (int i = 0; i < iWrite_bytes; i++) { + if (write(fd, "z", 1) != 1) { + int e = errno; + close(fd); + if (fname) + unlink(fname); + errno = e; + err(EXIT_FAILURE, "failed to write"); + } + } + fdescs[0] = (struct fdesc){ .fd = fdescs[0].fd, .close = bDelete? close_fdesc: unlink_and_close_fdesc, @@ -2627,6 +2645,12 @@ static const struct factory factories[] = { .desc = "delete the file just after making it", .defv.boolean = false, }, + { + .name = "write-bytes", + .type = PTYPE_INTEGER, + .desc = "write something (> 0)", + .defv.integer = 0, + }, PARAM_END }, }, -- 2.47.3