Blame test/Gentests.vms

Packit Service f629e6
# Gentests.vms - supplements Gentests to generate tests in vms format
Packit Service f629e6
# gawk -v "VMSTESTS=1" -f Gentests -f Gentests.vms Makefile.am *.awk *.in >Maketests.vms
Packit Service f629e6
Packit Service f629e6
/^FAIL_CODE1 *=/,/[^\\]$/ {
Packit Service f629e6
	gsub(/(^FAIL_CODE1 *=|\\$)/,"")
Packit Service f629e6
	for (i = 1; i <= NF; i++)
Packit Service f629e6
		fail_code1[$i]
Packit Service f629e6
	next
Packit Service f629e6
}
Packit Service f629e6
Packit Service f629e6
END {
Packit Service f629e6
	if (VMSTESTS) vmsepilog()
Packit Service f629e6
}
Packit Service f629e6
Packit Service f629e6
#	wildcard expansion done by gawk's vms_arg_fixup() to simulate shell
Packit Service f629e6
#	globbing produces full filenames:  device:[directory]name.type;#
Packit Service f629e6
#	and by default also forces the value into upper case
Packit Service f629e6
function vmsargvfixup(		i, f)
Packit Service f629e6
{
Packit Service f629e6
	# we're forcing lowercase below; need to override for some files
Packit Service f629e6
	vmscasefixup["makefile.in"] = "Makefile.in"
Packit Service f629e6
Packit Service f629e6
	for (i = 2; i < ARGC; i++) {
Packit Service f629e6
		f = ARGV[i]
Packit Service f629e6
		sub(/^.+[]>]/, "", f)		# strip dev+dir prefix
Packit Service f629e6
		sub(/\;[0-9]+$/, "", f)		# strip version suffix
Packit Service f629e6
		f = tolower(f)
Packit Service f629e6
		if (f in vmscasefixup) f = vmscasefixup[f]
Packit Service f629e6
		ARGV[i] = f
Packit Service f629e6
	}
Packit Service f629e6
Packit Service f629e6
	vmsprolog()		# insert some stuff into the output file
Packit Service f629e6
}
Packit Service f629e6
Packit Service f629e6
#	output sufficient for the simplest tests in vms/vmstest.com
Packit Service f629e6
function vmsgenerate(x,		s, o)
Packit Service f629e6
{
Packit Service f629e6
	# generate a gosub-style subroutine; start with its label
Packit Service f629e6
	printf "$" x ":"
Packit Service f629e6
Packit Service f629e6
	s = ""
Packit Service f629e6
	if (x in lint) {
Packit Service f629e6
		s = s " --lint"
Packit Service f629e6
		delete lint[x]
Packit Service f629e6
	}
Packit Service f629e6
	if (x in lint_old) {
Packit Service f629e6
		s = s " --lint-old"
Packit Service f629e6
		delete lint_old[x]
Packit Service f629e6
	}
Packit Service f629e6
	if (x".in" in files) {
Packit Service f629e6
		s = s " <" x ".in"
Packit Service f629e6
		delete files[x".in"]
Packit Service f629e6
	}
Packit Service f629e6
Packit Service f629e6
	o = "_" x ".tmp"
Packit Service f629e6
	print "\techo \"" x "\""
Packit Service f629e6
	print "$\tAWKPATH_srcdir"
Packit Service f629e6
	print "$\tgawk -f " x ".awk" s " >" o " 2>&1"
Packit Service f629e6
	print "$\tif .not.$status then  call exit_code \"" o "\" " \
Packit Service f629e6
		((x in fail_code1) ? "1" : "2")
Packit Service f629e6
	print "$\tcmp " x ".ok " o
Packit Service f629e6
	print "$\tif $status"
Packit Service f629e6
	print "$\tthen\trm " o ";"
Packit Service f629e6
	print "$\telse\techo \"test \"\"" x "\"\" failed\""
Packit Service f629e6
	print "$\tendif"
Packit Service f629e6
	print "$\treturn"
Packit Service f629e6
Packit Service f629e6
	return
Packit Service f629e6
}
Packit Service f629e6
Packit Service f629e6
#	prolog for Maketests.vms
Packit Service f629e6
function vmsprolog()
Packit Service f629e6
{
Packit Service f629e6
	print "$"
Packit Service f629e6
	print "$\techo\t= \"write sys$output\""
Packit Service f629e6
	print "$\tcmp\t= \"diff/Output=_NL:/Maximum=1\""
Packit Service f629e6
	print "$\trm\t= \"delete/noConfirm/noLog\""
Packit Service f629e6
	print "$\tgawk\t= \"$sys$disk:[-]gawk.exe\""
Packit Service f629e6
	print "$\tAWKPATH_srcdir = \"define/User AWKPATH sys$disk:[]\""
Packit Service f629e6
	print "$"
Packit Service f629e6
Packit Service f629e6
	print "$\tset noOn"
Packit Service f629e6
	print "$ gosub 'p1'"
Packit Service f629e6
	print "$\tset On"
Packit Service f629e6
	print "$ exit"
Packit Service f629e6
	print "$"
Packit Service f629e6
}
Packit Service f629e6
Packit Service f629e6
#	epilog for Maketests.vms
Packit Service f629e6
function vmsepilog()
Packit Service f629e6
{
Packit Service f629e6
	print "$"
Packit Service f629e6
	print "$! add a fake \"EXIT CODE\" record to the end of temporary output file"
Packit Service f629e6
	print "$! to simulate the ``|| echo EXIT CODE $$? >>_$@'' shell script usage"
Packit Service f629e6
	print "$exit_code: subroutine"
Packit Service f629e6
	print "$\tif f$trnlnm(\"FTMP\").nes.\"\" then  close/noLog ftmp"
Packit Service f629e6
	print "$\topen/Append ftmp 'p1'"
Packit Service f629e6
	print "$\twrite ftmp \"EXIT CODE: \",p2"
Packit Service f629e6
	print "$\tclose ftmp"
Packit Service f629e6
	print "$ endsubroutine !exit_code"
Packit Service f629e6
	print "$"
Packit Service f629e6
}