@@ -289,13 +289,11 @@ if ( ENABLE_TESTS )
289
289
290
290
find_program ( JSONLINT jsonlint )
291
291
find_program ( DIFF diff )
292
- file ( COPY "${CMAKE_SOURCE_DIR} /files"
293
- DESTINATION "${CMAKE_BINARY_DIR} /" )
294
292
295
- set ( DATA_DIR "${CMAKE_BINARY_DIR } /files" )
293
+ set ( DATA_DIR "${CMAKE_SOURCE_DIR } /files" )
296
294
297
295
set_directory_properties ( PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES
298
- "${DATA_DIR} /test2.json; ${DATA_DIR} /test4.json; ${ FORD_CLEAN_OUTPUTS} " )
296
+ "${FORD_CLEAN_OUTPUTS} " )
299
297
300
298
# Validate input
301
299
if ( JSONLINT )
@@ -309,26 +307,38 @@ if ( ENABLE_TESTS )
309
307
foreach ( VALID_JSON ${JSON_INPUTS} )
310
308
get_filename_component ( TESTNAME "${VALID_JSON} " NAME )
311
309
add_test ( NAME validate-${TESTNAME}
312
- WORKING_DIRECTORY "${DATA_DIR} /inputs"
313
- COMMAND ${JSONLINT} "--allow=nonescape-characters" "${VALID_JSON} " )
310
+ WORKING_DIRECTORY "${DATA_DIR} /inputs"
311
+ COMMAND ${JSONLINT} "--allow=nonescape-characters" "${VALID_JSON} " )
314
312
endforeach ()
315
313
316
314
foreach ( INVALID ${INVALID_JSON} )
317
315
get_filename_component ( TESTNAME "${INVALID} " NAME )
318
316
add_test ( NAME validate-${TESTNAME}
319
- WORKING_DIRECTORY "${DATA_DIR} /inputs"
320
- COMMAND ${JSONLINT} "${INVALID} " )
317
+ WORKING_DIRECTORY "${DATA_DIR} /inputs"
318
+ COMMAND ${JSONLINT} "${INVALID} " )
321
319
set_property ( TEST validate-${TESTNAME}
322
- PROPERTY
323
- WILL_FAIL TRUE )
320
+ PROPERTY
321
+ WILL_FAIL TRUE )
324
322
endforeach ()
325
323
endif ()
326
324
325
+ add_test (NAME jf-cleanup-fixture
326
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR} "
327
+ COMMAND ${CMAKE_COMMAND} -E remove_directory "${CMAKE_BINARY_DIR} /files" )
328
+ set_tests_properties (jf-cleanup-fixture
329
+ PROPERTIES FIXTURES_SETUP JF)
330
+ add_test (NAME jf-setup-fixture
331
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR} "
332
+ COMMAND ${CMAKE_COMMAND} -E copy_directory "${DATA_DIR} " "${CMAKE_BINARY_DIR} /files" )
333
+ set_tests_properties (jf-setup-fixture
334
+ PROPERTIES FIXTURES_SETUP JF
335
+ DEPENDS jf-cleanup-fixture)
336
+
327
337
set ( UNIT_TESTS '' )
328
338
foreach ( UNIT_TEST ${JF_TEST_SRCS} )
329
339
get_filename_component ( TEST ${UNIT_TEST} NAME_WE )
330
340
if (MSVC_IDE )
331
- link_directories (${CMAKE_BINARY_DIR} /lib)
341
+ link_directories (${CMAKE_BINARY_DIR} /lib)
332
342
endif ()
333
343
add_executable ( ${TEST} EXCLUDE_FROM_ALL ${UNIT_TEST} )
334
344
target_link_libraries ( ${TEST} ${LIB_NAME} )
@@ -340,11 +350,13 @@ if ( ENABLE_TESTS )
340
350
add_test ( NAME ${TEST}
341
351
WORKING_DIRECTORY ${CMAKE_BINARY_DIR} /bin
342
352
COMMAND ./${TEST} )
353
+ set_tests_properties ( ${TEST}
354
+ PROPERTIES FIXTURES_REQUIRED JF)
343
355
list ( APPEND UNIT_TESTS ${TEST} )
344
356
if ( JSONLINT )
345
357
set_property ( TEST ${TEST}
346
- APPEND
347
- PROPERTY DEPENDS validate-input1 validate-input2 )
358
+ APPEND
359
+ PROPERTY DEPENDS validate-input1 validate-input2 )
348
360
endif ()
349
361
endforeach ( UNIT_TEST )
350
362
@@ -353,34 +365,37 @@ if ( ENABLE_TESTS )
353
365
PROPERTY DEPENDS jf_test_02 )
354
366
355
367
# Validate output
368
+ file ( GLOB EXPECTED_OUTPUTS "${DATA_DIR} /expected-outputs/*.json" )
369
+ if (NOT ${ENABLE_UNICODE} )
370
+ list ( REMOVE_ITEM EXPECTED_OUTPUTS "${DATA_DIR} /expected-outputs/hello-world-ucs4.json" )
371
+ endif ()
372
+ list ( REMOVE_ITEM EXPECTED_OUTPUTS "${DATA_DIR} /expected-outputs/example2.json" )
373
+
356
374
if ( JSONLINT )
357
- file ( GLOB JSON_FILES "${DATA_DIR} /*.json" )
358
- foreach ( JSON_FILE ${JSON_FILES} )
375
+ foreach ( JSON_FILE ${EXPECTED_OUTPUTS} )
359
376
get_filename_component ( TESTNAME ${JSON_FILE} NAME )
360
377
add_test ( NAME validate-output -${TESTNAME}
361
- WORKING_DIRECTORY "${DATA_DIR} "
362
- COMMAND ${JSONLINT} "--allow=nonescape-characters" ${TESTNAME} )
378
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR} /files "
379
+ COMMAND ${JSONLINT} "--allow=nonescape-characters" ${TESTNAME} )
363
380
set_property ( TEST validate-output -${TESTNAME}
364
- APPEND
365
- PROPERTY
366
- DEPENDS ${UNIT_TESTS}
367
- REQUIRED_FILES ${JSON_FILES} )
381
+ APPEND
382
+ PROPERTY
383
+ DEPENDS ${UNIT_TESTS} )
368
384
endforeach ( JSON_FILE )
369
385
endif ()
370
386
371
387
# Check output for differences
372
388
if ( DIFF )
373
- file ( GLOB JSON_FILES "${DATA_DIR} /*.json" )
374
- foreach ( JSON_FILE ${JSON_FILES} )
375
- get_filename_component ( JSON_STEM ${JSON_FILE} NAME_WE )
376
- add_test ( NAME regression-${JSON_STEM} .json
377
- WORKING_DIRECTORY "${DATA_DIR} "
378
- COMMAND ${DIFF} -q ${JSON_STEM} .json expected-outputs/${JSON_STEM} .json )
379
- set_property ( TEST regression-${JSON_STEM} .json
380
- APPEND
381
- PROPERTY
382
- DEPENDS ${UNIT_TESTS}
383
- REQUIRED_FILES ${JSON_FILES} )
389
+ foreach ( JSON_FILE ${EXPECTED_OUTPUTS} )
390
+ get_filename_component (OUTPUT ${JSON_FILE} NAME )
391
+ add_test ( NAME regression-${OUTPUT}
392
+ WORKING_DIRECTORY "${CMAKE_BINARY_DIR} /files"
393
+ COMMAND ${DIFF} -q ${OUTPUT} expected-outputs/${OUTPUT} )
394
+ set_property ( TEST regression-${OUTPUT}
395
+ APPEND
396
+ PROPERTY
397
+ DEPENDS ${UNIT_TESTS}
398
+ REQUIRED_FILES ${EXPECTED_OUTPUTS} )
384
399
endforeach ( JSON_FILE )
385
400
else ()
386
401
message ( WARNING
0 commit comments