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" ""