Gentoo Archives: gentoo-commits

From: Mike Frysinger <vapier@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage-utils:master commit in: tests/copy_file/, tests/
Date: Thu, 29 Dec 2016 02:25:56
Message-Id: 1482963043.de3c19ed21ceb3695130ff81e94170b08a2bf457.vapier@gentoo
1 commit: de3c19ed21ceb3695130ff81e94170b08a2bf457
2 Author: Mike Frysinger <vapier <AT> gentoo <DOT> org>
3 AuthorDate: Wed Dec 28 22:10:43 2016 +0000
4 Commit: Mike Frysinger <vapier <AT> gentoo <DOT> org>
5 CommitDate: Wed Dec 28 22:10:43 2016 +0000
6 URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=de3c19ed
7
8 tests: add a test for copy_file
9
10 tests/Makefile | 2 +-
11 tests/copy_file/.gitignore | 1 +
12 tests/copy_file/Makefile | 18 +++++++++++++
13 tests/copy_file/dotest | 12 +++++++++
14 tests/copy_file/test.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++
15 5 files changed, 96 insertions(+), 1 deletion(-)
16
17 diff --git a/tests/Makefile b/tests/Makefile
18 index bbe0fe8..fcf5a8c 100644
19 --- a/tests/Makefile
20 +++ b/tests/Makefile
21 @@ -1,5 +1,5 @@
22 TESTS = \
23 - reinitialize atom_compare atom_explode mkdir rmspace \
24 + reinitialize atom_compare atom_explode copy_file mkdir rmspace \
25 qatom qcheck qdepends qfile qlist qlop qmerge qtbz2 quse qxpak \
26 install profile source
27
28
29 diff --git a/tests/copy_file/.gitignore b/tests/copy_file/.gitignore
30 new file mode 100644
31 index 0000000..28ce6a8
32 --- /dev/null
33 +++ b/tests/copy_file/.gitignore
34 @@ -0,0 +1 @@
35 +m
36
37 diff --git a/tests/copy_file/Makefile b/tests/copy_file/Makefile
38 new file mode 100644
39 index 0000000..bf52c55
40 --- /dev/null
41 +++ b/tests/copy_file/Makefile
42 @@ -0,0 +1,18 @@
43 +thisdir = copy_file
44 +include ../subdir.mk
45 +
46 +all: $(b)/m
47 +
48 +$(b)/m: $(s)/test.c
49 + mkdir -p $(b)
50 + $(CC) $(CFLAGS) $(CPPFLAGS) $< -o $@
51 +
52 +test check: dotest
53 +
54 +dotest: $(b)/m
55 + $(Q)$(s)/dotest
56 +
57 +clean:
58 + rm -f $(b)/m
59 +
60 +.PHONY: all basic dotest test check clean
61
62 diff --git a/tests/copy_file/dotest b/tests/copy_file/dotest
63 new file mode 100755
64 index 0000000..970a5f9
65 --- /dev/null
66 +++ b/tests/copy_file/dotest
67 @@ -0,0 +1,12 @@
68 +#!/bin/bash
69 +
70 +. ../init.sh || exit 1
71 +
72 +set -e
73 +
74 +m=${ab}/m
75 +
76 +${m}
77 +: $(( tpassed += 1 ))
78 +
79 +end
80
81 diff --git a/tests/copy_file/test.c b/tests/copy_file/test.c
82 new file mode 100644
83 index 0000000..deff965
84 --- /dev/null
85 +++ b/tests/copy_file/test.c
86 @@ -0,0 +1,64 @@
87 +/*
88 + * Copyright 2005-2016 Gentoo Foundation
89 + * Distributed under the terms of the GNU General Public License v2
90 + */
91 +
92 +#include "tests/tests.h"
93 +
94 +#include "libq/copy_file.c"
95 +
96 +static int src_fd, dst_fd;
97 +
98 +static void testone(const char *src_buf, size_t len)
99 +{
100 + int ret;
101 + static char dst_buf[50 * 1024 * 1024];
102 +
103 + assert(len <= sizeof(dst_buf));
104 +
105 + ret = ftruncate(src_fd, 0);
106 + assert(ret == 0);
107 + ret = lseek(src_fd, 0, SEEK_SET);
108 + assert(ret == 0);
109 + ret = ftruncate(dst_fd, 0);
110 + assert(ret == 0);
111 + ret = lseek(dst_fd, 0, SEEK_SET);
112 + assert(ret == 0);
113 +
114 + ret = write(src_fd, src_buf, len);
115 + assert(ret == len);
116 + ret = lseek(src_fd, 0, SEEK_SET);
117 + assert(ret == 0);
118 + ret = copy_file_fd(src_fd, dst_fd);
119 + assert(ret == 0);
120 +
121 + ret = lseek(dst_fd, 0, SEEK_SET);
122 + assert(ret == 0);
123 + ret = read(dst_fd, dst_buf, len);
124 + assert(ret == len);
125 +
126 + assert(memcmp(dst_buf, src_buf, len) == 0);
127 +}
128 +
129 +int main(int argc, char *argv[])
130 +{
131 + size_t len;
132 + char *buf;
133 + char src_path[] = "portage-utils.src.XXXXXX";
134 + char dst_path[] = "portage-utils.dst.XXXXXX";
135 +
136 + src_fd = mkstemp(src_path);
137 + assert(src_fd != -1);
138 + unlink(src_path);
139 + dst_fd = mkstemp(dst_path);
140 + assert(dst_fd != -1);
141 + unlink(dst_path);
142 +
143 + testone("foo", 4);
144 +
145 + len = 10 * 1024 * 1024;
146 + buf = malloc(len);
147 + assert(buf != NULL);
148 + memset(buf, 0xaf, len);
149 + testone(buf, len);
150 +}