1*cf5a6c84SAndroid Build Coastguard Worker#!/bin/bash 2*cf5a6c84SAndroid Build Coastguard Worker 3*cf5a6c84SAndroid Build Coastguard Worker# Copyright 2013 Robin Mittal <[email protected]> 4*cf5a6c84SAndroid Build Coastguard Worker# Copyright 2013 Divya Kothari <[email protected]> 5*cf5a6c84SAndroid Build Coastguard Worker 6*cf5a6c84SAndroid Build Coastguard Worker[ -f testing.sh ] && . testing.sh 7*cf5a6c84SAndroid Build Coastguard Worker 8*cf5a6c84SAndroid Build Coastguard Worker#testing "name" "command" "result" "infile" "stdin" 9*cf5a6c84SAndroid Build Coastguard Worker#set -x 10*cf5a6c84SAndroid Build Coastguard Worker 11*cf5a6c84SAndroid Build Coastguard Workerecho file1 > file 12*cf5a6c84SAndroid Build Coastguard Workertesting "create_hardlink" "ln file hlink && [ file -ef hlink ] && 13*cf5a6c84SAndroid Build Coastguard Worker echo 'yes'" "yes\n" "" "" 14*cf5a6c84SAndroid Build Coastguard Workertesting "create_softlink" "ln -s file slink && [ -L slink ] && 15*cf5a6c84SAndroid Build Coastguard Worker readlink slink" "file\n" "" "" 16*cf5a6c84SAndroid Build Coastguard Workerrm slink hlink 17*cf5a6c84SAndroid Build Coastguard Worker 18*cf5a6c84SAndroid Build Coastguard Workerecho hlink1 > hlink 19*cf5a6c84SAndroid Build Coastguard Workertesting "force_create_hardlink" "ln -f file hlink && 20*cf5a6c84SAndroid Build Coastguard Worker [ file -ef hlink ] && cat hlink 2>/dev/null" "file1\n" "" "" 21*cf5a6c84SAndroid Build Coastguard Worker 22*cf5a6c84SAndroid Build Coastguard Workerecho slink1 > slink 23*cf5a6c84SAndroid Build Coastguard Workertesting "force_create_symlink" "ln -f -s file slink && 24*cf5a6c84SAndroid Build Coastguard Worker [ -L slink ] && readlink slink" "file\n" "" "" 25*cf5a6c84SAndroid Build Coastguard Workerrm slink hlink 26*cf5a6c84SAndroid Build Coastguard Worker 27*cf5a6c84SAndroid Build Coastguard Workerecho hlink1 > hlink 28*cf5a6c84SAndroid Build Coastguard Workerset +e 29*cf5a6c84SAndroid Build Coastguard Workertesting "preserves_hardlinks" "ln file hlink 2>/dev/null || echo 'yes'" \ 30*cf5a6c84SAndroid Build Coastguard Worker "yes\n" "" "" 31*cf5a6c84SAndroid Build Coastguard Worker 32*cf5a6c84SAndroid Build Coastguard Workerecho slink1 > slink 33*cf5a6c84SAndroid Build Coastguard Workerset +e 34*cf5a6c84SAndroid Build Coastguard Workertesting "preserves_symlinks" "ln -s file slink 2>/dev/null || echo 'yes'" \ 35*cf5a6c84SAndroid Build Coastguard Worker "yes\n" "" "" 36*cf5a6c84SAndroid Build Coastguard Workerrm slink hlink 37*cf5a6c84SAndroid Build Coastguard Worker 38*cf5a6c84SAndroid Build Coastguard Workermkdir dir 39*cf5a6c84SAndroid Build Coastguard Workertesting "multilevel_symbolic_links" "ln -s dir slink && 40*cf5a6c84SAndroid Build Coastguard Worker ln -s file slink && [ -L slink -a -L slink/file ] && 41*cf5a6c84SAndroid Build Coastguard Worker readlink slink && readlink slink/file" "dir\nfile\n" "" "" 42*cf5a6c84SAndroid Build Coastguard Workerrm slink 43*cf5a6c84SAndroid Build Coastguard Worker 44*cf5a6c84SAndroid Build Coastguard Workertesting "no_dereference" "ln -s dir slink && 45*cf5a6c84SAndroid Build Coastguard Worker ln -n -s file slink 2>/dev/null || [ -L slink ] && readlink slink" \ 46*cf5a6c84SAndroid Build Coastguard Worker "dir\n" "" "" 47*cf5a6c84SAndroid Build Coastguard Workerrm slink 48*cf5a6c84SAndroid Build Coastguard Worker 49*cf5a6c84SAndroid Build Coastguard Workertesting "-T acts like -n" "ln -s dir slink && 50*cf5a6c84SAndroid Build Coastguard Worker ln -Tsf file slink || [ -L slink ] && readlink slink" "file\n" "" "" 51*cf5a6c84SAndroid Build Coastguard Workerrm slink 52*cf5a6c84SAndroid Build Coastguard Worker 53*cf5a6c84SAndroid Build Coastguard Workertesting "-T with dir" "ln -Ts file dir 2>/dev/null || echo yes" "yes\n" "" "" 54*cf5a6c84SAndroid Build Coastguard Workerrm -rf file dir slink 55*cf5a6c84SAndroid Build Coastguard Worker 56*cf5a6c84SAndroid Build Coastguard Workertesting "-t" "ln -st . one/two three && readlink two three" "one/two\nthree\n" \ 57*cf5a6c84SAndroid Build Coastguard Worker "" "" 58*cf5a6c84SAndroid Build Coastguard Workerrm -f two three 59*cf5a6c84SAndroid Build Coastguard Worker 60*cf5a6c84SAndroid Build Coastguard Workertouch file1 file2 && mkdir dir 61*cf5a6c84SAndroid Build Coastguard Workertesting "create_multiple_hardlinks" "ln file* dir/ && 62*cf5a6c84SAndroid Build Coastguard Worker [ file1 -ef dir/file1 -a file2 -ef dir/file2 ] && echo 'yes'" "yes\n" "" "" 63*cf5a6c84SAndroid Build Coastguard Workerrm -rf file* dir 64*cf5a6c84SAndroid Build Coastguard Worker 65*cf5a6c84SAndroid Build Coastguard Workertouch file1 file2 && mkdir dir 66*cf5a6c84SAndroid Build Coastguard Workertesting "create_multiple_softlinks" "ln -s file* dir/ && 67*cf5a6c84SAndroid Build Coastguard Worker [ -L dir/file1 -a -L dir/file2 ] && readlink dir/file1 && 68*cf5a6c84SAndroid Build Coastguard Worker readlink dir/file2" "file1\nfile2\n" "" "" 69*cf5a6c84SAndroid Build Coastguard Workerrm -rf file* dir 70*cf5a6c84SAndroid Build Coastguard Worker 71*cf5a6c84SAndroid Build Coastguard Workerecho file1 > file 72*cf5a6c84SAndroid Build Coastguard Workertesting "create_softlink_and_remove_sourcefile" "ln -s file slink && 73*cf5a6c84SAndroid Build Coastguard Worker [ -L slink ] && rm file && cat slink 2>/dev/null || echo 'yes' " \ 74*cf5a6c84SAndroid Build Coastguard Worker "yes\n" "" "" 75*cf5a6c84SAndroid Build Coastguard Workerrm -f file slink 76*cf5a6c84SAndroid Build Coastguard Worker 77*cf5a6c84SAndroid Build Coastguard Workerecho file1 > file 78*cf5a6c84SAndroid Build Coastguard Workertesting "create_hardlink_and_remove_sourcefile" "ln file hlink && 79*cf5a6c84SAndroid Build Coastguard Worker [ file -ef hlink ] && rm file && [ -f hlink ] && echo 'yes'" \ 80*cf5a6c84SAndroid Build Coastguard Worker "yes\n" "" "" 81*cf5a6c84SAndroid Build Coastguard Workerrm -f file hlink 82*cf5a6c84SAndroid Build Coastguard Worker 83*cf5a6c84SAndroid Build Coastguard Workermkdir -p one/two 84*cf5a6c84SAndroid Build Coastguard Workerln -s . circular 85*cf5a6c84SAndroid Build Coastguard Workermkdir -p three 86*cf5a6c84SAndroid Build Coastguard Workerecho hello > three/four 87*cf5a6c84SAndroid Build Coastguard Workertesting "ln -r" \ 88*cf5a6c84SAndroid Build Coastguard Worker "ln -sr circular/three/../three/four one/two/five && cat one/two/five" \ 89*cf5a6c84SAndroid Build Coastguard Worker "hello\n" "" "" 90*cf5a6c84SAndroid Build Coastguard Workerrm -rf one three circular 91