"""pytest tests for axolotl CLI preprocess command.""" import shutil from pathlib import Path from unittest.mock import patch import pytest from axolotl.cli.main import cli @pytest.fixture(autouse=True) def cleanup_last_run_prepared(): yield if Path("last_run_prepared").exists(): shutil.rmtree("last_run_prepared") def test_preprocess_config_not_found(cli_runner): """Test preprocess fails when config not found""" result = cli_runner.invoke(cli, ["preprocess", "nonexistent.yml"]) assert result.exit_code != 0 def test_preprocess_basic(cli_runner, config_path): """Test basic preprocessing with minimal config""" with patch("axolotl.cli.preprocess.do_cli") as mock_do_cli: result = cli_runner.invoke(cli, ["preprocess", str(config_path)]) assert result.exit_code == 0 mock_do_cli.assert_called_once() assert mock_do_cli.call_args.kwargs["config"] == str(config_path) assert mock_do_cli.call_args.kwargs["download"] is True def test_preprocess_without_download(cli_runner, config_path): """Test preprocessing without model download""" with patch("axolotl.cli.preprocess.do_cli") as mock_do_cli: result = cli_runner.invoke( cli, ["preprocess", str(config_path), "--no-download"] ) assert result.exit_code == 0 mock_do_cli.assert_called_once() assert mock_do_cli.call_args.kwargs["config"] == str(config_path) assert mock_do_cli.call_args.kwargs["download"] is False def test_preprocess_custom_path(cli_runner, tmp_path, valid_test_config): """Test preprocessing with custom dataset path""" config_path = tmp_path / "config.yml" custom_path = tmp_path / "custom_prepared" config_path.write_text(valid_test_config) with patch("axolotl.cli.preprocess.do_cli") as mock_do_cli: result = cli_runner.invoke( cli, [ "preprocess", str(config_path), "--dataset-prepared-path", str(custom_path.absolute()), ], ) assert result.exit_code == 0 mock_do_cli.assert_called_once() assert mock_do_cli.call_args.kwargs["config"] == str(config_path) assert mock_do_cli.call_args.kwargs["dataset_prepared_path"] == str( custom_path.absolute() )