| 280 | |
| 281 | |
| 282 | def test_update_recursive(tmp_dir, dvc, erepo_dir): |
| 283 | with erepo_dir.branch("branch", new=True), erepo_dir.chdir(): |
| 284 | erepo_dir.scm_gen( |
| 285 | {"foo1": "text1", "foo2": "text2", "foo3": "text3"}, |
| 286 | commit="add foo files", |
| 287 | ) |
| 288 | old_rev = erepo_dir.scm.get_rev() |
| 289 | |
| 290 | tmp_dir.gen({"dir": {"subdir": {}}}) |
| 291 | stage1 = dvc.imp( |
| 292 | os.fspath(erepo_dir), "foo1", os.path.join("dir", "foo1"), rev="branch" |
| 293 | ) |
| 294 | stage2 = dvc.imp( |
| 295 | os.fspath(erepo_dir), |
| 296 | "foo2", |
| 297 | os.path.join("dir", "subdir", "foo2"), |
| 298 | rev="branch", |
| 299 | ) |
| 300 | stage3 = dvc.imp( |
| 301 | os.fspath(erepo_dir), |
| 302 | "foo3", |
| 303 | os.path.join("dir", "subdir", "foo3"), |
| 304 | rev="branch", |
| 305 | ) |
| 306 | |
| 307 | assert (tmp_dir / os.path.join("dir", "foo1")).read_text() == "text1" |
| 308 | assert (tmp_dir / os.path.join("dir", "subdir", "foo2")).read_text() == "text2" |
| 309 | assert (tmp_dir / os.path.join("dir", "subdir", "foo3")).read_text() == "text3" |
| 310 | |
| 311 | assert stage1.deps[0].def_repo["rev_lock"] == old_rev |
| 312 | assert stage2.deps[0].def_repo["rev_lock"] == old_rev |
| 313 | assert stage3.deps[0].def_repo["rev_lock"] == old_rev |
| 314 | |
| 315 | with erepo_dir.branch("branch", new=False), erepo_dir.chdir(): |
| 316 | erepo_dir.scm_gen( |
| 317 | {"foo1": "updated1", "foo2": "updated2", "foo3": "updated3"}, |
| 318 | "", |
| 319 | "update foo content", |
| 320 | ) |
| 321 | new_rev = erepo_dir.scm.get_rev() |
| 322 | |
| 323 | assert old_rev != new_rev |
| 324 | |
| 325 | dvc.update(["dir"], recursive=True) |
| 326 | |
| 327 | stage1 = load_file(dvc, stage1.path).stage |
| 328 | stage2 = load_file(dvc, stage2.path).stage |
| 329 | stage3 = load_file(dvc, stage3.path).stage |
| 330 | assert stage1.deps[0].def_repo["rev_lock"] == new_rev |
| 331 | assert stage2.deps[0].def_repo["rev_lock"] == new_rev |
| 332 | assert stage3.deps[0].def_repo["rev_lock"] == new_rev |
| 333 | |
| 334 | |
| 335 | @pytest.mark.parametrize("is_dvc", [True, False]) |