mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-02 07:18:25 +01:00
output: Don't serialize hash_info or meta in cloud versioning.
Closes #8357
This commit is contained in:
@@ -1142,3 +1142,61 @@ def test_add_with_annotations(M, tmp_dir, dvc):
|
||||
(stage,) = dvc.add("foo", type="t2")
|
||||
assert stage.outs[0].annot == Annotation(**annot)
|
||||
assert (tmp_dir / "foo.dvc").parse() == M.dict(outs=[M.dict(**annot)])
|
||||
|
||||
|
||||
def test_add_updates_to_cloud_versioning_dir(tmp_dir, dvc):
|
||||
data_dvc = tmp_dir / "data.dvc"
|
||||
data_dvc.dump(
|
||||
{
|
||||
"outs": [
|
||||
{
|
||||
"path": "data",
|
||||
"files": [
|
||||
{
|
||||
"size": 3,
|
||||
"version_id": "WYRG4BglP7pD.gEoJP6a4AqOhl.FRA.h",
|
||||
"etag": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"md5": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"relpath": "bar",
|
||||
},
|
||||
{
|
||||
"size": 3,
|
||||
"version_id": "0vL53tFVY5vVAoJ4HG2jCS1mEcohDPE0",
|
||||
"etag": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"md5": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"relpath": "foo",
|
||||
},
|
||||
],
|
||||
}
|
||||
]
|
||||
}
|
||||
)
|
||||
|
||||
data = tmp_dir / "data"
|
||||
data.mkdir()
|
||||
(data / "foo").write_text("foo")
|
||||
(data / "bar").write_text("bar2")
|
||||
|
||||
dvc.add("data")
|
||||
|
||||
assert (tmp_dir / "data.dvc").parse() == {
|
||||
"outs": [
|
||||
{
|
||||
"path": "data",
|
||||
"files": [
|
||||
{
|
||||
"size": 4,
|
||||
"md5": "224e2539f52203eb33728acd228b4432",
|
||||
"relpath": "bar",
|
||||
},
|
||||
{
|
||||
"size": 3,
|
||||
"version_id": "0vL53tFVY5vVAoJ4HG2jCS1mEcohDPE0",
|
||||
"etag": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"md5": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"relpath": "foo",
|
||||
},
|
||||
],
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -121,3 +121,58 @@ def test_remote_missing_dependency_on_dir_pull(tmp_dir, scm, dvc, mocker):
|
||||
)
|
||||
with pytest.raises(RemoteMissingDepsError):
|
||||
dvc.pull()
|
||||
|
||||
|
||||
def test_hash_info_cloud_versioning_dir(mocker):
|
||||
stage = mocker.MagicMock()
|
||||
stage.repo.fs.version_aware = False
|
||||
stage.repo.fs.PARAM_CHECKSUM = "etag"
|
||||
files = [
|
||||
{
|
||||
"size": 3,
|
||||
"version_id": "WYRG4BglP7pD.gEoJP6a4AqOhl.FRA.h",
|
||||
"etag": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"md5": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"relpath": "bar",
|
||||
},
|
||||
{
|
||||
"size": 3,
|
||||
"version_id": "0vL53tFVY5vVAoJ4HG2jCS1mEcohDPE0",
|
||||
"etag": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"md5": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"relpath": "foo",
|
||||
},
|
||||
]
|
||||
out = Output(stage, "path", files=files)
|
||||
# `hash_info`` and `meta`` constructed from `files``
|
||||
assert out.hash_info.name == "md5"
|
||||
assert out.hash_info.value == "77e8000f532886eef8ee1feba82e9bad.dir"
|
||||
assert out.meta.isdir
|
||||
assert out.meta.nfiles == 2
|
||||
assert out.meta.size == 6
|
||||
|
||||
|
||||
def test_dumpd_cloud_versioning_dir(mocker):
|
||||
stage = mocker.MagicMock()
|
||||
stage.repo.fs.version_aware = False
|
||||
stage.repo.fs.PARAM_CHECKSUM = "md5"
|
||||
files = [
|
||||
{
|
||||
"size": 3,
|
||||
"version_id": "WYRG4BglP7pD.gEoJP6a4AqOhl.FRA.h",
|
||||
"etag": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"md5": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"relpath": "bar",
|
||||
},
|
||||
{
|
||||
"size": 3,
|
||||
"version_id": "0vL53tFVY5vVAoJ4HG2jCS1mEcohDPE0",
|
||||
"etag": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"md5": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"relpath": "foo",
|
||||
},
|
||||
]
|
||||
out = Output(stage, "path", files=files)
|
||||
|
||||
dumpd = out.dumpd()
|
||||
assert dumpd == {"path": "path", "files": files}
|
||||
|
||||
@@ -255,3 +255,28 @@ def test_to_lockfile(dvc):
|
||||
]
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
def test_to_single_stage_lockfile_cloud_versioning_dir(dvc):
|
||||
stage = create_stage(PipelineStage, dvc, outs=["dir"], **kwargs)
|
||||
stage.outs[0].hash_info = HashInfo("md5", "md-five.dir")
|
||||
files = [
|
||||
{
|
||||
"size": 3,
|
||||
"version_id": "WYRG4BglP7pD.gEoJP6a4AqOhl.FRA.h",
|
||||
"etag": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"md5": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"relpath": "bar",
|
||||
},
|
||||
{
|
||||
"size": 3,
|
||||
"version_id": "0vL53tFVY5vVAoJ4HG2jCS1mEcohDPE0",
|
||||
"etag": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"md5": "acbd18db4cc2f85cedef654fccc4a4d8",
|
||||
"relpath": "foo",
|
||||
},
|
||||
]
|
||||
stage.outs[0].files = files
|
||||
e = _to_single_stage_lockfile(stage, with_files=True)
|
||||
assert Schema(e)
|
||||
assert e["outs"][0] == {"path": "dir", "files": files}
|
||||
|
||||
Reference in New Issue
Block a user