Skip to content

Commit d5ac8cb

Browse files
committed
Use dedicated working directory for test
1 parent f07cefc commit d5ac8cb

12 files changed

Lines changed: 171 additions & 167 deletions

scripts/run_test_performance.sh

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ function append_rsp() {
1717

1818
if [ $index -le $max ] ; then
1919
echo "$current_dir " >> mkdir.rsp
20-
for i in $(seq 1 $max); do
20+
for i in $(seq 1 $max); do
2121
echo "$current_dir/f$i " >> touch.rsp
2222
done
2323
append_rsp $current_dir/$index "$(($index + 1))"
@@ -31,10 +31,25 @@ time append_rsp root 0
3131
echo """Lists contain $(wc --lines < mkdir.rsp) directories and $(wc --lines < touch.rsp) files.
3232
Longest filename has $(wc --max-line-length < touch.rsp) characters.
3333
"""
34+
sed --regexp-extended -s 's|/|\\|g' < mkdir.rsp > mkdir.backslash.rsp
35+
sed --regexp-extended -s 's|/|\\|g' < touch.rsp > touch.backslash.rsp
3436

3537
###############################################################################
3638
echo """
37-
### Using bash
39+
### Using cmd
40+
41+
#### Creating directories"""
42+
time xargs --max-chars=8000 --arg-file mkdir.backslash.rsp -I '{}' cmd.exe //c "mkdir {}" \;
43+
echo "
44+
#### Creating files"
45+
time xargs --max-chars=8000 --arg-file mkdir.backslash.rsp -I '{}' cmd.exe //c "for %f in ( {} ) do @( echo. > %f )" \;
46+
echo "
47+
#### Removing tree"
48+
time rm -rf root
49+
50+
###############################################################################
51+
echo """
52+
### Using bash
3853
3954
#### Creating directories"""
4055
time xargs --max-chars=8000 --arg-file mkdir.rsp mkdir
@@ -60,7 +75,7 @@ time FileOp.exe remove --recursive --force root
6075

6176
###############################################################################
6277
echo """
63-
### Using FileOp with rsp
78+
### Using FileOp with rsp
6479
6580
#### Creating directories"""
6681
time FileOp.exe mkdir @mkdir.rsp

scripts/run_test_remove.sh

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,34 +5,6 @@ THIS_DIRECTORY="$(cd "$(dirname "${BASH_SOURCE[0]}" )" && pwd)"
55

66
export PATH=$THIS_DIRECTORY/../build:$PATH
77

8-
echo "remove a single file..."
9-
touch /tmp/$$
10-
if FileOp.exe --debug remove /tmp/$$ | sed 's/^/ stdout: /' ; then
11-
echo " -> Got expected exit code 0."
12-
else
13-
echo " -> Got unexpected error."
14-
exit 1
15-
fi
16-
echo -n "Check if /tmp/$$ is removed..."
17-
if test -f /tmp/$$ ; then
18-
echo " failed."
19-
exit 1
20-
else
21-
echo " ok."
22-
fi
23-
echo "remove a non existing file..."
24-
if FileOp.exe --debug remove --recursive /tmp/$$ 2>&1 > stdout.log | sed 's/^/x /' ; then
25-
cat stdout.log | sed 's/^/ stdout: /'
26-
echo " -> Got expected exit code 0."
27-
else
28-
cat stdout.log | sed 's/^/ stdout: /'
29-
echo " -> Got unexpected error."
30-
exit 1
31-
fi
32-
grep -E "Skip .+\\\\$$ because it doesn't exist." stdout.log > /dev/null
33-
echo " -> Found expected output in log"
34-
rm -f stdout.log
35-
368
echo "create directory structure..."
379
mkdir --parents /tmp/$$/test/subdir /tmp/$$/junction_target
3810
echo "Junction target file content" > /tmp/$$/junction_target/test_file

src/BasicFileOp.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
LPCTSTR DosDevicePathPrefix = _T("\\\\?\\");
1717
// The length of the DOS device path prefix
1818
const int DOS_DEVICE_PREFIX_LENGTH = sizeof(DosDevicePathPrefix) / sizeof(TCHAR);
19+
//! The prefix for a DOS device path prefix for UNC paths
1920
LPCTSTR DosDevicePathPrefixUnc = _T("\\\\?\\UNC\\");
2021
// The length of the DOS device path prefix for UNC paths
2122
const int DOS_DEVICE_PREFIX_UNC_LENGTH = sizeof(DosDevicePathPrefixUnc) / sizeof(TCHAR);

src/CMakeLists.txt

Lines changed: 65 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ project(FileOp C RC)
4545

4646
function(test_fileop)
4747
set(options WILL_FAIL)
48-
set(oneValueArgs NAME FILE_TIME_STAMP)
48+
set(oneValueArgs NAME WORKING_DIRECTORY FILE_TIME_STAMP)
4949
set(multiValueArgs ARGS FAIL_REGULAR_EXPRESSION PASS_REGULAR_EXPRESSION)
5050
cmake_parse_arguments(
5151
PARSE_ARGV 0 arg
@@ -55,6 +55,7 @@ project(FileOp C RC)
5555
add_test(
5656
NAME ${arg_NAME}
5757
COMMAND FileOp.exe ${arg_ARGS}
58+
WORKING_DIRECTORY ${arg_WORKING_DIRECTORY}
5859
)
5960
set_property(
6061
TEST ${arg_NAME}
@@ -86,85 +87,99 @@ project(FileOp C RC)
8687
test_fileop(
8788
NAME Run_${arg_COMMAND}_WithOptionHelp
8889
ARGS ${arg_COMMAND} --help
90+
WORKING_DIRECTORY ${arg_WORKING_DIRECTORY}
8991
PASS_REGULAR_EXPRESSION ${arg_HELP_REGULAR_EXPRESSION}
9092
)
9193
test_fileop(
9294
NAME Run_${arg_COMMAND}_WithOptionH
9395
ARGS ${arg_COMMAND} -h
96+
WORKING_DIRECTORY ${arg_WORKING_DIRECTORY}
9497
PASS_REGULAR_EXPRESSION ${arg_HELP_REGULAR_EXPRESSION}
9598
)
9699
test_fileop(
97100
NAME Run_${arg_COMMAND}_WithNoArguments
98101
ARGS ${arg_COMMAND}
102+
WORKING_DIRECTORY ${arg_WORKING_DIRECTORY}
99103
WILL_FAIL
100104
FAIL_REGULAR_EXPRESSION "FileOp\\.exe: error: Too view arguments given\\."
101105
)
102106
test_fileop(
103107
NAME Run_${arg_COMMAND}_WithUnknownSlashOption
104108
ARGS ${arg_COMMAND} -x
109+
WORKING_DIRECTORY ${arg_WORKING_DIRECTORY}
105110
WILL_FAIL
106111
FAIL_REGULAR_EXPRESSION "FileOp\\.exe: error: Unknown option -x, use option --help for more information\\."
107112
)
108113
test_fileop(
109114
NAME Run_${arg_COMMAND}_WithUnknownSlashSlashOption
110115
ARGS ${arg_COMMAND} --xxx
116+
WORKING_DIRECTORY ${arg_WORKING_DIRECTORY}
111117
WILL_FAIL
112118
FAIL_REGULAR_EXPRESSION "FileOp\\.exe: error: Unknown option --xxx, use option --help for more information\\."
113119
)
114120
test_fileop(
115121
NAME Run_${arg_COMMAND}_WithLonesomeDash
116122
ARGS --debug ${arg_COMMAND} -- --xxx
123+
WORKING_DIRECTORY ${arg_WORKING_DIRECTORY}
117124
WILL_FAIL
118125
FAIL_REGULAR_EXPRESSION "-- detected, stop option parsing\\."
119126
)
120127

121128
if (arg_TEST_TIME_OPTION)
122129
test_fileop(
123-
NAME Run_${arg_COMMAND}_TimeWithoutValue
124-
ARGS ${arg_COMMAND} --time
125-
WILL_FAIL
126-
FAIL_REGULAR_EXPRESSION "FileOp\\.exe: error: Option --time needs an argument\\."
130+
NAME Run_${arg_COMMAND}_TimeWithoutValue
131+
ARGS ${arg_COMMAND} --time
132+
WORKING_DIRECTORY ${arg_WORKING_DIRECTORY}
133+
WILL_FAIL
134+
FAIL_REGULAR_EXPRESSION "FileOp\\.exe: error: Option --time needs an argument\\."
127135
)
128136
test_fileop(
129-
NAME Run_${arg_COMMAND}_TimeWithWrongFormatI
130-
ARGS ${arg_COMMAND} --time 2001-01
131-
WILL_FAIL
132-
FAIL_REGULAR_EXPRESSION "FileOp\\.exe: error: Wrong format for time 2001-01, expected yyyy-mm-dd\\[Thh:mm\\[:ss\\]\\]\\."
137+
NAME Run_${arg_COMMAND}_TimeWithWrongFormatI
138+
ARGS ${arg_COMMAND} --time 2001-01
139+
WORKING_DIRECTORY ${arg_WORKING_DIRECTORY}
140+
WILL_FAIL
141+
FAIL_REGULAR_EXPRESSION "FileOp\\.exe: error: Wrong format for time 2001-01, expected yyyy-mm-dd\\[Thh:mm\\[:ss\\]\\]\\."
133142
)
134143
test_fileop(
135-
NAME Run_${arg_COMMAND}_TimeWithWrongFormatII
136-
ARGS ${arg_COMMAND} --time 2001-01-01T12
137-
WILL_FAIL
138-
FAIL_REGULAR_EXPRESSION "FileOp\\.exe: error: Wrong format for time 2001-01-01T12, expected yyyy-mm-dd\\[Thh:mm\\[:ss\\]\\]\\."
144+
NAME Run_${arg_COMMAND}_TimeWithWrongFormatII
145+
ARGS ${arg_COMMAND} --time 2001-01-01T12
146+
WORKING_DIRECTORY ${arg_WORKING_DIRECTORY}
147+
WILL_FAIL
148+
FAIL_REGULAR_EXPRESSION "FileOp\\.exe: error: Wrong format for time 2001-01-01T12, expected yyyy-mm-dd\\[Thh:mm\\[:ss\\]\\]\\."
139149
)
140150
endif()
141151
endfunction()
142152

143153
function(test_fileop_check_filesystem)
144154
set(options WILL_FAIL)
145-
set(oneValueArgs NAME DEPENDS)
155+
set(oneValueArgs NAME)
146156
set(multiValueArgs PREPARE_COMMAND ARGS FAIL_REGULAR_EXPRESSION PASS_REGULAR_EXPRESSION MUST_EXIST MUST_NOT_EXIST FILE_TIMESTAMP_REGEX)
147157
cmake_parse_arguments(
148158
PARSE_ARGV 0 arg
149159
"${options}" "${oneValueArgs}" "${multiValueArgs}"
150160
)
151161

162+
add_test(
163+
NAME ${arg_NAME}_setup
164+
COMMAND sh -c "chmod -R oga+w ${arg_NAME} ; rm -rf ${arg_NAME} ; mkdir ${arg_NAME}"
165+
)
166+
152167
if (arg_PREPARE_COMMAND)
153168
add_test(
154169
NAME ${arg_NAME}_prepare
155-
COMMAND ${arg_PREPARE_COMMAND}
170+
COMMAND sh -c "${arg_PREPARE_COMMAND} && ls -alR"
171+
WORKING_DIRECTORY ${arg_NAME}
156172
)
157-
if (arg_DEPENDS)
158173
set_property(
159174
TEST ${arg_NAME}_prepare
160-
PROPERTY DEPENDS ${arg_DEPENDS}
175+
PROPERTY DEPENDS ${arg_NAME}_setup
161176
)
162-
endif()
163177
endif()
164178

165179
add_test(
166180
NAME ${arg_NAME}
167-
COMMAND FileOp.exe ${arg_ARGS}
181+
COMMAND ../FileOp.exe ${arg_ARGS}
182+
WORKING_DIRECTORY ${arg_NAME}
168183
)
169184
set_property(
170185
TEST ${arg_NAME}
@@ -176,12 +191,10 @@ project(FileOp C RC)
176191
PROPERTY DEPENDS ${arg_NAME}_prepare
177192
)
178193
else()
179-
if (arg_DEPENDS)
180-
set_property(
181-
TEST ${arg_NAME}
182-
PROPERTY DEPENDS ${arg_DEPENDS}
183-
)
184-
endif()
194+
set_property(
195+
TEST ${arg_NAME}
196+
PROPERTY DEPENDS ${arg_NAME}_setup
197+
)
185198
endif()
186199
if (arg_FAIL_REGULAR_EXPRESSION)
187200
set_property(
@@ -198,39 +211,42 @@ project(FileOp C RC)
198211

199212
if (arg_MUST_EXIST)
200213
foreach(FILE ${arg_MUST_EXIST})
201-
add_test(
202-
NAME ${arg_NAME}_${FILE}_must_exist
203-
COMMAND sh -c "test -w ${FILE} && stat --printf '%y' -- ${FILE}"
204-
)
214+
add_test(
215+
NAME ${arg_NAME}_must_exist-${FILE}
216+
COMMAND sh -c "test -w ${FILE} && stat --printf '%y' -- ${FILE}"
217+
WORKING_DIRECTORY ${arg_NAME}
218+
)
219+
set_property(
220+
TEST ${arg_NAME}_must_exist-${FILE}
221+
PROPERTY DEPENDS ${arg_NAME}
222+
)
223+
if (arg_FILE_TIMESTAMP_REGEX)
205224
set_property(
206-
TEST ${arg_NAME}_${FILE}_must_exist
207-
PROPERTY DEPENDS ${arg_NAME}
225+
TEST ${arg_NAME}_must_exist-${FILE}
226+
PROPERTY PASS_REGULAR_EXPRESSION ${arg_FILE_TIMESTAMP_REGEX}
208227
)
209-
if (arg_FILE_TIMESTAMP_REGEX)
210-
set_property(
211-
TEST ${arg_NAME}_${FILE}_must_exist
212-
PROPERTY PASS_REGULAR_EXPRESSION ${arg_FILE_TIMESTAMP_REGEX}
213-
)
214-
endif ()
228+
endif ()
215229
endforeach()
216230
endif ()
217231

218232
if (arg_MUST_NOT_EXIST)
219233
foreach(FILE ${arg_MUST_NOT_EXIST})
220-
add_test(
221-
NAME ${arg_NAME}_${FILE}_must_not_exist
222-
COMMAND stat --printf '%y' -- ${FILE}
223-
)
224-
set_property(
225-
TEST ${arg_NAME}_${FILE}_must_not_exist
226-
PROPERTY DEPENDS ${arg_NAME}
227-
)
228-
set_property(
229-
TEST ${arg_NAME}_${FILE}_must_not_exist
230-
PROPERTY WILL_FAIL true
231-
)
234+
add_test(
235+
NAME ${arg_NAME}_must_not_exist-${FILE}
236+
COMMAND stat --printf '%y' -- ${FILE}
237+
WORKING_DIRECTORY ${arg_NAME}
238+
)
239+
set_property(
240+
TEST ${arg_NAME}_must_not_exist-${FILE}
241+
PROPERTY DEPENDS ${arg_NAME}
242+
)
243+
set_property(
244+
TEST ${arg_NAME}_must_not_exist-${FILE}
245+
PROPERTY WILL_FAIL true
246+
)
232247
endforeach()
233248
endif ()
249+
234250
endfunction()
235251

236252

src/OperationCat.cmake

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ test_fileop_check_filesystem(
1111

1212
test_fileop_check_filesystem(
1313
NAME CatFileLeadingDashDash
14-
DEPENDS TouchFileLeadingDashDash
14+
PREPARE_COMMAND sh -c "echo 'File content of --xxx' > --xxx"
1515
ARGS --debug cat -- --xxx
16-
PASS_REGULAR_EXPRESSION "-- detected, stop option parsing."
16+
PASS_REGULAR_EXPRESSION "-- detected, stop option parsing." "^File content of --xxx$"
1717
)
1818

1919
test_fileop_check_filesystem(
2020
NAME CatDirectory
21-
ARGS cat ${CMAKE_CURRENT_LIST_DIR}
21+
ARGS cat .
2222
WILL_FAIL
23-
FAIL_REGULAR_EXPRESSION "FileOp.exe: error: Only files can be printed. Got directory [A-Z]:\\\\.*\\\\src"
23+
FAIL_REGULAR_EXPRESSION "FileOp.exe: error: Only files can be printed. Got directory [A-Z]:\\\\.*\\\\CatDirectory"
2424
)
2525

src/OperationCopy.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ static tResult copyOperation(void) {
101101
StartOfSourceName[-1] = _T('\0');
102102
// close handle to file
103103
if (!FindClose(hFind)) {
104-
result &= printLastError(_T("Can't close file search handle."));
104+
result &= printLastError(_T("Can't close file search handle.")); // GCOVR_EXCL_LINE
105105
}
106106
}
107107
}
@@ -220,7 +220,7 @@ static tResult runCommand(int argc, wchar_t *argv[]) {
220220
}
221221

222222
if (CheckUniqueNames) {
223-
if (checkUniqueNames(argc, argv) == eFalse) {
223+
if (checkUniqueNames(argc, argv) == eError) {
224224
return eError;
225225
}
226226
}

0 commit comments

Comments
 (0)