functest: add partial repro test

Fixes #259

Signed-off-by: Ruslan Kuprieiev <[email protected]>
This commit is contained in:
Ruslan Kuprieiev
2017-11-27 02:58:37 +02:00
parent f035926891
commit 99965d2cee
2 changed files with 102 additions and 27 deletions
+17 -1
View File
@@ -22,14 +22,30 @@ TEST_REPO_REGION='us-east-2'
TEST_REPO_GCP='dvc-test/myrepo'
TEST_REPO_GCP_PROJECT='dvc-project'
function dvc_md5() {
function is_osx() {
if [ "$(uname)" == "Darwin" ]; then
return 0
else
return 1
fi
}
function dvc_md5() {
if is_osx; then
md5 -r $@
else
md5sum $@
fi
}
function dvc_timestamp() {
if is_osx; then
stat -f "%m%t%Sm %N" $@
else
stat -c %y data/foo $@
fi
}
function dvc_print() {
echo -e "$1"
}
+85 -26
View File
@@ -4,36 +4,95 @@ set -e
source common.sh
dvc_create_repo
function test_generic() {
dvc_info '=== Generic repro test'
dvc_info 'Copy foo into foo1'
dvc run -d code/code.sh -d data/foo -o data/foo1 bash code/code.sh data/foo data/foo1
dvc_create_repo
dvc_info 'Modify code'
echo " " >> code/code.sh
git commit -am 'Change code'
dvc_info 'Reproduce foo1'
dvc repro data/foo1
dvc_check_files data/foo1
if [ "$(cat data/foo1)" != "foo" ]; then
dvc_fail
fi
dvc_info 'Copy foo into foo1'
dvc run -d code/code.sh -d data/foo -o data/foo1 bash code/code.sh data/foo data/foo1
dvc_info 'Modify foo'
dvc remove data/foo
cp $DATA_CACHE/bar data/foo
dvc add data/foo
dvc_info 'Modify code'
echo " " >> code/code.sh
git commit -am 'Change code'
dvc_info 'Reproduce foo1'
dvc repro data/foo1
dvc_check_files data/foo1
if [ "$(cat data/foo1)" != "foo" ]; then
dvc_fail
fi
dvc_info 'Set default target'
dvc config global.target data/foo1
git commit -am 'Set default target'
dvc_info 'Modify foo'
dvc remove data/foo
cp $DATA_CACHE/bar data/foo
dvc add data/foo
dvc_info 'Reproduce foo1 as default target'
dvc repro
dvc_check_files data/foo1
if [ "$(cat data/foo1)" != "bar" ]; then
dvc_fail
fi
dvc_info 'Set default target'
dvc config global.target data/foo1
git commit -am 'Set default target'
dvc_info 'Reproduce foo1 as default target'
dvc repro
dvc_check_files data/foo1
if [ "$(cat data/foo1)" != "bar" ]; then
dvc_fail
fi
}
function test_partial() {
dvc_info "=== Partial repro test"
dvc_create_repo
cp code/code.sh code/code1.sh
cp code/code1.sh code/code2.sh
cp code/code2.sh code/code3.sh
git add code
git commit -m "copy code"
dvc_info "Create repro chain foo -> foo1 -> foo2 -> foo3"
dvc run -d code/code1.sh -d data/foo -o data/foo1 cp data/foo data/foo1
dvc run -d code/code2.sh -d data/foo1 -o data/foo2 cp data/foo1 data/foo2
dvc run -d code/code3.sh -d data/foo2 -o data/foo3 cp data/foo2 data/foo3
dvc_info "Save original timestamps"
FOO_TS=$(dvc_timestamp data/foo)
FOO1_TS=$(dvc_timestamp data/foo1)
FOO2_TS=$(dvc_timestamp data/foo2)
FOO3_TS=$(dvc_timestamp data/foo3)
dvc_info "Modify dependency for data/foo1, that will not result in data/foo1 contents being changed"
echo " " >> code/code1.sh
git add code
git commit -m "modify code1.sh"
dvc_info "Reproduce data/foo3"
dvc repro data/foo3
dvc_info "Check timestamps"
if [ "$FOO_TS" != "$(dvc_timestamp data/foo)" ]; then
dvc_error "data/foo timestamp changed"
dvc_fail
fi
if [ "$FOO1_TS" == "$(dvc_timestamp data/foo1)" ]; then
dvc_error "data/foo1 timestamp did not change"
dvc_fail
fi
if [ "$FOO2_TS" != "$(dvc_timestamp data/foo2)" ]; then
dvc_error "data/foo2 timestamp changed"
dvc_fail
fi
if [ "$FOO3_TS" != "$(dvc_timestamp data/foo3)" ]; then
dvc_error "data/foo3 timestamp changed"
dvc_fail
fi
}
test_generic
test_partial
dvc_pass