This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
import argparse
|
||||
import json
|
||||
import shutil
|
||||
import tempfile
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from scripts import generate_training_data as bridge
|
||||
|
||||
|
||||
class GenerateTrainingDataTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.repo = Path(__file__).resolve().parents[1]
|
||||
self.temp = tempfile.TemporaryDirectory()
|
||||
self.root = Path(self.temp.name)
|
||||
self.dictionary_dir = self.root / "dictionary"
|
||||
shutil.copytree(self.repo / "dictionary", self.dictionary_dir)
|
||||
self.output_dir = self.root / "workspace_Data" / "data"
|
||||
self.output_dir.mkdir(parents=True)
|
||||
self.manifest = self.root / "workspace_Data" / "manifest.llm.json"
|
||||
self.manifest.write_text(json.dumps({"manifest_version": "0.0.0", "datasets": {}}))
|
||||
|
||||
def tearDown(self):
|
||||
self.temp.cleanup()
|
||||
|
||||
def args(self, **overrides):
|
||||
values = {
|
||||
"dictionary_dir": str(self.dictionary_dir),
|
||||
"output_dir": str(self.output_dir),
|
||||
"manifest": str(self.manifest),
|
||||
"dry_run": False,
|
||||
"sdg_host": None,
|
||||
"sdg_user": None,
|
||||
"sdg_key": None,
|
||||
"num_records": 1000,
|
||||
"timestamp": 1234567890,
|
||||
}
|
||||
values.update(overrides)
|
||||
return argparse.Namespace(**values)
|
||||
|
||||
def test_seed_generation_covers_current_dictionary(self):
|
||||
artifacts = bridge.load_dictionary_artifacts(self.dictionary_dir)
|
||||
records = bridge.build_seed_records(artifacts, generated_at=123)
|
||||
actions = {record["metadata"]["action_id"] for record in records}
|
||||
self.assertEqual(len(actions), 13)
|
||||
self.assertIn("calculate", actions)
|
||||
self.assertIn("delete_file", actions)
|
||||
self.assertEqual(len(records), 260)
|
||||
|
||||
def test_compact_output_uses_codebook_codes(self):
|
||||
artifacts = bridge.load_dictionary_artifacts(self.dictionary_dir)
|
||||
compact = bridge.compact_target(
|
||||
artifacts,
|
||||
"hash_string",
|
||||
{"text": "hello", "algorithm": "sha256"},
|
||||
)
|
||||
self.assertEqual(compact["a"], artifacts["action_to_code"]["hash_string"])
|
||||
self.assertIn(artifacts["field_to_code"]["text"], compact["p"])
|
||||
self.assertIn(artifacts["field_to_code"]["algorithm"], compact["p"])
|
||||
|
||||
def test_empty_payload_action(self):
|
||||
artifacts = bridge.load_dictionary_artifacts(self.dictionary_dir)
|
||||
records = bridge.build_seed_records(artifacts, generated_at=123)
|
||||
uuid_records = [
|
||||
record for record in records if record["metadata"]["action_id"] == "generate_uuid"
|
||||
]
|
||||
self.assertTrue(uuid_records)
|
||||
output = json.loads(uuid_records[0]["output"])
|
||||
compact = json.loads(uuid_records[0]["metadata"]["compact"])
|
||||
self.assertEqual(output["payload"], {})
|
||||
self.assertEqual(compact["p"], {})
|
||||
|
||||
def test_split_includes_every_action(self):
|
||||
artifacts = bridge.load_dictionary_artifacts(self.dictionary_dir)
|
||||
records = bridge.build_seed_records(artifacts, generated_at=123)
|
||||
train, validation = bridge.split_records_by_action(records)
|
||||
train_actions = {record["metadata"]["action_id"] for record in train}
|
||||
validation_actions = {record["metadata"]["action_id"] for record in validation}
|
||||
self.assertEqual(train_actions, validation_actions)
|
||||
self.assertEqual(len(train_actions), 13)
|
||||
|
||||
def test_dry_run_writes_nothing(self):
|
||||
summary = bridge.run_bridge(self.args(dry_run=True))
|
||||
self.assertTrue(summary["dry_run"])
|
||||
self.assertFalse((self.output_dir / "module_controller_intents_1234567890").exists())
|
||||
manifest = json.loads(self.manifest.read_text())
|
||||
self.assertEqual(manifest["datasets"], {})
|
||||
|
||||
def test_manifest_patch_adds_dataset_without_damaging_existing_keys(self):
|
||||
bridge.run_bridge(self.args())
|
||||
manifest = json.loads(self.manifest.read_text())
|
||||
self.assertEqual(manifest["manifest_version"], "0.0.0")
|
||||
dataset = manifest["datasets"]["module_controller_intents_1234567890"]
|
||||
self.assertEqual(dataset["schema_profile"], "instruction")
|
||||
self.assertEqual(dataset["codebook_version"], "1.0.0")
|
||||
self.assertIn("codebook_checksum", dataset)
|
||||
self.assertTrue((self.output_dir / "module_controller_intents_1234567890" / "train.jsonl").exists())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user