History: fs_exfat_test

This page describes all changes made to the fs_exfat_test package, exFAT and SafeexFAT Test Suite, since its release.


1.23 (2021-03-16, 12:17):

  • Fixed exfat_test_invalid_volume(): it accepts other sector sizes than 512.
  • PSP_ASSERT may have detected false positive error in exfat_test_upcase_tbl_fatchain_error() when media size was between 64 MiB and 128 MiB.
  • The following tests were skipped if media was not formatted: exfat_test_freeentry_at_clusterbegining(), exfat_test_dir_size_neg()exfat_test_beyond_max_dir_size(), exfat_test_no_fat_chain(), exfat_test_dir_with_bad_entry_file(), exfat_test_file_allocation_table_error(), exfat_test_dir_depth()exfat_test_filedatalength_error(), exfat_test_partition_table_error().

1.22 (2021-02-17, 11:50):

  • exfat_test_media_flush() updated to disable IOCTL fault injection for exfat_initvolume(), to avoid test failure, due to the IOCTL calls invoked from initvolume.
  • exfat_test_media_error() works when EXFAT_ENABLE_CACHE is 0.

1.21 (2020-12-18, 10:54):

  • Implemented Safe tests for exfat_repair() and a second test for mode "r+" which simulates reset.
  • The following tests check file/directory content as well: exfat_test_safe_file_append, exfat_test_safe_file_overwrite_rp, exfat_test_safe_file_overwrite_wp, exfat_test_safe_truncate, exfat_test_safe_truncate_ext, exfat_test_safe_setattr, and exfat_test_safe_settimestamp

1.21 (2020-11-16, 13:00):

  • Implemented test for volume clean and directory walk functions.

1.20 (2020-11-25, 13:21):

  • Wrong format specifiers got fixed.

1.19 (2020-10-26, 10:38):

Tests could detect false positive error when non-zero volume index is used:
      exfat_test_file_open_error, exfat_test_close_error,
      exfat_test_flush_error, exfat_test_write_error,
      exfat_test_seek_error, exfat_test_eof_error,
      exfat_test_opendir_error, exfat_test_safe_file_append,
      exfat_test_safe_file_overwrite_rp, exfat_test_safe_file_overwrite_wp,
      exfat_test_safe_dir, exfat_test_safe_remove, exfat_test_safe_mkdir, 
      exfat_test_safe_rmdir, exfat_test_safe_rename, exfat_test_safe_move,
      exfat_test_safe_truncate, exfat_test_safe_truncate_ext,
      exfat_test_safe_setlabel, exfat_test_safe_settimestamp,
      exfat_test_safe_setattr, exfat_test_enable_de_inv_log_entry_size,
      exfat_test_enable_de_no_fatchain, exfat_test_disable_de_no_fatchain,
      exfat_test_safe_dir_fat_chain, exfat_test_repair_error,
      exfat_test_long_file, exfat_test_long_file_neg, exfat_test_multifile,
      exfat_test_initvolume, exfat_test_initvolume_with_inv_cache,
      exfat_test_open_neg, exfat_test_remove_test_files, exfat_test_remove,
      exfat_test_list_files, exfat_test_read, exfat_test_write, 
      exfat_test_uniq_id, exfat_test_truncate, exfat_test_ftruncate,
      exfat_test_seteof, exfat_test_append, exfat_test_append_plus,
      exfat_test_attr, exfat_test_range, exfat_test_seek_beyond,
      exfat_test_seek_nowrite, exfat_test_no_fat_chain, exfat_test_zero_length,
      exfat_test_reopen_file, exfat_test_reopen_file2, exfat_test_reopen_file3,
      exfat_test_rename, exfat_test_move, exfat_test_write_full,
      exfat_test_putc_getc, exfat_test_rewind, exfat_test_seek_neg,
      exfat_test_invalid_file_cur_pos, exfat_test_init_neg,
      exfat_test_write_protected, exfat_test_media_status,
      exfat_test_media_flush, exfat_test_partition_table_error,
      exfat_test_file_allocation_table_error, exfat_test_mkdir_write_err,
      exfat_test_vol_info_get_error, exfat_test_task,
      exfat_test_file_direntry_error, exfat_test_random_upcase,
      exfat_test_direntry_update_error, exfat_test_filedatalength_error,
    - exfat_test_range re-initializes volume to flush caches.

1.18 (2020-09-22, 11:50):

  • Invalid cache configuration is tested: count sectors is not power of two.
  • Test of exfat_stat() changed as it shows current file size if file is opened for writing, file size is changed, but not flushed.
  • Adapted tests to FMW (File Multiple Write).

1.17 (2020-08-19, 11:25):

  • Implemented Cache test.
  • Compiler warnings were eliminated.
  • Updated test specification.
  • Development test may detect false positive error and fixed: exfat_test_upcase_tbl_fatchain_error, exfat_test_enable_de_inv_log_entry_size, exfat_test_disable_de_inv_log_entry_size, exfat_test_truncate_inv_log_entry_size, exfat_test_enable_de_no_fatchain, exfat_test_disable_de_no_fatchain.
  • Compiler error was fixed: exfat_test_safe_log_error, exfat_test_safe_log_entry, exfat_test_safe_log_entry_part_missing.
  • exfat_test_long_path() was fixed: detected false positive error when EXFAT_MAX_DIR_DEPTH is not equal to 32.

1.16 (2020-06-12, 10:41):

  • Removed unnecessary cache flush from exfat_test_safe_dir().
  • Updated test specification.

1.15 (2020-05-14, 13:38):

  • New test was implemented: exfat_test_uniq_id.
  • Fixed tests that detected false positive errors: exfat_test_enable_de_inv_log_entry_size, 
    exfat_test_disable_de_inv_log_entry_size, exfat_test_truncate_inv_log_entry_size and exfat_test_disable_de_no_fatchain.
  • Test were adapted to changes of fs_exfat: members of t_exfat_space were renamed.

1.14r2 (2020-01-31, 12:33):

  • Updated test specification.

1.14 (2020-01-16, 12:13):

  • Added new tests:
    • upcase_table_fat_chain_error
    • beyond_max_dir_size
    • vol_info_get_error
    • file_handle_allocate_error
    • file_handle_get_error, move_error
    • rename_error
    • exists_error
    • is_same_file_error
    • file_open_error
    • ftruncate_error
    • close_error
    • flush_error
    • read_error
    • write_error
    • seek_error
    • rewind_error
    • eof_error
    • find_allocation_bitmap_error
    • bootsector_checksum_wr_error
    • getfreespace_error
    • write_cluster_error
    • finalize_bootsector_error
    • mkdir_error, opendir_error and chdir_error
    • getcwd_error
    • stream_entry_save_error
    • dir_entry_update_save_error
    •  inv_log_entry_size
    • enable_de_inv_log_entry_size and disable_de_inv_log_entry_size
    • truncate_inv_log_entry_size
    • invalid_safe_command
    • enable_de_no_fatchain
    • disable_de_no_fatchain
    • inv_cluster_chain
    • repair_error, safe_log_open_error
    • safe_log_remove_error

1.13 (2019-10-24, 10:48):

  • mkdir() and exfat_test_update_stream_ext_direntry_error() tests do not use exfat_remove_reserved_free_cluster() now.

1.12 (2019-09-24, 13:30):

  • Added new tests: log writing test with invalid open mode, log ftruncate() tests.
  • Extended time stamp test to test negative UTC minute.
  • Changed safe file overwrite test: first writes media almost full.

1.11 (2019-09-10, 10:44):

  • Sector altering functions were extracted from media_drv_test as they are exFAT-specific.
  • Tests take into account whether EXFAT_ENABLE_LAST_ACCESS_UPDATE=1.

1.10 (2019-09-04, 14:20):

  • New safe test were added: exfat_remove_content()exfat_setlabel(), exfat_settimestamp(), exfat_setattr(), log seek, log rewind, log seek beyond, log remove and log entry tests.
  • New test was added that uses two volumes at the same time.

1.9r2 (2019-08-15, 12:21):

  • Dependent package list updated.

1.9 (2019-08-01, 12:54):

  • Added new test for exfat_remove_content().
  • Reopen tests use different fill character. Tests passed because previous good values remained on the media.

1.8 (2019-07-31, 08:23):

  • Added new tests: safe mode "r+"/"w+" with write error simulation.
  • Extended range write test.
  • Adapted tests to safe mode: media error, write protection error.
  • Fixed dataLength error test: it returned error if test buffer size was greater than 1 MiB.
  • exfat_do_test() repairs media at startup if needed. It returned with error earlier.

1.7 (2019-07-11, 09:54):

  • Added new tests: file's DataLength error when NoFatChain=1, directory with invalid file, initvolume with invalid cache, safe tests for remove, mkdir, rmdir, rename, move, ftruncate.
  • Adapted tests to safe mode: initvolume, media error, directory entry error, partition table error, update of directory entry error.
  • Fixed version check in .h and .c files.

1.6 (2019-07-09, 09:23):

  • Added new test: mkdir() in full directory cluster.
  • Product's version check was fixed in .h and .c files.

1.5 (2019-07-03, 12:41):

  • Compiler error eliminated: occurred if EXFAT_TEST_PRINTF_LLI_SUPPORTED is 0.
  • Not compiling task test if EXFAT_TEST_TASK is 0.

1.4 (2019-06-27, 10:07):

  • Added new tests: partition table error,  volume label directory entry error, stream extension entry error, directory entry update error, invalid file current position error, boot sector error, FAT error, directory entry error, file directory entry error, upcase entry error, allocation bitmap entry error, seek negative, safe file, safe directory, safe repair, safe log range, safe log error, safe log entry.

1.3 (2019-06-03, 10:58):

  • Module cannot be compiled with ISO C99 or older compilers due to Unicode string literals.
  • Compiler error eliminated, occurred if EXFAT_TEST_PRINTF_LLI_SUPPORTED is 0.
  • Not compiling task test if EXFAT_TEST_TASK is 0.

1.2 (2019-03-28, 09:24):

  • Implemented new tests: putc/getc, rewind, media status, media flush, invalid volume, random upcase table, directory entry.
  • Existing tests were updated according to test specification.
  • Version check was fixed: it checks only major version of fs_exfat.


  • Initial release