mirror of
https://github.com/systemd/systemd.git
synced 2024-11-24 10:43:35 +08:00
tests: move io-util related tests to test-io-util
This commit is contained in:
parent
d376cbb7b0
commit
ac933e8ec4
1
.gitignore
vendored
1
.gitignore
vendored
@ -201,6 +201,7 @@
|
||||
/test-inhibit
|
||||
/test-install
|
||||
/test-install-root
|
||||
/test-io-util
|
||||
/test-ipcrm
|
||||
/test-ipv4ll
|
||||
/test-ipv4ll-manual
|
||||
|
@ -1431,6 +1431,7 @@ tests += \
|
||||
test-escape \
|
||||
test-alloc-util \
|
||||
test-proc-cmdline \
|
||||
test-io-util \
|
||||
test-fs-util \
|
||||
test-web-util \
|
||||
test-stat-util \
|
||||
@ -1776,6 +1777,12 @@ test_alloc_util_SOURCES = \
|
||||
test_alloc_util_LDADD = \
|
||||
libbasic.la
|
||||
|
||||
test_io_util_SOURCES = \
|
||||
src/test/test-io-util.c
|
||||
|
||||
test_io_util_LDADD = \
|
||||
libbasic.la
|
||||
|
||||
test_fs_util_SOURCES = \
|
||||
src/test/test-fs-util.c
|
||||
|
||||
|
69
src/test/test-io-util.c
Normal file
69
src/test/test-io-util.c
Normal file
@ -0,0 +1,69 @@
|
||||
/***
|
||||
This file is part of systemd.
|
||||
|
||||
Copyright 2010 Lennart Poettering
|
||||
|
||||
systemd is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2.1 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
systemd is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public License
|
||||
along with systemd; If not, see <http://www.gnu.org/licenses/>.
|
||||
***/
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "alloc-util.h"
|
||||
#include "fd-util.h"
|
||||
#include "io-util.h"
|
||||
#include "macro.h"
|
||||
|
||||
static void test_sparse_write_one(int fd, const char *buffer, size_t n) {
|
||||
char check[n];
|
||||
|
||||
assert_se(lseek(fd, 0, SEEK_SET) == 0);
|
||||
assert_se(ftruncate(fd, 0) >= 0);
|
||||
assert_se(sparse_write(fd, buffer, n, 4) == (ssize_t) n);
|
||||
|
||||
assert_se(lseek(fd, 0, SEEK_CUR) == (off_t) n);
|
||||
assert_se(ftruncate(fd, n) >= 0);
|
||||
|
||||
assert_se(lseek(fd, 0, SEEK_SET) == 0);
|
||||
assert_se(read(fd, check, n) == (ssize_t) n);
|
||||
|
||||
assert_se(memcmp(buffer, check, n) == 0);
|
||||
}
|
||||
|
||||
static void test_sparse_write(void) {
|
||||
const char test_a[] = "test";
|
||||
const char test_b[] = "\0\0\0\0test\0\0\0\0";
|
||||
const char test_c[] = "\0\0test\0\0\0\0";
|
||||
const char test_d[] = "\0\0test\0\0\0test\0\0\0\0test\0\0\0\0\0test\0\0\0test\0\0\0\0test\0\0\0\0\0\0\0\0";
|
||||
const char test_e[] = "test\0\0\0\0test";
|
||||
_cleanup_close_ int fd = -1;
|
||||
char fn[] = "/tmp/sparseXXXXXX";
|
||||
|
||||
fd = mkostemp(fn, O_CLOEXEC);
|
||||
assert_se(fd >= 0);
|
||||
unlink(fn);
|
||||
|
||||
test_sparse_write_one(fd, test_a, sizeof(test_a));
|
||||
test_sparse_write_one(fd, test_b, sizeof(test_b));
|
||||
test_sparse_write_one(fd, test_c, sizeof(test_c));
|
||||
test_sparse_write_one(fd, test_d, sizeof(test_d));
|
||||
test_sparse_write_one(fd, test_e, sizeof(test_e));
|
||||
}
|
||||
|
||||
int main(void) {
|
||||
test_sparse_write();
|
||||
|
||||
return 0;
|
||||
}
|
@ -32,7 +32,6 @@
|
||||
#include "fileio.h"
|
||||
#include "fs-util.h"
|
||||
#include "glob-util.h"
|
||||
#include "io-util.h"
|
||||
#include "mkdir.h"
|
||||
#include "parse-util.h"
|
||||
#include "path-util.h"
|
||||
@ -295,42 +294,6 @@ static void test_raw_clone(void) {
|
||||
}
|
||||
}
|
||||
|
||||
static void test_sparse_write_one(int fd, const char *buffer, size_t n) {
|
||||
char check[n];
|
||||
|
||||
assert_se(lseek(fd, 0, SEEK_SET) == 0);
|
||||
assert_se(ftruncate(fd, 0) >= 0);
|
||||
assert_se(sparse_write(fd, buffer, n, 4) == (ssize_t) n);
|
||||
|
||||
assert_se(lseek(fd, 0, SEEK_CUR) == (off_t) n);
|
||||
assert_se(ftruncate(fd, n) >= 0);
|
||||
|
||||
assert_se(lseek(fd, 0, SEEK_SET) == 0);
|
||||
assert_se(read(fd, check, n) == (ssize_t) n);
|
||||
|
||||
assert_se(memcmp(buffer, check, n) == 0);
|
||||
}
|
||||
|
||||
static void test_sparse_write(void) {
|
||||
const char test_a[] = "test";
|
||||
const char test_b[] = "\0\0\0\0test\0\0\0\0";
|
||||
const char test_c[] = "\0\0test\0\0\0\0";
|
||||
const char test_d[] = "\0\0test\0\0\0test\0\0\0\0test\0\0\0\0\0test\0\0\0test\0\0\0\0test\0\0\0\0\0\0\0\0";
|
||||
const char test_e[] = "test\0\0\0\0test";
|
||||
_cleanup_close_ int fd = -1;
|
||||
char fn[] = "/tmp/sparseXXXXXX";
|
||||
|
||||
fd = mkostemp(fn, O_CLOEXEC);
|
||||
assert_se(fd >= 0);
|
||||
unlink(fn);
|
||||
|
||||
test_sparse_write_one(fd, test_a, sizeof(test_a));
|
||||
test_sparse_write_one(fd, test_b, sizeof(test_b));
|
||||
test_sparse_write_one(fd, test_c, sizeof(test_c));
|
||||
test_sparse_write_one(fd, test_d, sizeof(test_d));
|
||||
test_sparse_write_one(fd, test_e, sizeof(test_e));
|
||||
}
|
||||
|
||||
static void test_fgetxattrat_fake(void) {
|
||||
char t[] = "/var/tmp/xattrtestXXXXXX";
|
||||
_cleanup_close_ int fd = -1;
|
||||
@ -378,7 +341,6 @@ int main(int argc, char *argv[]) {
|
||||
test_glob_exists();
|
||||
test_execute_directory();
|
||||
test_raw_clone();
|
||||
test_sparse_write();
|
||||
test_fgetxattrat_fake();
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user