1*cf5a6c84SAndroid Build Coastguard Worker#!/bin/bash 2*cf5a6c84SAndroid Build Coastguard Worker 3*cf5a6c84SAndroid Build Coastguard Worker[ -f testing.sh ] && . testing.sh 4*cf5a6c84SAndroid Build Coastguard Worker 5*cf5a6c84SAndroid Build Coastguard Workerif [ "$(id -u)" -ne 0 ]; then 6*cf5a6c84SAndroid Build Coastguard Worker echo "$SHOWSKIP: losetup (not root)" 7*cf5a6c84SAndroid Build Coastguard Worker return 2>/dev/null 8*cf5a6c84SAndroid Build Coastguard Worker exit 9*cf5a6c84SAndroid Build Coastguard Workerfi 10*cf5a6c84SAndroid Build Coastguard Worker 11*cf5a6c84SAndroid Build Coastguard Workerif [ "$(losetup -a | wc -l)" -ne 0 ]; then 12*cf5a6c84SAndroid Build Coastguard Worker echo "$SHOWSKIP: losetup (devices already in use)" 13*cf5a6c84SAndroid Build Coastguard Worker return 2>/dev/null 14*cf5a6c84SAndroid Build Coastguard Worker exit 15*cf5a6c84SAndroid Build Coastguard Workerfi 16*cf5a6c84SAndroid Build Coastguard Worker 17*cf5a6c84SAndroid Build Coastguard Worker# Android's loopback devices are only in /dev/block/loop*. 18*cf5a6c84SAndroid Build Coastguard Worker# Debian has symlinks like /dev/block/7:0 back to ../loop*. 19*cf5a6c84SAndroid Build Coastguard Workerif [ -b /dev/block/sda ]; then 20*cf5a6c84SAndroid Build Coastguard Worker DIR="/dev/block" # Presumably Android. 21*cf5a6c84SAndroid Build Coastguard Workerelse 22*cf5a6c84SAndroid Build Coastguard Worker DIR="/dev" 23*cf5a6c84SAndroid Build Coastguard Workerfi 24*cf5a6c84SAndroid Build Coastguard Worker 25*cf5a6c84SAndroid Build Coastguard Worker#testing "name" "command" "result" "infile" "stdin" 26*cf5a6c84SAndroid Build Coastguard Worker 27*cf5a6c84SAndroid Build Coastguard Workertruncate -s 1M blah.img && 28*cf5a6c84SAndroid Build Coastguard WorkerFILE="$(readlink -f blah.img)" 29*cf5a6c84SAndroid Build Coastguard WorkerDEV="$(stat --format %d blah.img)" 30*cf5a6c84SAndroid Build Coastguard WorkerNODE="$(stat --format %i blah.img)" 31*cf5a6c84SAndroid Build Coastguard Worker 32*cf5a6c84SAndroid Build Coastguard Worker# TODO: assumes there are no loopback devices! 33*cf5a6c84SAndroid Build Coastguard Workertestcmd "-f" "-f" "$DIR/loop0\n" "" "" 34*cf5a6c84SAndroid Build Coastguard Workertestcmd "-f blah.img" "-f blah.img" "" "" "" 35*cf5a6c84SAndroid Build Coastguard Workertestcmd "-f --show" "-f --show blah.img" "$DIR/loop1\n" "" "" 36*cf5a6c84SAndroid Build Coastguard Workertestcmd "-a" "-a | sort" \ 37*cf5a6c84SAndroid Build Coastguard Worker "$DIR/loop0: [$DEV]:$NODE ($FILE)\n$DIR/loop1: [$DEV]:$NODE ($FILE)\n" "" "" 38*cf5a6c84SAndroid Build Coastguard Workertestcmd "-d $DIR/loop0" "-d $DIR/loop0 && losetup -a" \ 39*cf5a6c84SAndroid Build Coastguard Worker "$DIR/loop1: [$DEV]:$NODE ($FILE)\n" "" "" 40*cf5a6c84SAndroid Build Coastguard Workertestcmd "-D" "-D && losetup -a" "" "" "" 41*cf5a6c84SAndroid Build Coastguard Worker 42*cf5a6c84SAndroid Build Coastguard Workerrm blah.img 43