@cryptotaxi247 / kubo / commits / 7baac76a3

repo/verify: add better testing on repo verify command

License: MIT Signed-off-by: Jeromy <why@ipfs.io>

Jeromy committed Aug 29, 2016 at 16:43 UTC 7baac76a3bef8ff55b502ebdee08e9018091d592
1 file changed +60
test/sharness/t0086-repo-verify.sh new
+60
@@ -0,0 +1,60 @@
1 +#!/bin/sh
2 +#
3 +# Copyright (c) 2016 Jeromy Johnson
4 +# MIT Licensed; see the LICENSE file in this repository.
5 +#
6 +
7 +test_description="Test ipfs repo fsck"
8 +
9 +. lib/test-lib.sh
10 +
11 +test_init_ipfs
12 +
13 +sort_rand() {
14 + case `uname` in
15 + Linux)
16 + sort -R
17 + ;;
18 + Darwin)
19 + ruby -e 'puts STDIN.readlines.shuffle'
20 + ;;
21 + *)
22 + echo "unsupported system: $(uname)"
23 + esac
24 +}
25 +
26 +check_random_corruption() {
27 + to_break=$(find "$IPFS_PATH/blocks" -type f | sort_rand | head -n 1)
28 +
29 + test_expect_success "back up file and overwrite it" '
30 + cp "$to_break" backup_file &&
31 + echo "this is super broken" > "$to_break"
32 + '
33 +
34 + test_expect_success "repo verify detects failure" '
35 + test_expect_code 1 ipfs repo verify
36 + '
37 +
38 + test_expect_success "replace the object" '
39 + cp backup_file "$to_break"
40 + '
41 +
42 + test_expect_success "ipfs repo verify passes just fine now" '
43 + ipfs repo verify
44 + '
45 +}
46 +
47 +test_expect_success "create some files" '
48 + random-files -depth=3 -dirs=4 -files=10 foobar > /dev/null
49 +'
50 +
51 +test_expect_success "add them all" '
52 + ipfs add -r -q foobar > /dev/null
53 +'
54 +
55 +for i in `seq 20`
56 +do
57 + check_random_corruption
58 +done
59 +
60 +test_done