| 304 | |
| 305 | |
| 306 | class TestApplyDecisions(unittest.TestCase): |
| 307 | def test_buckets_each_decision_type(self) -> None: |
| 308 | decisions = [ |
| 309 | Work("/p/work.gz", "u/26.04/1/work.gz"), |
| 310 | SizeSkip("/p/big.gz", "u/26.04/1/big.gz", 9999, 2048, "max"), |
| 311 | AlreadyStored("/p/old.gz", "u/26.04/1/old.gz"), |
| 312 | FilterSkip("/p/fs.gz", "u/26.04/1/fs.gz", "llm", "openai/other"), |
| 313 | ContentDup("/p/dup.gz", "u/26.04/1/dup.gz", "u/26.04/1/canon.gz"), |
| 314 | ] |
| 315 | s = _FakeStore() |
| 316 | out = apply_decisions(decisions, s, filter_db=("llm:openai/old",)) # type: ignore[arg-type] |
| 317 | self.assertEqual(out.work_files, ["/p/work.gz"]) |
| 318 | self.assertEqual( |
| 319 | out.content_dups, [("/p/dup.gz", "u/26.04/1/dup.gz", "u/26.04/1/canon.gz")] |
| 320 | ) |
| 321 | self.assertEqual(out.size_filtered, 1) |
| 322 | self.assertEqual(out.already_stored, 1) |
| 323 | # prefilter_skipped includes size + already-stored + filter-skip. |
| 324 | self.assertEqual(out.prefilter_skipped, 3) |
| 325 | self.assertEqual(s.deleted, []) |
| 326 | |
| 327 | def test_stale_symlink_deletes_db_row(self) -> None: |
| 328 | decisions = [ |
| 329 | Symlink( |
| 330 | gz_path="/p/sym.gz", |
| 331 | short_path="u/26.04/1/sym.gz", |
| 332 | canonical_source="u/26.04/1/canon.gz", |
| 333 | stale_in_db=True, |
| 334 | canonical_in_inputs=False, |
| 335 | ), |
| 336 | ] |
| 337 | s = _FakeStore(sources_in_db={"u/26.04/1/sym.gz"}) |
| 338 | out = apply_decisions(decisions, s, filter_db=()) # type: ignore[arg-type] |
| 339 | self.assertEqual(s.deleted, ["u/26.04/1/sym.gz"]) |
| 340 | self.assertEqual( |
| 341 | out.symlinks, |
| 342 | [("/p/sym.gz", "u/26.04/1/sym.gz", "u/26.04/1/canon.gz")], |
| 343 | ) |
| 344 | |
| 345 | def test_fresh_symlink_no_delete(self) -> None: |
| 346 | decisions = [ |
| 347 | Symlink( |
| 348 | gz_path="/p/sym.gz", |
| 349 | short_path="u/26.04/1/sym.gz", |
| 350 | canonical_source="u/26.04/1/canon.gz", |
| 351 | stale_in_db=False, |
| 352 | canonical_in_inputs=True, |
| 353 | ), |
| 354 | ] |
| 355 | s = _FakeStore() |
| 356 | apply_decisions(decisions, s, filter_db=()) # type: ignore[arg-type] |
| 357 | self.assertEqual(s.deleted, []) |
| 358 | |
| 359 | def test_classified_defaults(self) -> None: |
| 360 | out = apply_decisions([], _FakeStore(), filter_db=()) # type: ignore[arg-type] |
| 361 | self.assertIsInstance(out, Classified) |
| 362 | self.assertEqual(out.work_files, []) |
| 363 | self.assertEqual(out.symlinks, []) |
nothing calls this directly
no outgoing calls
no test coverage detected