from pathlib import Path REMOTE_TRAIN = Path("scripts/remote_train.sh").read_text() def test_remote_train_pins_hf_dataset_revision_for_split_download(): assert "DATA_REVISION=" in REMOTE_TRAIN assert "dataset_info('$DATA_DATASET').sha" in REMOTE_TRAIN assert "DATA_REVISION was not set; using mutable dataset HEAD" in REMOTE_TRAIN assert "production HF jobs should pin DATA_REVISION" in REMOTE_TRAIN assert "revision='$DATA_REVISION'" in REMOTE_TRAIN assert "allow_patterns=['train/*.parquet', 'val/*.parquet', 'test/*.parquet', 'split_summary.json']" in REMOTE_TRAIN assert "allow_patterns=['te_seqdata.parquet']" not in REMOTE_TRAIN assert "root te_seqdata.parquet is intentionally ignored" in REMOTE_TRAIN def test_remote_train_lmdb_signature_includes_dataset_revision(): assert "DATA_REVISION_SHORT" in REMOTE_TRAIN assert "immutable split-input" in REMOTE_TRAIN assert 'PROCESSED_SIGNATURE="${LOCAL_PROCESSED_SIGNATURE}_ds${DATA_REVISION_SHORT}"' in REMOTE_TRAIN def test_remote_train_uses_trainer_processed_dir_for_local_artifacts(): assert 'PROCESSED_DIR="data/processed/te_visuals/$LOCAL_PROCESSED_SIGNATURE"' in REMOTE_TRAIN assert 'PROCESSED_DIR="data/processed/te_visuals/auto"' not in REMOTE_TRAIN def test_remote_train_supports_forced_lmdb_rebuild(): assert "FORCE_ETL_REBUILD" in REMOTE_TRAIN assert "skipping LMDB cache pull" in REMOTE_TRAIN assert "rm -f \"$PROCESSED_DIR/tensors.lmdb\"" in REMOTE_TRAIN def test_remote_train_requires_lmdb_cache_manifest_for_cache_hit(): assert "etl_cache_manifest.json" in REMOTE_TRAIN assert "[ -f \"$PROCESSED_DIR/etl_cache_manifest.json\" ]" in REMOTE_TRAIN assert "root te_seqdata.parquet is intentionally ignored" in REMOTE_TRAIN def test_remote_train_disables_full_embedding_export(): assert "--no-export-embeddings" in REMOTE_TRAIN def test_remote_train_defaults_amp_off_for_hf_jobs(): assert 'DEEPGENOPIX_USE_AMP="${DEEPGENOPIX_USE_AMP:-0}"' in REMOTE_TRAIN assert "using DEEPGENOPIX_USE_AMP=$DEEPGENOPIX_USE_AMP" in REMOTE_TRAIN