@@ -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
0 commit comments