esp-idf/components/spiffs/test_spiffsgen/test_spiffsgen.py

71 lines
2.2 KiB
Python
Raw Permalink Normal View History

#!/usr/bin/env python
# SPDX-FileCopyrightText: 2019-2022 Espressif Systems (Shanghai) CO LTD
# SPDX-License-Identifier: Apache-2.0
import os
import sys
import unittest
try:
import typing
except ImportError:
pass
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
try:
import spiffsgen
except ImportError:
raise
class SpiffsgenTest(unittest.TestCase):
def test_configs(self): # type: () -> None
"""Run spiffsgen with different configs, and check that
an image is generated (there is no exception), and the image size
is as expected.
"""
default_config = dict(
page_size=256,
page_ix_len=spiffsgen.SPIFFS_PAGE_IX_LEN,
block_size=4096,
block_ix_len=spiffsgen.SPIFFS_BLOCK_IX_LEN,
meta_len=4,
obj_name_len=32,
obj_id_len=spiffsgen.SPIFFS_BLOCK_IX_LEN,
span_ix_len=spiffsgen.SPIFFS_SPAN_IX_LEN,
packed=True,
aligned=True,
endianness='little',
use_magic=True,
use_magic_len=True,
aligned_obj_ix_tables=False
)
def make_config(**kwargs): # type: (typing.Any) -> spiffsgen.SpiffsBuildConfig
"""Return SpiffsBuildConfig object with configuration set
by default_config plus any options overridden in kwargs.
"""
new_config = dict(default_config)
new_config.update(**kwargs)
return spiffsgen.SpiffsBuildConfig(**new_config)
configs = [
make_config(),
make_config(use_magic_len=False, use_magic=False, aligned_obj_ix_tables=True),
make_config(meta_len=4, obj_name_len=16),
make_config(block_size=8192),
make_config(page_size=512)
]
image_size = 64 * 1024
for config in configs:
spiffs = spiffsgen.SpiffsFS(image_size, config)
spiffs.create_file('/test', __file__)
image = spiffs.to_binary()
self.assertEqual(len(image), image_size)
# Note: it would be nice to compile spiffs for host with the given
# config, and verify that the image is parsed correctly.
if __name__ == '__main__':
unittest.main()