17c2fbfb3SApril Chin#
27c2fbfb3SApril Chin# CDDL HEADER START
37c2fbfb3SApril Chin#
47c2fbfb3SApril Chin# The contents of this file are subject to the terms of the
57c2fbfb3SApril Chin# Common Development and Distribution License (the "License").
67c2fbfb3SApril Chin# You may not use this file except in compliance with the License.
77c2fbfb3SApril Chin#
87c2fbfb3SApril Chin# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
97c2fbfb3SApril Chin# or http://www.opensolaris.org/os/licensing.
107c2fbfb3SApril Chin# See the License for the specific language governing permissions
117c2fbfb3SApril Chin# and limitations under the License.
127c2fbfb3SApril Chin#
137c2fbfb3SApril Chin# When distributing Covered Code, include this CDDL HEADER in each
147c2fbfb3SApril Chin# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
157c2fbfb3SApril Chin# If applicable, add the following below this CDDL HEADER, with the
167c2fbfb3SApril Chin# fields enclosed by brackets "[]" replaced with your own identifying
177c2fbfb3SApril Chin# information: Portions Copyright [yyyy] [name of copyright owner]
187c2fbfb3SApril Chin#
197c2fbfb3SApril Chin# CDDL HEADER END
207c2fbfb3SApril Chin#
217c2fbfb3SApril Chin
227c2fbfb3SApril Chin#
233e14f97fSRoger A. Faulkner# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
247c2fbfb3SApril Chin#
257c2fbfb3SApril Chin
267c2fbfb3SApril Chin#
277c2fbfb3SApril Chin# Test whether the ksh93/libcmd sum builtin is compatible to
287c2fbfb3SApril Chin# Solaris/SystemV /usr/bin/sum
297c2fbfb3SApril Chin#
307c2fbfb3SApril Chin
3134f9b3eeSRoland Mainz# test setup
327c2fbfb3SApril Chinfunction err_exit
337c2fbfb3SApril Chin{
347c2fbfb3SApril Chin	print -u2 -n "\t"
357c2fbfb3SApril Chin	print -u2 -r ${Command}[$1]: "${@:2}"
363e14f97fSRoger A. Faulkner	(( Errors < 127 && Errors++ ))
377c2fbfb3SApril Chin}
387c2fbfb3SApril Chinalias err_exit='err_exit $LINENO'
397c2fbfb3SApril Chin
4034f9b3eeSRoland Mainzset -o nounset
417c2fbfb3SApril ChinCommand=${0##*/}
427c2fbfb3SApril Chininteger Errors=0
437c2fbfb3SApril Chin
4434f9b3eeSRoland Mainz
457c2fbfb3SApril Chintypeset x
467c2fbfb3SApril Chin
477c2fbfb3SApril Chinbuiltin sum || err_exit "sum builtin not found"
487c2fbfb3SApril Chin
497c2fbfb3SApril Chin# Basic tests
507c2fbfb3SApril Chinx="$(print 'hello' | /usr/bin/sum)" || err_exit "/usr/bin/sum pipe failed."
517c2fbfb3SApril Chin[[ "$x" == "542 1" ]] || err_exit "print 'hello' | /usr/bin/sum did not return 542 1, got $x"
527c2fbfb3SApril Chinx="$(print 'hello' | sum)" || err_exit "sum builtin pipe failed."
537c2fbfb3SApril Chin[[ "$x" == "542 1" ]] || err_exit "print 'hello' | sum builtin did not return 542 1, got $x"
547c2fbfb3SApril Chinx="$(print 'hello' | sum -x md5)" || err_exit "sum md5 builtin pipe failed."
557c2fbfb3SApril Chin[[ "$x" == "b1946ac92492d2347c6235b4d2611184" ]] || err_exit "print 'hello' | sum md5 builtin did not return b1946ac92492d2347c6235b4d2611184, got $x"
567c2fbfb3SApril Chinx="$(print 'hello' | sum -x sha1)" || err_exit "sum sha1 builtin pipe failed."
577c2fbfb3SApril Chin[[ "$x" == "f572d396fae9206628714fb2ce00f72e94f2258f" ]] || err_exit "print 'hello' | sum sha1 builtin did not return f572d396fae9206628714fb2ce00f72e94f2258f, got $x"
587c2fbfb3SApril Chinx="$(print 'hello' | sum -x sha256)" || err_exit "sum sha256 builtin pipe failed."
597c2fbfb3SApril Chin[[ "$x" == "5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03" ]] || err_exit "print 'hello' | sum sha256 builtin did not return 5891b5b522d5df086d0ff0b110fbd9d21bb4fc7163af34d08286a2e846f6be03, got $x"
607c2fbfb3SApril Chinx="$(print 'hello' | sum -x sha512)" || err_exit "sum sha512 builtin pipe failed."
617c2fbfb3SApril Chin[[ "$x" == "e7c22b994c59d9cf2b48e549b1e24666636045930d3da7c1acb299d1c3b7f931f94aae41edda2c2b207a36e10f8bcb8d45223e54878f5b316e7ce3b6bc019629" ]] || err_exit "print 'hello' | sum sha512 builtin did not return e7c22b994c59d9cf2b48e549b1e24666636045930d3da7c1acb299d1c3b7f931f94aae41edda2c2b207a36e10f8bcb8d45223e54878f5b316e7ce3b6bc019629, got $x"
627c2fbfb3SApril Chin# note that Solaris /usr/bin/cksum outputs $'3015617425\t6' (which may be a bug in Solaris /usr/bin/cksum)
637c2fbfb3SApril Chinx="$(print 'hello' | sum -x cksum)" || err_exit "sum cksum builtin pipe failed."
647c2fbfb3SApril Chin[[ "$x" == $'3015617425 6' ]] || err_exit "print 'hello' | sum cksum builtin did not return \$'3015617425 6', got $(printf "%q\n" "$x")"
657c2fbfb3SApril Chin
667c2fbfb3SApril Chin[[ "$(print 'hello'	| /usr/bin/sum)" == "$(print 'hello'	 | sum)" ]] || err_exit "sum hello != /usr/bin/sum hello"
677c2fbfb3SApril Chin[[ "$(print 'fish' 	| /usr/bin/sum)" == "$(print 'fish'	 | sum)" ]] || err_exit "sum fish != /usr/bin/sum fish"
687c2fbfb3SApril Chin[[ "$(print '12345'	| /usr/bin/sum)" == "$(print '12345'	 | sum)" ]] || err_exit "sum 12345 != /usr/bin/sum 12345"
697c2fbfb3SApril Chin[[ "$(print '\n\r\n \v'	| /usr/bin/sum)" == "$(print '\n\r\n \v' | sum)" ]] || err_exit "sum spaces != /usr/bin/sum spaces"
707c2fbfb3SApril Chin
717c2fbfb3SApril Chin# Test some binary files...
727c2fbfb3SApril Chinx="/usr/bin/ls"
737c2fbfb3SApril Chin[[ "$(cat "$x" | /usr/bin/sum)" == "$(cat "$x" | sum)" ]]	|| err_exit "pipe: /usr/bin/sum $x != sum $x"
747c2fbfb3SApril Chin[[ "$(/usr/bin/sum "$x")" == "$(sum "$x")" ]]			|| err_exit "file: /usr/bin/sum $x != sum $x"
757c2fbfb3SApril Chin
767c2fbfb3SApril Chinx="/usr/bin/chmod"
777c2fbfb3SApril Chin[[ "$(cat "$x" | /usr/bin/sum)" == "$(cat "$x" | sum)" ]]	|| err_exit "pipe: /usr/bin/sum $x != sum $x"
787c2fbfb3SApril Chin[[ "$(/usr/bin/sum "$x")" == "$(sum "$x")" ]]			|| err_exit "file: /usr/bin/sum $x != sum $x"
797c2fbfb3SApril Chin
807c2fbfb3SApril Chinx="/usr/bin/tee"
817c2fbfb3SApril Chin[[ "$(cat "$x" | /usr/bin/sum)" == "$(cat "$x" | sum)" ]]	|| err_exit "pipe: /usr/bin/sum $x != sum $x"
827c2fbfb3SApril Chin[[ "$(/usr/bin/sum "$x")" == "$(sum "$x")" ]]			|| err_exit "file: /usr/bin/sum $x != sum $x"
837c2fbfb3SApril Chin
847c2fbfb3SApril Chinx="/usr/bin/grep"
857c2fbfb3SApril Chin[[ "$(cat "$x" | /usr/bin/sum)" == "$(cat "$x" | sum)" ]]	|| err_exit "pipe: /usr/bin/sum $x != sum $x"
867c2fbfb3SApril Chin[[ "$(/usr/bin/sum "$x")" == "$(sum "$x")" ]]			|| err_exit "file: /usr/bin/sum $x != sum $x"
877c2fbfb3SApril Chin
887c2fbfb3SApril Chinx="/usr/bin/egrep"
897c2fbfb3SApril Chin[[ "$(cat "$x" | /usr/bin/sum)" == "$(cat "$x" | sum)" ]]	|| err_exit "pipe: /usr/bin/sum $x != sum $x"
907c2fbfb3SApril Chin[[ "$(/usr/bin/sum "$x")" == "$(sum "$x")" ]]			|| err_exit "file: /usr/bin/sum $x != sum $x"
917c2fbfb3SApril Chin
927c2fbfb3SApril Chinx="/usr/bin/awk"
937c2fbfb3SApril Chin[[ "$(cat "$x" | /usr/bin/sum)" == "$(cat "$x" | sum)" ]]	|| err_exit "pipe: /usr/bin/sum $x != sum $x"
947c2fbfb3SApril Chin[[ "$(/usr/bin/sum "$x")" == "$(sum "$x")" ]]			|| err_exit "file: /usr/bin/sum $x != sum $x"
957c2fbfb3SApril Chin
967c2fbfb3SApril Chinx="/usr/bin/nawk"
977c2fbfb3SApril Chin[[ "$(cat "$x" | /usr/bin/sum)" == "$(cat "$x" | sum)" ]]	|| err_exit "pipe: /usr/bin/sum $x != sum $x"
987c2fbfb3SApril Chin[[ "$(/usr/bin/sum "$x")" == "$(sum "$x")" ]]			|| err_exit "file: /usr/bin/sum $x != sum $x"
997c2fbfb3SApril Chin
1007c2fbfb3SApril Chinx="/usr/bin/ksh"
1017c2fbfb3SApril Chin[[ "$(cat "$x" | /usr/bin/sum)" == "$(cat "$x" | sum)" ]]	|| err_exit "pipe: /usr/bin/sum $x != sum $x"
1027c2fbfb3SApril Chin[[ "$(/usr/bin/sum "$x")" == "$(sum "$x")" ]]			|| err_exit "file: /usr/bin/sum $x != sum $x"
1037c2fbfb3SApril Chin
1047c2fbfb3SApril Chinx="/usr/bin/sh"
1057c2fbfb3SApril Chin[[ "$(cat "$x" | /usr/bin/sum)" == "$(cat "$x" | sum)" ]]	|| err_exit "pipe: /usr/bin/sum $x != sum $x"
1067c2fbfb3SApril Chin[[ "$(/usr/bin/sum "$x")" == "$(sum "$x")" ]]			|| err_exit "file: /usr/bin/sum $x != sum $x"
1077c2fbfb3SApril Chin
1087c2fbfb3SApril Chin
1097c2fbfb3SApril Chin# tests done
1107c2fbfb3SApril Chinexit $((Errors))
111