|
6 | 6 | // This is a hack to access internal storage functions and definitions
|
7 | 7 | #include <storage/storage_i.h>
|
8 | 8 |
|
9 |
| -#define UNIT_TESTS_PATH(path) EXT_PATH("unit_tests/" path) |
| 9 | +#define UNIT_TESTS_RESOURCES_PATH(path) EXT_PATH("unit_tests/" path) |
| 10 | +#define UNIT_TESTS_PATH(path) EXT_PATH(".tmp/unit_tests/" path) |
10 | 11 |
|
11 |
| -#define STORAGE_LOCKED_FILE EXT_PATH("locked_file.test") |
| 12 | +#define STORAGE_LOCKED_FILE UNIT_TESTS_PATH("locked_file.test") |
12 | 13 | #define STORAGE_LOCKED_DIR STORAGE_INT_PATH_PREFIX
|
13 | 14 |
|
14 | 15 | #define STORAGE_TEST_DIR UNIT_TESTS_PATH("test_dir")
|
@@ -369,44 +370,92 @@ MU_TEST(storage_file_rename) {
|
369 | 370 | Storage* storage = furi_record_open(RECORD_STORAGE);
|
370 | 371 | File* file = storage_file_alloc(storage);
|
371 | 372 |
|
372 |
| - mu_check(write_file_13DA(storage, EXT_PATH("file.old"))); |
373 |
| - mu_check(check_file_13DA(storage, EXT_PATH("file.old"))); |
| 373 | + mu_check(write_file_13DA(storage, UNIT_TESTS_PATH("file.old"))); |
| 374 | + mu_check(check_file_13DA(storage, UNIT_TESTS_PATH("file.old"))); |
374 | 375 | mu_assert_int_eq(
|
375 |
| - FSE_OK, storage_common_rename(storage, EXT_PATH("file.old"), EXT_PATH("file.new"))); |
376 |
| - mu_assert_int_eq(FSE_NOT_EXIST, storage_common_stat(storage, EXT_PATH("file.old"), NULL)); |
377 |
| - mu_assert_int_eq(FSE_OK, storage_common_stat(storage, EXT_PATH("file.new"), NULL)); |
378 |
| - mu_check(check_file_13DA(storage, EXT_PATH("file.new"))); |
379 |
| - mu_assert_int_eq(FSE_OK, storage_common_remove(storage, EXT_PATH("file.new"))); |
| 376 | + FSE_OK, |
| 377 | + storage_common_rename(storage, UNIT_TESTS_PATH("file.old"), UNIT_TESTS_PATH("file.new"))); |
| 378 | + mu_assert_int_eq( |
| 379 | + FSE_NOT_EXIST, storage_common_stat(storage, UNIT_TESTS_PATH("file.old"), NULL)); |
| 380 | + mu_assert_int_eq(FSE_OK, storage_common_stat(storage, UNIT_TESTS_PATH("file.new"), NULL)); |
| 381 | + mu_check(check_file_13DA(storage, UNIT_TESTS_PATH("file.new"))); |
| 382 | + mu_assert_int_eq(FSE_OK, storage_common_remove(storage, UNIT_TESTS_PATH("file.new"))); |
380 | 383 |
|
381 | 384 | storage_file_free(file);
|
382 | 385 | furi_record_close(RECORD_STORAGE);
|
383 | 386 | }
|
384 | 387 |
|
| 388 | +static const char* dir_rename_tests[][2] = { |
| 389 | + {UNIT_TESTS_PATH("dir.old"), UNIT_TESTS_PATH("dir.new")}, |
| 390 | + {UNIT_TESTS_PATH("test_dir"), UNIT_TESTS_PATH("test_dir-new")}, |
| 391 | + {UNIT_TESTS_PATH("test"), UNIT_TESTS_PATH("test-test")}, |
| 392 | +}; |
| 393 | + |
385 | 394 | MU_TEST(storage_dir_rename) {
|
386 | 395 | Storage* storage = furi_record_open(RECORD_STORAGE);
|
387 | 396 |
|
388 |
| - storage_dir_create(storage, EXT_PATH("dir.old")); |
| 397 | + for(size_t i = 0; i < COUNT_OF(dir_rename_tests); i++) { |
| 398 | + const char* old_path = dir_rename_tests[i][0]; |
| 399 | + const char* new_path = dir_rename_tests[i][1]; |
| 400 | + |
| 401 | + storage_dir_create(storage, old_path); |
| 402 | + mu_check(storage_dir_rename_check(storage, old_path)); |
| 403 | + |
| 404 | + mu_assert_int_eq(FSE_OK, storage_common_rename(storage, old_path, new_path)); |
| 405 | + mu_assert_int_eq(FSE_NOT_EXIST, storage_common_stat(storage, old_path, NULL)); |
| 406 | + mu_check(storage_dir_rename_check(storage, new_path)); |
| 407 | + |
| 408 | + storage_dir_remove(storage, new_path); |
| 409 | + mu_assert_int_eq(FSE_NOT_EXIST, storage_common_stat(storage, new_path, NULL)); |
| 410 | + } |
| 411 | + |
| 412 | + furi_record_close(RECORD_STORAGE); |
| 413 | +} |
389 | 414 |
|
390 |
| - mu_check(storage_dir_rename_check(storage, EXT_PATH("dir.old"))); |
| 415 | +MU_TEST(storage_equiv_and_subdir) { |
| 416 | + Storage* storage = furi_record_open(RECORD_STORAGE); |
391 | 417 |
|
392 | 418 | mu_assert_int_eq(
|
393 |
| - FSE_OK, storage_common_rename(storage, EXT_PATH("dir.old"), EXT_PATH("dir.new"))); |
394 |
| - mu_assert_int_eq(FSE_NOT_EXIST, storage_common_stat(storage, EXT_PATH("dir.old"), NULL)); |
395 |
| - mu_check(storage_dir_rename_check(storage, EXT_PATH("dir.new"))); |
| 419 | + true, |
| 420 | + storage_common_equivalent_path(storage, UNIT_TESTS_PATH("blah"), UNIT_TESTS_PATH("blah"))); |
| 421 | + mu_assert_int_eq( |
| 422 | + true, |
| 423 | + storage_common_equivalent_path( |
| 424 | + storage, UNIT_TESTS_PATH("blah/"), UNIT_TESTS_PATH("blah/"))); |
| 425 | + mu_assert_int_eq( |
| 426 | + false, |
| 427 | + storage_common_equivalent_path( |
| 428 | + storage, UNIT_TESTS_PATH("blah"), UNIT_TESTS_PATH("blah-blah"))); |
| 429 | + mu_assert_int_eq( |
| 430 | + false, |
| 431 | + storage_common_equivalent_path( |
| 432 | + storage, UNIT_TESTS_PATH("blah/"), UNIT_TESTS_PATH("blah-blah/"))); |
396 | 433 |
|
397 |
| - storage_dir_remove(storage, EXT_PATH("dir.new")); |
398 |
| - mu_assert_int_eq(FSE_NOT_EXIST, storage_common_stat(storage, EXT_PATH("dir.new"), NULL)); |
| 434 | + mu_assert_int_eq( |
| 435 | + true, storage_common_is_subdir(storage, UNIT_TESTS_PATH("blah"), UNIT_TESTS_PATH("blah"))); |
| 436 | + mu_assert_int_eq( |
| 437 | + true, |
| 438 | + storage_common_is_subdir(storage, UNIT_TESTS_PATH("blah"), UNIT_TESTS_PATH("blah/blah"))); |
| 439 | + mu_assert_int_eq( |
| 440 | + false, |
| 441 | + storage_common_is_subdir(storage, UNIT_TESTS_PATH("blah/blah"), UNIT_TESTS_PATH("blah"))); |
| 442 | + mu_assert_int_eq( |
| 443 | + false, |
| 444 | + storage_common_is_subdir(storage, UNIT_TESTS_PATH("blah"), UNIT_TESTS_PATH("blah-blah"))); |
399 | 445 |
|
400 | 446 | furi_record_close(RECORD_STORAGE);
|
401 | 447 | }
|
402 | 448 |
|
403 | 449 | MU_TEST_SUITE(storage_rename) {
|
404 | 450 | MU_RUN_TEST(storage_file_rename);
|
405 | 451 | MU_RUN_TEST(storage_dir_rename);
|
| 452 | + MU_RUN_TEST(storage_equiv_and_subdir); |
406 | 453 |
|
407 | 454 | Storage* storage = furi_record_open(RECORD_STORAGE);
|
408 |
| - storage_dir_remove(storage, EXT_PATH("dir.old")); |
409 |
| - storage_dir_remove(storage, EXT_PATH("dir.new")); |
| 455 | + for(size_t i = 0; i < COUNT_OF(dir_rename_tests); i++) { |
| 456 | + storage_dir_remove(storage, dir_rename_tests[i][0]); |
| 457 | + storage_dir_remove(storage, dir_rename_tests[i][1]); |
| 458 | + } |
410 | 459 | furi_record_close(RECORD_STORAGE);
|
411 | 460 | }
|
412 | 461 |
|
@@ -653,7 +702,7 @@ MU_TEST(test_md5_calc) {
|
653 | 702 | Storage* storage = furi_record_open(RECORD_STORAGE);
|
654 | 703 | File* file = storage_file_alloc(storage);
|
655 | 704 |
|
656 |
| - const char* path = UNIT_TESTS_PATH("storage/md5.txt"); |
| 705 | + const char* path = UNIT_TESTS_RESOURCES_PATH("storage/md5.txt"); |
657 | 706 | const char* md5_cstr = "2a456fa43e75088fdde41c93159d62a2";
|
658 | 707 | const uint8_t md5[MD5_HASH_SIZE] = {
|
659 | 708 | 0x2a,
|
|
0 commit comments