Mercurial > hg > toybox
view scripts/test/expand.test @ 1087:b73a61542297 draft
I've finally gotten 'cpio' into a shape where it could be useable.
This version can archive and extract directories, sockets, FIFOs, devices,
symlinks, and regular files.
Supported options are -iot, -H FMT (which is a dummy right now).
It only writes newc, and could read newc or newcrc.
This does NOT implement -d, which essentially is equivalent to
mkdir -p $(dirname $FILE)
for every file that needs it.
Hard links are not supported, though it would be easy to add them given
a hash table or something like that.
I also have not implemented the "<n> blocks" output on stderr.
If desired, I can add it pretty simply.
There is one assumption this makes: that the mode of a file, as mode_t,
is bitwise equivalent to the mode as defined for the cpio format.
This is true of Linux, but is not mandated by POSIX.
If it is compiled for a system where that is false, the archives will
not be portable.
author | Isaac Dunham <ibid.ag@gmail.com> |
---|---|
date | Mon, 14 Oct 2013 11:15:22 -0500 |
parents | 2818724bb8be |
children |
line wrap: on
line source
#!/bin/bash # POSIX 2008 compliant expand tests. # Copyright 2012 by Jonathan Clairembault <jonathan@clairembault.fr> [ -f testing.sh ] && . testing.sh # some basic tests testing "expand default" "expand input" " foo bar\n" "\tfoo\tbar\n" "" testing "expand default stdin" "expand" " foo bar\n" "" "\tfoo\tbar\n" testing "expand single" "expand -t 2 input" " foo bar\n" "\tfoo\tbar\n" "" testing "expand tablist" "expand -t 5,10,12 input" " foo bar foo\n" "\tfoo\tbar\tfoo\n" "" testing "expand backspace" "expand input" "foobarfoo\b\b bar\n" "foobarfoo\b\b\tbar\n" "" # advanced tests POW=15 TABSTOP=1 BIGTAB=" " for i in $(seq $POW); do BIGTAB=$BIGTAB$BIGTAB TABSTOP=$[$TABSTOP*2] done testing "expand long tab single" "expand -t $TABSTOP input" "${BIGTAB}foo\n" "\tfoo\n" "" testing "expand long tab tablist" "expand -t $TABSTOP,$[TABSTOP+5] input" \ "${BIGTAB}foo bar\n" "\tfoo\tbar\n" "" testing "expand multiline single" "expand -t 4 input" "foo \n bar\n" "foo\t\n\tbar\n" "" testing "expand multiline tablist" "expand -t 4,8 input" \ "foo bar\n bar foo\n" "foo\t\tbar\n\tbar\tfoo\n" "" POW=15 BIGLINE="foo " for i in $(seq $POW); do BIGLINE=$BIGLINE$BIGLINE done if [ $POW -gt 0 ]; then EXPANDLINE="${BIGLINE} foo\n" else EXPANDLINE="${BIGLINE} foo\n" fi BIGLINE="${BIGLINE}\tfoo\n" testing "expand long line single" "expand input" \ "${EXPANDLINE}" "$BIGLINE" ""