| 310 | assert (tmp_dir / "foo").read_text() == "foo" |
| 311 | |
| 312 | def test_dir(self, tmp_dir, dvc, remote_worktree): |
| 313 | (stage,) = tmp_dir.dvc_gen( |
| 314 | { |
| 315 | "data_dir": { |
| 316 | "data_sub_dir": {"data_sub": "data_sub"}, |
| 317 | "data": "data", |
| 318 | "empty": "", |
| 319 | } |
| 320 | } |
| 321 | ) |
| 322 | |
| 323 | dvc.push() |
| 324 | assert "files" in (tmp_dir / "data_dir.dvc").read_text() |
| 325 | assert "version_id" in (tmp_dir / "data_dir.dvc").read_text() |
| 326 | stage = stage.reload() |
| 327 | out = stage.outs[0] |
| 328 | assert out.files |
| 329 | for file in out.files: |
| 330 | assert file["version_id"] |
| 331 | assert file["remote"] == "upstream" |
| 332 | |
| 333 | remove(dvc.cache.local.path) |
| 334 | remove(tmp_dir / "data_dir") |
| 335 | |
| 336 | dvc.pull() |
| 337 | assert (tmp_dir / "data_dir" / "data").read_text() == "data" |
| 338 | assert ( |
| 339 | tmp_dir / "data_dir" / "data_sub_dir" / "data_sub" |
| 340 | ).read_text() == "data_sub" |
| 341 | |
| 342 | def test_deletion(self, tmp_dir, dvc, scm, remote_worktree): |
| 343 | tmp_dir.dvc_gen( |