| 310 | |
| 311 | |
| 312 | def test_run_dump(tmp_dir, dvc, run_head): |
| 313 | from dvc.dvcfile import load_file |
| 314 | |
| 315 | tmp_dir.gen( |
| 316 | { |
| 317 | "dir": { |
| 318 | "foo": "foo\nfoo", |
| 319 | "bar": "bar\nbar", |
| 320 | "foobar": "foobar\foobar", |
| 321 | } |
| 322 | } |
| 323 | ) |
| 324 | |
| 325 | dvc.run( |
| 326 | cmd="cp foo foo2", |
| 327 | deps=["foo"], |
| 328 | name="copy-foo-foo2", |
| 329 | wdir="dir", |
| 330 | outs_persist=["foo2"], |
| 331 | always_changed=True, |
| 332 | ) |
| 333 | data = load_file(dvc, PROJECT_FILE)._load()[0] |
| 334 | assert data == { |
| 335 | "stages": { |
| 336 | "copy-foo-foo2": { |
| 337 | "cmd": "cp foo foo2", |
| 338 | "deps": ["foo"], |
| 339 | "outs": [{"foo2": {"persist": True}}], |
| 340 | "always_changed": True, |
| 341 | "wdir": "dir", |
| 342 | } |
| 343 | } |
| 344 | } |
| 345 | |
| 346 | run_head( |
| 347 | "foo", |
| 348 | "bar", |
| 349 | "foobar", |
| 350 | name="head-files", |
| 351 | outs=["bar-1"], |
| 352 | outs_persist=["foo-1"], |
| 353 | metrics_no_cache=["foobar-1"], |
| 354 | wdir="dir", |
| 355 | ) |
| 356 | assert load_file(dvc, PROJECT_FILE)._load()[0] == { |
| 357 | "stages": { |
| 358 | "head-files": { |
| 359 | "cmd": "python {} foo bar foobar".format( |
| 360 | (tmp_dir / "head.py").resolve() |
| 361 | ), |
| 362 | "wdir": "dir", |
| 363 | "deps": ["bar", "foo", "foobar"], |
| 364 | "outs": ["bar-1", {"foo-1": {"persist": True}}], |
| 365 | "metrics": [{"foobar-1": {"cache": False}}], |
| 366 | }, |
| 367 | **data["stages"], |
| 368 | } |
| 369 | } |