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 |
+} |