diff --git a/src/littlefs/__main__.py b/src/littlefs/__main__.py index 6e2e1ce..7a1e48e 100644 --- a/src/littlefs/__main__.py +++ b/src/littlefs/__main__.py @@ -368,11 +368,13 @@ def add_command(handler, name="", help=""): return parser - -def main(): +# Getting argv optionally from the caller to enable call from python (generally for testing, but could be used for other purposes) +def main(argv=None): + if argv is None: + argv = sys.argv parser = get_parser() - parser.parse_known_args(sys.argv[1:]) # Allows for ``littlefs-python --version`` - args = parser.parse_args(sys.argv[1:]) + parser.parse_known_args(argv[1:]) # Allows for ``littlefs-python --version`` + args = parser.parse_args(argv[1:]) return args.func(parser, args) diff --git a/test/cli/test_create_and_extract.py b/test/cli/test_create_and_extract.py new file mode 100644 index 0000000..e795c36 --- /dev/null +++ b/test/cli/test_create_and_extract.py @@ -0,0 +1,49 @@ +from pathlib import Path +import filecmp + +from littlefs.__main__ import main + + +def test_create_and_extract(tmp_path): + """Test creating a filesystem image and extracting it.""" + # Create test directory with files + source_dir = tmp_path / "source" + source_dir.mkdir() + (source_dir / "file1.txt").write_text("hello world") + (source_dir / "subdir").mkdir() + (source_dir / "subdir" / "file2.txt").write_text("test content") + + # Create filesystem image + image_file = tmp_path / "test_image.bin" + create_argv = [ + "littlefs", + "create", + str(source_dir), + str(image_file), + "--block-size", "512", + "--fs-size", "64KB", + ] + assert main(create_argv) == 0 + assert image_file.exists() + + # Extract filesystem image + extract_dir = tmp_path / "extracted" + extract_argv = [ + "littlefs", + "extract", + str(image_file), + str(extract_dir), + "--block-size", "512", + ] + assert main(extract_argv) == 0 + assert extract_dir.exists() + + # Compare directories + comparison = filecmp.dircmp(source_dir, extract_dir) + assert not comparison.diff_files + assert not comparison.left_only + assert not comparison.right_only + + # Verify file contents + assert (extract_dir / "file1.txt").read_text() == "hello world" + assert (extract_dir / "subdir" / "file2.txt").read_text() == "test content" diff --git a/test/cli/test_create.py b/test/cli/test_walk_all.py similarity index 100% rename from test/cli/test_create.py rename to test/cli/test_walk_all.py