view tests/cksum.test @ 1572:da1bf31ed322 draft

Tweak the "ignoring return value" fortify workaround for readlinkat. We zero the buffer and if the link read fails that's left alone, so it's ok for the symlink not to be there. Unfortunately, typecasting the return value to (void) doesn't shut up gcc, and having an if(); with the semicolon on the same line doesn't shut up llvm. (The semicolon on a new line would, but C does not have significant whitespace and I'm not going to humor llvm if it plans to start.) So far, empty curly brackets consistently get the warning to shut up.
author Rob Landley <rob@landley.net>
date Mon, 24 Nov 2014 17:23:23 -0600
parents 8700cbe1cb29
children
line wrap: on
line source

#!/bin/bash

[ -f testing.sh ] && . testing.sh


#testing "name" "command" "result" "infile" "stdin"

# Default behavior on stdin and on files.
testing "cksum on stdin" "echo -n hello | cksum" "3287646509 5\n" "" ""
echo -n "hello" > tmpfile
testing "cksum on file" "cksum tmpfile" "3287646509 5 tmpfile\n" "" ""
rm -f tmpfile
touch one two
testing "cksum on multiple files" "cksum one two" "4294967295 0 one\n4294967295 0 two\n" "" ""
rm -f one two

# Check the length suppression, both calculate the CRC on 'abc' but the second
# option has length suppression on and has the length concatenated to 'abc'.
testing "cksum on abc including length" "echo -n 'abc' | cksum" "1219131554 3\n" "" ""
testing "cksum on abc excluding length" "echo -ne 'abc\x3' | cksum -N" "1219131554 4\n" "" ""

# cksum on no contents gives 0xffffffff (=4294967295)
testing "cksum on no data post-inversion" "echo -n "" | cksum" "4294967295 0\n" "" ""
# If we do preinversion we will then get 0.
testing "cksum on no data pre+post-inversion" "echo -n "" | cksum -P" "0 0\n" "" ""
# If we skip the post-inversion we also get 0
testing "cksum on no data no inversion" "echo -n "" | cksum -I" "0 0\n" "" ""
# Two wrongs make a right.
testing "cksum on no data pre-inversion" "echo -n "" | cksum -PI" "4294967295 0\n" "" ""