tools/mpremote/tests: Add tests for 'fs tree' command.
Signed-off-by: Jos Verlinde <jos_verlinde@hotmail.com>
This commit is contained in:
committed by
Damien George
parent
1dfb5092fc
commit
d945316432
@@ -237,3 +237,6 @@ echo -----
|
||||
# try to delete existing folder in mounted filesystem
|
||||
$MPREMOTE mount "${TMP}" + rm -rv :package || echo "expect error"
|
||||
echo -----
|
||||
# fs without command should raise error
|
||||
$MPREMOTE fs 2>/dev/null || echo "expect error: $?"
|
||||
echo -----
|
||||
|
||||
@@ -272,3 +272,5 @@ rm :package
|
||||
mpremote: rm -r not permitted on /remote directory
|
||||
expect error
|
||||
-----
|
||||
expect error: 2
|
||||
-----
|
||||
|
||||
114
tools/mpremote/tests/test_fs_tree.sh
Executable file
114
tools/mpremote/tests/test_fs_tree.sh
Executable file
@@ -0,0 +1,114 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Creates a RAM disk big enough to hold two copies of the test directory
|
||||
# structure.
|
||||
cat << EOF > "${TMP}/ramdisk.py"
|
||||
class RAMBlockDev:
|
||||
def __init__(self, block_size, num_blocks):
|
||||
self.block_size = block_size
|
||||
self.data = bytearray(block_size * num_blocks)
|
||||
|
||||
def readblocks(self, block_num, buf):
|
||||
for i in range(len(buf)):
|
||||
buf[i] = self.data[block_num * self.block_size + i]
|
||||
|
||||
def writeblocks(self, block_num, buf):
|
||||
for i in range(len(buf)):
|
||||
self.data[block_num * self.block_size + i] = buf[i]
|
||||
|
||||
def ioctl(self, op, arg):
|
||||
if op == 4: # get number of blocks
|
||||
return len(self.data) // self.block_size
|
||||
if op == 5: # get block size
|
||||
return self.block_size
|
||||
|
||||
import os
|
||||
|
||||
bdev = RAMBlockDev(512, 50)
|
||||
os.VfsFat.mkfs(bdev)
|
||||
os.mount(bdev, '/ramdisk')
|
||||
os.chdir('/ramdisk')
|
||||
EOF
|
||||
|
||||
# setup
|
||||
echo -----
|
||||
$MPREMOTE run "${TMP}/ramdisk.py"
|
||||
$MPREMOTE resume ls
|
||||
|
||||
echo -----
|
||||
echo "empty tree"
|
||||
$MPREMOTE resume tree :
|
||||
|
||||
echo -----
|
||||
$MPREMOTE resume touch :a.py + touch :b.py
|
||||
$MPREMOTE resume mkdir :foo + touch :foo/aa.py + touch :foo/ba.py
|
||||
|
||||
echo "small tree - :"
|
||||
$MPREMOTE resume tree :
|
||||
|
||||
echo -----
|
||||
echo "no path"
|
||||
$MPREMOTE resume tree
|
||||
|
||||
echo -----
|
||||
echo "path = '.'"
|
||||
$MPREMOTE resume tree .
|
||||
|
||||
echo -----
|
||||
echo "path = ':.'"
|
||||
$MPREMOTE resume tree :.
|
||||
|
||||
|
||||
echo -----
|
||||
echo "multiple trees"
|
||||
$MPREMOTE resume mkdir :bar + touch :bar/aaa.py + touch :bar/bbbb.py
|
||||
$MPREMOTE resume mkdir :bar/baz + touch :bar/baz/aaa.py + touch :bar/baz/bbbb.py
|
||||
$MPREMOTE resume mkdir :bar/baz/quux + touch :bar/baz/quux/aaa.py + touch :bar/baz/quux/bbbb.py
|
||||
$MPREMOTE resume mkdir :bar/baz/quux/xen + touch :bar/baz/quux/xen/aaa.py
|
||||
|
||||
$MPREMOTE resume tree
|
||||
|
||||
echo -----
|
||||
echo single path
|
||||
$MPREMOTE resume tree :foo
|
||||
|
||||
echo -----
|
||||
echo "multiple paths"
|
||||
$MPREMOTE resume tree :foo :bar
|
||||
|
||||
echo -----
|
||||
echo "subtree"
|
||||
$MPREMOTE resume tree bar/baz
|
||||
|
||||
echo -----
|
||||
echo mountpoint
|
||||
$MPREMOTE resume tree :/ramdisk
|
||||
|
||||
echo -----
|
||||
echo non-existent folder : error
|
||||
$MPREMOTE resume tree :not_there || echo "expect error: $?"
|
||||
|
||||
echo -----
|
||||
echo file : error
|
||||
$MPREMOTE resume tree :a.py || echo "expect error: $?"
|
||||
|
||||
echo -----
|
||||
echo "tree -s :"
|
||||
mkdir -p "${TMP}/data"
|
||||
dd if=/dev/zero of="${TMP}/data/file1.txt" bs=1 count=20 > /dev/null 2>&1
|
||||
dd if=/dev/zero of="${TMP}/data/file2.txt" bs=1 count=204 > /dev/null 2>&1
|
||||
dd if=/dev/zero of="${TMP}/data/file3.txt" bs=1 count=1096 > /dev/null 2>&1
|
||||
dd if=/dev/zero of="${TMP}/data/file4.txt" bs=1 count=2192 > /dev/null 2>&1
|
||||
|
||||
$MPREMOTE resume cp -r "${TMP}/data" :
|
||||
$MPREMOTE resume tree -s :
|
||||
echo -----
|
||||
echo "tree -s"
|
||||
$MPREMOTE resume tree -s
|
||||
echo -----
|
||||
$MPREMOTE resume tree --human :
|
||||
echo -----
|
||||
$MPREMOTE resume tree -s --human : || echo "expect error: $?"
|
||||
echo -----
|
||||
|
||||
225
tools/mpremote/tests/test_fs_tree.sh.exp
Normal file
225
tools/mpremote/tests/test_fs_tree.sh.exp
Normal file
@@ -0,0 +1,225 @@
|
||||
-----
|
||||
ls :
|
||||
-----
|
||||
empty tree
|
||||
tree :
|
||||
:/ramdisk
|
||||
-----
|
||||
touch :a.py
|
||||
touch :b.py
|
||||
mkdir :foo
|
||||
touch :foo/aa.py
|
||||
touch :foo/ba.py
|
||||
small tree - :
|
||||
tree :
|
||||
:/ramdisk
|
||||
├── a.py
|
||||
├── b.py
|
||||
└── foo
|
||||
├── aa.py
|
||||
└── ba.py
|
||||
-----
|
||||
no path
|
||||
tree :
|
||||
:/ramdisk
|
||||
├── a.py
|
||||
├── b.py
|
||||
└── foo
|
||||
├── aa.py
|
||||
└── ba.py
|
||||
-----
|
||||
path = '.'
|
||||
tree :.
|
||||
:/ramdisk
|
||||
├── a.py
|
||||
├── b.py
|
||||
└── foo
|
||||
├── aa.py
|
||||
└── ba.py
|
||||
-----
|
||||
path = ':.'
|
||||
tree :.
|
||||
:/ramdisk
|
||||
├── a.py
|
||||
├── b.py
|
||||
└── foo
|
||||
├── aa.py
|
||||
└── ba.py
|
||||
-----
|
||||
multiple trees
|
||||
mkdir :bar
|
||||
touch :bar/aaa.py
|
||||
touch :bar/bbbb.py
|
||||
mkdir :bar/baz
|
||||
touch :bar/baz/aaa.py
|
||||
touch :bar/baz/bbbb.py
|
||||
mkdir :bar/baz/quux
|
||||
touch :bar/baz/quux/aaa.py
|
||||
touch :bar/baz/quux/bbbb.py
|
||||
mkdir :bar/baz/quux/xen
|
||||
touch :bar/baz/quux/xen/aaa.py
|
||||
tree :
|
||||
:/ramdisk
|
||||
├── a.py
|
||||
├── b.py
|
||||
├── bar
|
||||
│ ├── aaa.py
|
||||
│ ├── baz
|
||||
│ │ ├── aaa.py
|
||||
│ │ ├── bbbb.py
|
||||
│ │ └── quux
|
||||
│ │ ├── aaa.py
|
||||
│ │ ├── bbbb.py
|
||||
│ │ └── xen
|
||||
│ │ └── aaa.py
|
||||
│ └── bbbb.py
|
||||
└── foo
|
||||
├── aa.py
|
||||
└── ba.py
|
||||
-----
|
||||
single path
|
||||
tree :foo
|
||||
:foo
|
||||
├── aa.py
|
||||
└── ba.py
|
||||
-----
|
||||
multiple paths
|
||||
tree :foo
|
||||
:foo
|
||||
├── aa.py
|
||||
└── ba.py
|
||||
tree :bar
|
||||
:bar
|
||||
├── aaa.py
|
||||
├── baz
|
||||
│ ├── aaa.py
|
||||
│ ├── bbbb.py
|
||||
│ └── quux
|
||||
│ ├── aaa.py
|
||||
│ ├── bbbb.py
|
||||
│ └── xen
|
||||
│ └── aaa.py
|
||||
└── bbbb.py
|
||||
-----
|
||||
subtree
|
||||
tree :bar/baz
|
||||
:bar/baz
|
||||
├── aaa.py
|
||||
├── bbbb.py
|
||||
└── quux
|
||||
├── aaa.py
|
||||
├── bbbb.py
|
||||
└── xen
|
||||
└── aaa.py
|
||||
-----
|
||||
mountpoint
|
||||
tree :/ramdisk
|
||||
:/ramdisk
|
||||
├── a.py
|
||||
├── b.py
|
||||
├── bar
|
||||
│ ├── aaa.py
|
||||
│ ├── baz
|
||||
│ │ ├── aaa.py
|
||||
│ │ ├── bbbb.py
|
||||
│ │ └── quux
|
||||
│ │ ├── aaa.py
|
||||
│ │ ├── bbbb.py
|
||||
│ │ └── xen
|
||||
│ │ └── aaa.py
|
||||
│ └── bbbb.py
|
||||
└── foo
|
||||
├── aa.py
|
||||
└── ba.py
|
||||
-----
|
||||
non-existent folder : error
|
||||
tree :not_there
|
||||
mpremote: tree: 'not_there' is not a directory
|
||||
expect error: 1
|
||||
-----
|
||||
file : error
|
||||
tree :a.py
|
||||
mpremote: tree: 'a.py' is not a directory
|
||||
expect error: 1
|
||||
-----
|
||||
tree -s :
|
||||
cp ${TMP}/data :
|
||||
tree :
|
||||
:/ramdisk
|
||||
├── [ 0] a.py
|
||||
├── [ 0] b.py
|
||||
├── bar
|
||||
│ ├── [ 0] aaa.py
|
||||
│ ├── baz
|
||||
│ │ ├── [ 0] aaa.py
|
||||
│ │ ├── [ 0] bbbb.py
|
||||
│ │ └── quux
|
||||
│ │ ├── [ 0] aaa.py
|
||||
│ │ ├── [ 0] bbbb.py
|
||||
│ │ └── xen
|
||||
│ │ └── [ 0] aaa.py
|
||||
│ └── [ 0] bbbb.py
|
||||
├── data
|
||||
│ ├── [ 20] file1.txt
|
||||
│ ├── [ 204] file2.txt
|
||||
│ ├── [ 1096] file3.txt
|
||||
│ └── [ 2192] file4.txt
|
||||
└── foo
|
||||
├── [ 0] aa.py
|
||||
└── [ 0] ba.py
|
||||
-----
|
||||
tree -s
|
||||
tree :
|
||||
:/ramdisk
|
||||
├── [ 0] a.py
|
||||
├── [ 0] b.py
|
||||
├── bar
|
||||
│ ├── [ 0] aaa.py
|
||||
│ ├── baz
|
||||
│ │ ├── [ 0] aaa.py
|
||||
│ │ ├── [ 0] bbbb.py
|
||||
│ │ └── quux
|
||||
│ │ ├── [ 0] aaa.py
|
||||
│ │ ├── [ 0] bbbb.py
|
||||
│ │ └── xen
|
||||
│ │ └── [ 0] aaa.py
|
||||
│ └── [ 0] bbbb.py
|
||||
├── data
|
||||
│ ├── [ 20] file1.txt
|
||||
│ ├── [ 204] file2.txt
|
||||
│ ├── [ 1096] file3.txt
|
||||
│ └── [ 2192] file4.txt
|
||||
└── foo
|
||||
├── [ 0] aa.py
|
||||
└── [ 0] ba.py
|
||||
-----
|
||||
tree :
|
||||
:/ramdisk
|
||||
├── [ 0] a.py
|
||||
├── [ 0] b.py
|
||||
├── bar
|
||||
│ ├── [ 0] aaa.py
|
||||
│ ├── baz
|
||||
│ │ ├── [ 0] aaa.py
|
||||
│ │ ├── [ 0] bbbb.py
|
||||
│ │ └── quux
|
||||
│ │ ├── [ 0] aaa.py
|
||||
│ │ ├── [ 0] bbbb.py
|
||||
│ │ └── xen
|
||||
│ │ └── [ 0] aaa.py
|
||||
│ └── [ 0] bbbb.py
|
||||
├── data
|
||||
│ ├── [ 20] file1.txt
|
||||
│ ├── [ 204] file2.txt
|
||||
│ ├── [ 1.1K] file3.txt
|
||||
│ └── [ 2.1K] file4.txt
|
||||
└── foo
|
||||
├── [ 0] aa.py
|
||||
└── [ 0] ba.py
|
||||
-----
|
||||
usage: fs [--help] [--recursive | --no-recursive] [--force | --no-force]
|
||||
[--verbose | --no-verbose] [--size | --human]
|
||||
command path [path ...] ...
|
||||
fs: error: argument --human/-h: not allowed with argument --size/-s
|
||||
expect error: 2
|
||||
-----
|
||||
Reference in New Issue
Block a user