xref: /openbsd/regress/usr.bin/mail/send.sh (revision d415bd75)
1#!/bin/sh
2#
3# $OpenBSD: send.sh,v 1.5 2021/09/02 07:14:15 jasper Exp $
4#
5# Copyright (c) 2017 Anton Lindqvist <anton@openbsd.org>
6#
7# Permission to use, copy, modify, and distribute this software for any
8# purpose with or without fee is hereby granted, provided that the above
9# copyright notice and this permission notice appear in all copies.
10#
11# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18
19testseq() {
20	stdin=$1
21	exp=$(echo "$2")
22	act=$(echo -n "$stdin" | ./edit -p 'Subject: ' mail -En unknown)
23	[ $? = 0 ] && [ "$exp" = "$act" ] && return 0
24
25	echo input:
26	echo ">>>${stdin}<<<"
27	echo -n "$stdin" | hexdump -C
28	echo expected:
29	echo ">>>${exp}<<<"
30	echo -n "$exp" | hexdump -C
31	echo actual:
32	echo ">>>${act}<<<"
33	echo -n "$act" | hexdump -C
34
35	exit 1
36}
37
38# Create a fake HOME with a minimal .mailrc.
39tmp=$(mktemp -d)
40trap 'rm -r $tmp' 0
41cat >$tmp/.mailrc <<!
42set ask
43!
44
45HOME=$tmp
46export HOME
47
48# VERASE: Delete character.
49testseq "\0177" "Subject: "
50testseq "a\0177" "Subject: a\b \b"
51
52# VINTR: Kill letter.
53testseq "\0003" \
54	"Subject: ^C\r\n(Interrupt -- one more to kill letter)\r\nSubject: "
55
56# VKILL: Kill line.
57testseq "\0025" "Subject: "
58testseq "ab\0025" "Subject: ab\b\b  \b\b"
59
60# VWERASE: Delete word.
61testseq "\0027" "Subject: "
62testseq "ab\0027" "Subject: ab\b\b  \b\b"
63testseq "ab cd\0027\0027" "Subject: ab cd\b\b  \b\b\b\b\b   \b\b\b"
64