| 683 | } |
| 684 | |
| 685 | static std::pair<int, int> test_handcrafted_file(const unsigned int seed) { |
| 686 | int npass = 0; |
| 687 | int ntest = 0; |
| 688 | |
| 689 | const std::vector<handcrafted_file_type> hfts = { |
| 690 | HANDCRAFTED_HEADER_BAD_MAGIC, |
| 691 | HANDCRAFTED_HEADER_BAD_VERSION_0, |
| 692 | HANDCRAFTED_HEADER_BAD_VERSION_1, |
| 693 | HANDCRAFTED_HEADER_BAD_VERSION_FUTURE, |
| 694 | HANDCRAFTED_HEADER_BAD_N_KV, |
| 695 | HANDCRAFTED_HEADER_BAD_N_TENSORS, |
| 696 | HANDCRAFTED_HEADER_EMPTY, |
| 697 | |
| 698 | HANDCRAFTED_KV_BAD_KEY_SIZE, |
| 699 | HANDCRAFTED_KV_BAD_TYPE, |
| 700 | HANDCRAFTED_KV_DUPLICATE_KEY, |
| 701 | HANDCRAFTED_KV_BAD_ALIGN, |
| 702 | HANDCRAFTED_KV_SUCCESS, |
| 703 | |
| 704 | HANDCRAFTED_TENSORS_BAD_NAME_SIZE, |
| 705 | HANDCRAFTED_TENSORS_BAD_N_DIMS, |
| 706 | HANDCRAFTED_TENSORS_BAD_SHAPE, |
| 707 | HANDCRAFTED_TENSORS_NE_TOO_BIG, |
| 708 | HANDCRAFTED_TENSORS_NBYTES_TOO_BIG, |
| 709 | HANDCRAFTED_TENSORS_BAD_TYPE, |
| 710 | HANDCRAFTED_TENSORS_BAD_OFFSET, |
| 711 | HANDCRAFTED_TENSORS_DUPLICATE_NAME, |
| 712 | HANDCRAFTED_TENSORS_BAD_ALIGN, |
| 713 | HANDCRAFTED_TENSORS_INCONSISTENT_ALIGN, |
| 714 | HANDCRAFTED_TENSORS_SUCCESS, |
| 715 | HANDCRAFTED_TENSORS_CUSTOM_ALIGN, |
| 716 | |
| 717 | HANDCRAFTED_DATA_NOT_ENOUGH_DATA, |
| 718 | HANDCRAFTED_DATA_BAD_ALIGN, |
| 719 | HANDCRAFTED_DATA_INCONSISTENT_ALIGN, |
| 720 | HANDCRAFTED_DATA_MEM_SIZE_OVERFLOW, |
| 721 | HANDCRAFTED_DATA_SUCCESS, |
| 722 | HANDCRAFTED_DATA_CUSTOM_ALIGN, |
| 723 | }; |
| 724 | |
| 725 | for (enum handcrafted_file_type hft : hfts) { |
| 726 | printf("%s: handcrafted_file_type=%s\n", __func__, handcrafted_file_type_name(hft).c_str()); |
| 727 | FILE * file = get_handcrafted_file(seed, hft); |
| 728 | |
| 729 | #ifdef _WIN32 |
| 730 | if (!file) { |
| 731 | printf("failed to create tmpfile(), needs elevated privileges on Windows"); |
| 732 | printf("skipping tests"); |
| 733 | continue; |
| 734 | } |
| 735 | #else |
| 736 | GGML_ASSERT(file); |
| 737 | #endif // _WIN32 |
| 738 | |
| 739 | struct ggml_context * ctx = nullptr; |
| 740 | struct gguf_init_params gguf_params = { |
| 741 | /*no_alloc =*/ false, |
| 742 | /*ctx =*/ hft >= offset_has_data ? &ctx : nullptr, |
no test coverage detected