From 7baac76a3bef8ff55b502ebdee08e9018091d592 Mon Sep 17 00:00:00 2001 From: Jeromy Date: Mon, 29 Aug 2016 16:43:33 -0700 Subject: [PATCH] repo/verify: add better testing on repo verify command License: MIT Signed-off-by: Jeromy --- test/sharness/t0086-repo-verify.sh | 60 ++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100755 test/sharness/t0086-repo-verify.sh diff --git a/test/sharness/t0086-repo-verify.sh b/test/sharness/t0086-repo-verify.sh new file mode 100755 index 00000000000..f30efb1ebcd --- /dev/null +++ b/test/sharness/t0086-repo-verify.sh @@ -0,0 +1,60 @@ +#!/bin/sh +# +# Copyright (c) 2016 Jeromy Johnson +# MIT Licensed; see the LICENSE file in this repository. +# + +test_description="Test ipfs repo fsck" + +. lib/test-lib.sh + +test_init_ipfs + +sort_rand() { + case `uname` in + Linux) + sort -R + ;; + Darwin) + ruby -e 'puts STDIN.readlines.shuffle' + ;; + *) + echo "unsupported system: $(uname)" + esac +} + +check_random_corruption() { + to_break=$(find "$IPFS_PATH/blocks" -type f | sort_rand | head -n 1) + + test_expect_success "back up file and overwrite it" ' + cp "$to_break" backup_file && + echo "this is super broken" > "$to_break" + ' + + test_expect_success "repo verify detects failure" ' + test_expect_code 1 ipfs repo verify + ' + + test_expect_success "replace the object" ' + cp backup_file "$to_break" + ' + + test_expect_success "ipfs repo verify passes just fine now" ' + ipfs repo verify + ' +} + +test_expect_success "create some files" ' + random-files -depth=3 -dirs=4 -files=10 foobar > /dev/null +' + +test_expect_success "add them all" ' + ipfs add -r -q foobar > /dev/null +' + +for i in `seq 20` +do + check_random_corruption +done + +test_done