losetup.test 1.1 KB

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