if(NOT WIN32)
  set(MODULE_NAME "TestFile")
  set(MODULE_PREFIX "TEST_FILE")

  disable_warnings_for_directory(${CMAKE_CURRENT_BINARY_DIR})

  set(${MODULE_PREFIX}_DRIVER ${MODULE_NAME}.c)

  set(${MODULE_PREFIX}_TESTS
      TestFileCreateFile.c
      TestFileDeleteFile.c
      TestFileReadFile.c
      TestSetFileAttributes.c
      TestFileWriteFile.c
      TestFilePatternMatch.c
      TestFileFindFirstFile.c
      TestFileFindFirstFileEx.c
      TestFileFindNextFile.c
      TestFileGetStdHandle.c
  )

  create_test_sourcelist(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_DRIVER} ${${MODULE_PREFIX}_TESTS})

  add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})

  target_link_libraries(${MODULE_NAME} winpr)

  set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")

  if(NOT MSVC)
    set(TEST_AREA "${TESTING_OUTPUT_DIRECTORY}/${MODULE_NAME}Area")
  else()
    set(TEST_AREA "${TESTING_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${MODULE_NAME}Area")
  endif()

  file(MAKE_DIRECTORY "${TEST_AREA}")
  file(WRITE "${TEST_AREA}/TestFile1" "TestFile1")
  file(WRITE "${TEST_AREA}/TestFile2" "TestFile2")
  file(WRITE "${TEST_AREA}/TestFile3" "TestFile3")
  file(MAKE_DIRECTORY "${TEST_AREA}/TestDirectory1")
  file(WRITE "${TEST_AREA}/TestDirectory1/TestDirectory1File1" "TestDirectory1File1")
  file(MAKE_DIRECTORY "${TEST_AREA}/TestDirectory2")
  file(WRITE "${TEST_AREA}/TestDirectory2/TestDirectory2File1" "TestDirectory2File1")
  file(WRITE "${TEST_AREA}/TestDirectory2/TestDirectory2File2" "TestDirectory2File2")
  file(MAKE_DIRECTORY "${TEST_AREA}/TestDirectory3")
  file(WRITE "${TEST_AREA}/TestDirectory3/TestDirectory3File1" "TestDirectory3File1")
  file(WRITE "${TEST_AREA}/TestDirectory3/TestDirectory3File2" "TestDirectory3File2")
  file(WRITE "${TEST_AREA}/TestDirectory3/TestDirectory3File3" "TestDirectory3File3")

  foreach(test ${${MODULE_PREFIX}_TESTS})
    get_filename_component(TestName ${test} NAME_WE)
    add_test(${TestName} ${TESTING_OUTPUT_DIRECTORY}/${MODULE_NAME} ${TestName} ${TEST_AREA})
  endforeach()

  set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "WinPR/Test")

endif()
