1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-05 16:44:21 +03:00
inform7/inter/Tests/inter.intest
2021-08-08 23:02:26 +01:00

273 lines
7.3 KiB
Plaintext

-cases [Valid] 'inter/Tests/Valid'
-cases [Invalid] 'inter/Tests/Invalid'
-cases [General] 'inter/Tests/General'
-cases [Duplex] 'inter/Tests/Duplex'
-cases [PipelineErrors] 'inter/Tests/PipelineErrors'
-cases [Toy] 'inter/Tests/Toys'
-cases [BasicC] 'inter/Tests/C'
-recipe [Valid]
set: $O = $PATH/$CASE.intert
set: $A = $PATH/_Textual/$CASE.intert
set: $B = $PATH/_Binary/$CASE.interb
set: $T = $PATH/_Console/$CASE.txt
mkdir: $PATH/_Textual
mkdir: $PATH/_Binary
mkdir: $PATH/_Console
step: inter/Tangled/inter $O -binary $B >$T 2>&1
or: 'produced errors in inter' $T
step: inter/Tangled/inter $B -textual $A >$T 2>&1
or: 'produced errors in inter' $T
show: $A
match text: $A $O
or: 'produced incorrect output'
-end
-recipe [Invalid]
set: $O = $PATH/$CASE.intert
set: $A = $PATH/_Results_Actual/$CASE.txt
set: $I = $PATH/_Results_Ideal/$CASE.txt
mkdir: $PATH/_Results_Actual
mkdir: $PATH/_Results_Ideal
fail step: inter/Tangled/inter $O >$A 2>&1
or: 'failed to produce error message' $A
show: $A
exists: $I
or: 'produced error(s), but no ideal transcript existed'
match platform text: $A $I
or: 'produced the wrong error message(s)'
-end
-recipe [General]
set: $O = $PATH/$CASE.intert
set: $P = $PATH/_Pipelines/$CASE.interpipeline
set: $A = $PATH/_Results_Actual/$CASE.txt
set: $I = $PATH/_Results_Ideal/$CASE.txt
set: $T = $PATH/_Console/$CASE.txt
mkdir: $PATH/_Results_Actual
mkdir: $PATH/_Results_Ideal
mkdir: $PATH/_Console
step: inter/Tangled/inter -architecture 16d -variable *in=$O -variable *out=$A -pipeline-file $P >$T 2>&1
or: 'failed to produce output' $T
show: $A
match text: $A $I
or: 'produced incorrect output'
-end
-recipe [Duplex]
set: $P = $PATH/$CASE.interpipeline
set: $OA = $PATH/_Pairs/$CASE+A.intert
set: $OB = $PATH/_Pairs/$CASE+B.intert
set: $BA = $PATH/_Binaries/$CASE+A.interb
set: $BB = $PATH/_Binaries/$CASE+B.interb
set: $AA = $PATH/_Results_Actual/$CASE+A.txt
set: $IA = $PATH/_Results_Ideal/$CASE+A.txt
set: $AB = $PATH/_Results_Actual/$CASE+B.txt
set: $IB = $PATH/_Results_Ideal/$CASE+B.txt
set: $T = $PATH/_Console/$CASE.txt
mkdir: $PATH/_Results_Actual
mkdir: $PATH/_Results_Ideal
mkdir: $PATH/_Console
mkdir: $PATH/_Binaries
step: inter/Tangled/inter -variable *inA=$OA -variable *inB=$OB -variable *binA=$BA -variable *binB=$BB -variable *outA=$AA -variable *outB=$AB -pipeline-file $P >$T 2>&1
or: 'failed to produce output' $T
show: $A
match text: $AA $IA
or: 'produced incorrect output on A'
match text: $AB $IB
or: 'produced incorrect output on B'
-end
-recipe [PipelineErrors]
set: $O = $PATH/$CASE.intert
set: $P = $PATH/$CASE.interpipeline
set: $A = $PATH/_Results_Actual/$CASE.txt
set: $I = $PATH/_Results_Ideal/$CASE.txt
mkdir: $PATH/_Results_Actual
mkdir: $PATH/_Results_Ideal
fail step: inter/Tangled/inter -variable *in=$O -pipeline-file $P >$A 2>&1
or: 'failed to produce errors' $A
show: $A
match platform text: $A $I
or: 'produced incorrect errors'
-end
-recipe [Toy]
set: $I7CLIB = inform7/Internal/Miscellany
set: $O = $PATH/$CASE.intert
set: $P = $PATH/_Pipelines/toy_i6.interpipeline
set: $A = $PATH/_I6_Results_Actual/$CASE.txt
set: $I = $PATH/_I6_Results_Ideal/$CASE.txt
set: $T = $PATH/_I6_Console/$CASE.txt
set: $CT = $PATH/_I6_Console/compile-$CASE.txt
set: $X = $PATH/_I6_Object_Code/$CASE
set: $AO = $PATH/_I6_Output_Actual/$CASE.txt
set: $AI = $PATH/_I6_Output_Ideal/$CASE.txt
set: $PC = $PATH/_Pipelines/toy_c.interpipeline
set: $AC = $PATH/_C_Results_Actual/$CASE.c
set: $IC = $PATH/_C_Results_Ideal/$CASE.c
set: $TC = $PATH/_C_Console/$CASE.txt
set: $OC = $PATH/_C_Object_Code/$CASE.o
set: $CTC = $PATH/_C_Console/compile-$CASE.txt
set: $LTC = $PATH/_C_Console/link-$CASE.txt
set: $XC = $PATH/_C_Object_Code/$CASE
set: $AOC = $PATH/_C_Output_Actual/$CASE.txt
set: $AIC = $PATH/_C_Output_Ideal/$CASE.txt
mkdir: $PATH/_I6_Results_Actual
mkdir: $PATH/_I6_Results_Ideal
mkdir: $PATH/_I6_Console
mkdir: $PATH/_I6_Object_Code
mkdir: $PATH/_I6_Output_Actual
mkdir: $PATH/_I6_Output_Ideal
mkdir: $PATH/_C_Results_Actual
mkdir: $PATH/_C_Results_Ideal
mkdir: $PATH/_C_Console
mkdir: $PATH/_C_Object_Code
mkdir: $PATH/_C_Output_Actual
mkdir: $PATH/_C_Output_Ideal
step: inter/Tangled/inter -architecture 16d -variable *in=$O -variable *out=$A -pipeline-file $P >$T 2>&1
or: 'failed to produce output' $T
match text: $A $I
or: 'produced incorrect I6 code'
step: inter/Tangled/inter -architecture 16d -variable *in=$O -variable *out=$AC -pipeline-file $PC >$TC 2>&1
or: 'failed to produce output' $T
! match text: $AC $IC
! or: 'produced incorrect C code'
step: clang -std=c99 -c -o $OC $AC -I $I7CLIB >$CTC 2>&1
or: 'failed to compile C' $CTC
step: clang -g -o $XC $OC >$LTC 2>&1
or: 'failed to link C' $LTC
step: $XC >$AOC 2>&1
or: 'failed to run C program' $AOC
match text: $AOC $AIC
or: 'C program misbehaved'
show: $AOC
set: $I6 = inform6/Tangled/inform6
set: $I6OPTIONS = -E2SDwv8x
step: $I6 `$I6OPTIONS $A $X >$CT 2>&1
or: 'failed to pass through Inform 6' $CT
set: $INT = inform6/Tests/Assistants/dumb-frotz/dumb-frotz
set: $INTNAME = dumb-frotz
set: $INTOPTIONS = -w 1000
step: $INT `$INTOPTIONS $X </dev/null >$AO 2>&1
or: 'unable to run $INTNAME (do you need to make interpreters?)'
match text: $AO $AI
or: 'I6 program misbehaved'
! Annoyingly, I can't get dumb-frotz to output text on small programs,
! so I'm having to skip this:
! match text: $AO $AOC
! or: 'I6 and C programs disagreed'
-end
-recipe [BasicC]
set: $I7 = inform7/Tangled/inform7
set: $INTERNAL = inform7/Internal
set: $WORKSPACE = intest/Workspace
set: $ZINT = inform6/Tests/Assistants/dumb-frotz/dumb-frotz
set: $GINT = inform6/Tests/Assistants/dumb-glulx/glulxe/glulxe
set: $I7CLIB = inform7/Internal/Miscellany
set: $VM = G
set: $FORMAT = ulx
set: $I6OPTIONS = -E2SDwGx
set: $INT = $GINT
set: $INTNAME = dumb-glulxe
set: $INTOPTIONS = -u -q
extract: $WORK/Example.inform/Source/story.ni $VM
mkdir: $WORK/Transient
step: find $WORK/Transient -mindepth 1 -delete
mkdir: $PATH/_Results_Actual
mkdir: $PATH/_Results_Ideal
mkdir: $PATH/_Textual
mkdir: $PATH/_C
set: $I7OPTIONS = -kit BasicInformKit -format=$FORMAT -no-progress -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
set: $PIPELINE = test_basic_c
set: $I7CONSOLE = $WORK/Example.inform/Build/i7_output.txt
set: $TOUT = $PATH/_Textual/$CASE.intert
set: $COUT = $PATH/_C/$CASE.c
set: $OFILE = $WORK/Example.inform/Build/$CASE.o
step: $I7 `$I7OPTIONS -format=$FORMAT -project $WORK/Example.inform -variable *tout=$TOUT -variable *cout=$COUT -pipeline $PIPELINE >$I7CONSOLE 2>&1
or: 'failed with Problem message(s)' $I7CONSOLE
set: $CCCONSOLE = $WORK/Example.inform/Build/cc_output.txt
set: $LINKCONSOLE = $WORK/Example.inform/Build/link_output.txt
set: $STORYFILE = $WORK/Example.inform/Build/final
step: clang -std=c99 -c -o $OFILE $COUT -ferror-limit=10000 -Wno-parentheses-equality -I $I7CLIB >$CCCONSOLE 2>&1
or: 'failed to compile C' $CCCONSOLE
step: clang -g -o $STORYFILE $OFILE -ferror-limit=10000 >$LINKCONSOLE 2>&1
or: 'failed to link C' $LINKCONSOLE
set: $A = $PATH/_Results_Actual/$CASE.txt
set: $I = $PATH/_Results_Ideal/$CASE.txt
step: $STORYFILE >$A 2>&1
or: 'failed to run C program' $A
show: $A
match text: $A $I
or: 'C program misbehaved'
pass: 'passed'
-end