| """Tests for Hugging Face Dataset publishing helpers.""" |
|
|
| from __future__ import annotations |
|
|
| import json |
| import tempfile |
| import unittest |
| from pathlib import Path |
|
|
| from scripts.prepare_curated_dataset import build_curated_records, write_jsonl |
| from scripts.publish_hf_dataset import upload_dataset, validate_dataset_file |
|
|
|
|
| class PublishHfDatasetTest(unittest.TestCase): |
| def test_validate_dataset_file_rejects_bad_assistant_json(self) -> None: |
| with tempfile.TemporaryDirectory() as tmp_dir: |
| dataset_file = Path(tmp_dir) / "bad.jsonl" |
| dataset_file.write_text( |
| json.dumps( |
| { |
| "id": "bad", |
| "messages": [ |
| {"role": "system", "content": "system"}, |
| {"role": "user", "content": "user"}, |
| {"role": "assistant", "content": "not json"}, |
| ], |
| } |
| ) |
| + "\n", |
| encoding="utf-8", |
| ) |
|
|
| with self.assertRaises(ValueError): |
| validate_dataset_file(dataset_file) |
|
|
| def test_upload_dataset_dry_run_returns_file_summary(self) -> None: |
| with tempfile.TemporaryDirectory() as tmp_dir: |
| dataset_file = Path(tmp_dir) / "curated_v2.jsonl" |
| write_jsonl(build_curated_records(5, version="v2"), dataset_file) |
|
|
| summary = upload_dataset( |
| dataset_file=dataset_file, |
| repo_id="qqyule/objectverse-diary-sft-curated", |
| path_in_repo="objectverse_sft_curated_v2.jsonl", |
| private=False, |
| commit_message="Dry run", |
| dry_run=True, |
| ) |
|
|
| self.assertFalse(summary["uploaded"]) |
| self.assertEqual(summary["repo_id"], "qqyule/objectverse-diary-sft-curated") |
| self.assertEqual(summary["path_in_repo"], "objectverse_sft_curated_v2.jsonl") |
| self.assertEqual(summary["record_count"], 5) |
|
|
|
|
| if __name__ == "__main__": |
| unittest.main() |
|
|