Artifact 2688ae0606e40ce36822df28b9c06aa69f474d94:
- File genexample.scm — part of check-in [f067e02af4] at 2012-04-23 09:58:19 on branch extend-test-get-path — Made genexample a bit safer (user: mrwellan size: 11342) [more...]
0000: 3b 3b 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ;;============== 0010: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 0020: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 0030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 0040: 3d 3d 3d 3d 3d 3d 3d 3d 0a 3b 3b 20 43 6f 70 79 ========.;; Copy 0050: 72 69 67 68 74 20 32 30 30 36 2d 32 30 31 32 2c right 2006-2012, 0060: 20 4d 61 74 74 68 65 77 20 57 65 6c 6c 61 6e 64 Matthew Welland 0070: 2e 0a 3b 3b 20 0a 3b 3b 20 20 54 68 69 73 20 70 ..;; .;; This p 0080: 72 6f 67 72 61 6d 20 69 73 20 6d 61 64 65 20 61 rogram is made a 0090: 76 61 69 6c 61 62 6c 65 20 75 6e 64 65 72 20 74 vailable under t 00a0: 68 65 20 47 4e 55 20 47 50 4c 20 76 65 72 73 69 he GNU GPL versi 00b0: 6f 6e 20 32 2e 30 20 6f 72 0a 3b 3b 20 20 67 72 on 2.0 or.;; gr 00c0: 65 61 74 65 72 2e 20 53 65 65 20 74 68 65 20 61 eater. See the a 00d0: 63 63 6f 6d 70 61 6e 79 69 6e 67 20 66 69 6c 65 ccompanying file 00e0: 20 43 4f 50 59 49 4e 47 20 66 6f 72 20 64 65 74 COPYING for det 00f0: 61 69 6c 73 2e 0a 3b 3b 20 0a 3b 3b 20 20 54 68 ails..;; .;; Th 0100: 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 is program is di 0110: 73 74 72 69 62 75 74 65 64 20 57 49 54 48 4f 55 stributed WITHOU 0120: 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 T ANY WARRANTY; 0130: 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 without even the 0140: 0a 3b 3b 20 20 69 6d 70 6c 69 65 64 20 77 61 72 .;; implied war 0150: 72 61 6e 74 79 20 6f 66 20 4d 45 52 43 48 41 4e ranty of MERCHAN 0160: 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e TABILITY or FITN 0170: 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 ESS FOR A PARTIC 0180: 55 4c 41 52 0a 3b 3b 20 20 50 55 52 50 4f 53 45 ULAR.;; PURPOSE 0190: 2e 0a 3b 3b 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ..;;============ 01a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 01b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 01c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 01d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 28 64 65 63 ==========..(dec 01e0: 6c 61 72 65 20 28 75 6e 69 74 20 67 65 6e 65 78 lare (unit genex 01f0: 61 6d 70 6c 65 29 29 0a 28 75 73 65 20 70 6f 73 ample)).(use pos 0200: 69 78 29 0a 0a 28 64 65 66 69 6e 65 20 67 65 6e ix)..(define gen 0210: 65 78 61 6d 70 6c 65 3a 65 78 61 6d 70 6c 65 2d example:example- 0220: 6c 6f 67 70 72 6f 0a 23 3c 3c 45 4f 46 0a 3b 3b logpro.#<<EOF.;; 0230: 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 You should have 0240: 20 61 74 20 6c 65 61 73 74 20 6f 6e 65 20 65 78 at least one ex 0250: 70 65 63 74 3a 72 65 71 75 69 72 65 64 2e 20 54 pect:required. T 0260: 68 69 73 20 65 6e 73 75 72 65 73 20 74 68 61 74 his ensures that 0270: 20 79 6f 75 72 20 70 72 6f 63 65 73 73 20 72 61 your process ra 0280: 6e 0a 28 65 78 70 65 63 74 3a 72 65 71 75 69 72 n.(expect:requir 0290: 65 64 20 69 6e 20 22 4c 6f 67 46 69 6c 65 42 6f ed in "LogFileBo 02a0: 64 79 22 20 3e 20 30 20 22 50 75 74 20 64 65 73 dy" > 0 "Put des 02b0: 63 72 69 70 74 69 6f 6e 20 68 65 72 65 22 20 23 cription here" # 02c0: 2f 70 75 74 20 70 61 74 74 65 72 6e 20 68 65 72 /put pattern her 02d0: 65 2f 29 0a 0a 3b 3b 20 59 6f 75 20 6d 61 79 20 e/)..;; You may 02e0: 6e 65 65 64 20 69 67 6e 6f 72 65 73 20 74 6f 20 need ignores to 02f0: 73 75 70 70 72 65 73 73 20 66 61 6c 73 65 20 65 suppress false e 0300: 72 72 6f 72 20 6f 72 20 77 61 72 6e 69 6e 67 20 rror or warning 0310: 68 69 74 73 20 66 72 6f 6d 20 74 68 65 20 6c 61 hits from the la 0320: 74 65 72 20 65 78 70 65 63 74 73 0a 3b 3b 20 4e ter expects.;; N 0330: 4f 54 45 3a 20 4f 72 64 65 72 20 69 73 20 69 6d OTE: Order is im 0340: 70 6f 72 74 61 6e 74 20 68 65 72 65 21 0a 28 65 portant here!.(e 0350: 78 70 65 63 74 3a 69 67 6e 6f 72 65 20 20 20 69 xpect:ignore i 0360: 6e 20 22 4c 6f 67 46 69 6c 65 42 6f 64 79 22 20 n "LogFileBody" 0370: 20 3c 20 39 39 20 22 49 67 6e 6f 72 65 20 74 68 < 99 "Ignore th 0380: 65 20 77 6f 72 64 20 65 72 72 6f 72 20 69 6e 20 e word error in 0390: 63 6f 6d 6d 65 6e 74 73 22 20 23 2f 5e 5c 2f 5c comments" #/^\/\ 03a0: 2f 2e 2a 65 72 72 6f 72 2f 29 0a 28 65 78 70 65 /.*error/).(expe 03b0: 63 74 3a 77 61 72 6e 69 6e 67 20 20 69 6e 20 22 ct:warning in " 03c0: 4c 6f 67 46 69 6c 65 42 6f 64 79 22 20 20 3d 20 LogFileBody" = 03d0: 30 20 22 41 6e 79 20 77 61 72 6e 69 6e 67 22 20 0 "Any warning" 03e0: 23 2f 77 61 72 6e 2f 29 0a 28 65 78 70 65 63 74 #/warn/).(expect 03f0: 3a 65 72 72 6f 72 20 20 20 20 69 6e 20 22 4c 6f :error in "Lo 0400: 67 46 69 6c 65 42 6f 64 79 22 20 20 3d 20 30 20 gFileBody" = 0 0410: 22 41 6e 79 20 65 72 72 6f 72 22 20 20 28 6c 69 "Any error" (li 0420: 73 74 20 23 2f 45 52 52 4f 52 2f 20 23 2f 65 72 st #/ERROR/ #/er 0430: 72 6f 72 2f 29 29 20 3b 3b 20 62 75 74 20 64 69 ror/)) ;; but di 0440: 73 61 6c 6c 6f 77 20 61 6e 79 20 6f 74 68 65 72 sallow any other 0450: 20 65 72 72 6f 72 73 0a 45 4f 46 0a 29 0a 0a 28 errors.EOF.)..( 0460: 64 65 66 69 6e 65 20 67 65 6e 65 78 61 6d 70 6c define genexampl 0470: 65 3a 65 78 61 6d 70 6c 65 2d 73 63 72 69 70 74 e:example-script 0480: 0a 23 3c 3c 45 4f 46 0a 23 21 2f 75 73 72 2f 62 .#<<EOF.#!/usr/b 0490: 69 6e 2f 65 6e 76 20 62 61 73 68 0a 0a 23 20 52 in/env bash..# R 04a0: 75 6e 20 79 6f 75 72 20 73 74 65 70 20 68 65 72 un your step her 04b0: 65 0a 45 4f 46 0a 29 0a 0a 28 64 65 66 69 6e 65 e.EOF.)..(define 04c0: 20 28 67 65 6e 65 78 61 6d 70 6c 65 3a 6d 6b 2d (genexample:mk- 04d0: 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 29 megatest.config) 04e0: 0a 20 20 28 6c 65 74 20 28 28 6b 65 79 73 74 72 . (let ((keystr 04f0: 20 23 66 29 0a 09 28 6b 65 79 73 20 20 20 23 66 #f)..(keys #f 0500: 29 0a 09 28 6c 6e 74 72 65 65 20 23 66 29 0a 09 )..(lntree #f).. 0510: 28 70 61 74 68 20 20 20 23 66 29 0a 09 28 66 69 (path #f)..(fi 0520: 72 73 74 64 20 23 66 29 29 0a 20 20 20 20 28 70 rstd #f)). (p 0530: 72 69 6e 74 20 22 4e 6f 74 65 3a 20 64 6f 6e 27 rint "Note: don' 0540: 74 20 77 6f 72 72 79 20 74 6f 6f 20 6d 75 63 68 t worry too much 0550: 20 61 62 6f 75 74 20 74 79 70 6f 73 20 69 6e 20 about typos in 0560: 74 68 69 73 20 70 72 6f 63 65 73 73 2c 20 79 6f this process, yo 0570: 75 20 77 69 6c 6c 20 62 65 20 61 62 6c 65 20 74 u will be able t 0580: 6f 20 65 64 69 74 0a 74 68 65 20 67 65 6e 65 72 o edit.the gener 0590: 61 74 65 64 20 66 69 6c 65 73 20 62 65 66 6f 72 ated files befor 05a0: 65 20 73 74 61 72 74 69 6e 67 20 79 6f 75 72 20 e starting your 05b0: 66 69 72 73 74 20 72 75 6e 73 22 29 0a 0a 20 20 first runs").. 05c0: 20 20 3b 3b 20 63 72 65 61 74 65 20 74 68 65 20 ;; create the 05d0: 6e 65 65 64 65 64 20 61 72 65 61 0a 20 20 20 20 needed area. 05e0: 28 70 72 69 6e 74 20 22 3d 3d 3d 3d 3d 3d 3d 3d (print "======== 05f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 57 68 65 72 ==========\nWher 0600: 65 20 63 61 6e 20 49 20 63 72 65 61 74 65 20 79 e can I create y 0610: 6f 75 72 20 4d 65 67 61 74 65 73 74 20 72 65 67 our Megatest reg 0620: 72 65 73 73 73 69 6f 6e 2f 63 6f 6e 74 69 6e 75 resssion/continu 0630: 6f 75 73 20 62 75 69 6c 64 20 61 72 65 61 3f 20 ous build area? 0640: 4e 6f 74 65 2c 20 79 6f 75 72 20 5c 6e 22 0a 09 Note, your \n".. 0650: 20 20 20 22 74 65 73 74 73 20 77 69 6c 6c 20 6e "tests will n 0660: 6f 74 20 6e 65 63 65 73 73 61 72 69 6c 79 20 62 ot necessarily b 0670: 65 20 72 75 6e 20 69 6e 20 74 68 69 73 20 61 72 e run in this ar 0680: 65 61 2c 20 64 69 73 6b 20 73 70 61 63 65 20 6e ea, disk space n 0690: 65 65 64 73 20 61 72 65 20 6d 6f 64 65 73 74 2e eeds are modest. 06a0: 22 29 0a 20 20 20 20 28 64 69 73 70 6c 61 79 20 "). (display 06b0: 22 45 6e 74 65 72 20 79 6f 75 72 20 6d 65 67 61 "Enter your mega 06c0: 74 65 73 74 20 64 69 72 65 63 74 6f 72 79 3a 20 test directory: 06d0: 22 29 0a 20 20 20 20 28 73 65 74 21 20 70 61 74 "). (set! pat 06e0: 68 20 28 72 65 61 64 2d 6c 69 6e 65 29 29 0a 0a h (read-line)).. 06f0: 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 64 69 (if (not (di 0700: 72 65 63 74 6f 72 79 3f 20 70 61 74 68 29 29 0a rectory? path)). 0710: 09 28 62 65 67 69 6e 0a 09 20 20 28 70 72 69 6e .(begin.. (prin 0720: 74 20 22 54 68 65 20 70 61 74 68 20 22 20 70 61 t "The path " pa 0730: 74 68 20 22 20 64 6f 65 73 20 6e 6f 74 20 65 78 th " does not ex 0740: 69 73 74 20 6f 72 20 69 73 20 6e 6f 74 20 61 20 ist or is not a 0750: 64 69 72 65 63 74 6f 72 79 2e 20 41 74 74 65 6d directory. Attem 0760: 70 74 69 6e 67 20 74 6f 20 63 72 65 61 74 65 20 pting to create 0770: 69 74 20 6e 6f 77 22 29 0a 09 20 20 28 63 72 65 it now").. (cre 0780: 61 74 65 2d 64 69 72 65 63 74 6f 72 79 20 70 61 ate-directory pa 0790: 74 68 20 23 74 29 29 29 0a 0a 20 20 20 20 3b 3b th #t))).. ;; 07a0: 20 46 69 72 73 74 20 63 68 65 63 6b 20 74 68 61 First check tha 07b0: 74 20 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 t megatest.confi 07c0: 67 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 g does not exist 07d0: 21 0a 20 20 20 20 28 69 66 20 28 66 69 6c 65 2d !. (if (file- 07e0: 65 78 69 73 74 73 3f 20 28 63 6f 6e 63 20 70 61 exists? (conc pa 07f0: 74 68 20 22 2f 6d 65 67 61 74 65 73 74 2e 63 6f th "/megatest.co 0800: 6e 66 69 67 22 29 29 0a 09 28 62 65 67 69 6e 0a nfig"))..(begin. 0810: 09 20 20 28 70 72 69 6e 74 20 22 57 41 52 4e 49 . (print "WARNI 0820: 4e 47 3a 20 6d 65 67 61 74 65 73 74 2e 63 6f 6e NG: megatest.con 0830: 66 69 67 20 61 6c 72 65 61 64 79 20 65 78 69 73 fig already exis 0840: 74 73 21 20 44 6f 20 79 6f 75 20 77 69 73 68 20 ts! Do you wish 0850: 74 6f 20 63 6c 6f 62 62 65 72 20 66 69 6c 65 73 to clobber files 0860: 20 69 6e 20 22 20 70 61 74 68 20 22 3f 22 29 0a in " path "?"). 0870: 09 20 20 28 64 69 73 70 6c 61 79 20 22 45 6e 74 . (display "Ent 0880: 65 72 20 79 2f 6e 3a 20 22 29 0a 09 20 20 28 69 er y/n: ").. (i 0890: 66 20 28 6e 6f 74 20 28 65 71 75 61 6c 3f 20 22 f (not (equal? " 08a0: 79 22 20 28 72 65 61 64 2d 6c 69 6e 65 29 29 29 y" (read-line))) 08b0: 0a 09 20 20 20 20 20 20 28 62 65 67 69 6e 0a 09 .. (begin.. 08c0: 09 28 70 72 69 6e 74 20 22 49 4e 46 4f 3a 20 43 .(print "INFO: C 08d0: 72 65 61 74 69 6f 6e 20 6f 66 20 6d 65 67 61 74 reation of megat 08e0: 65 73 74 20 66 69 6c 65 73 20 69 6e 20 22 20 70 est files in " p 08f0: 61 74 68 20 22 20 61 62 6f 72 74 65 64 22 29 0a ath " aborted"). 0900: 09 09 28 65 78 69 74 20 31 29 29 29 29 29 0a 0a ..(exit 1))))).. 0910: 20 20 20 20 3b 3b 20 66 69 72 73 74 20 70 72 6f ;; first pro 0920: 6d 70 74 20 75 73 65 72 20 66 6f 72 20 66 69 65 mpt user for fie 0930: 6c 64 73 0a 20 20 20 20 3b 3b 0a 20 20 20 20 28 lds. ;;. ( 0940: 70 72 69 6e 74 20 22 3d 3d 3d 3d 3d 3d 3d 3d 3d print "========= 0950: 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 4e 65 78 74 20 =========\nNext 0960: 79 6f 75 20 6d 75 73 74 20 73 70 65 63 69 66 79 you must specify 0970: 20 66 69 65 6c 64 73 20 6f 72 20 6b 65 79 73 20 fields or keys 0980: 66 6f 72 20 79 6f 75 72 20 6d 65 67 61 74 65 73 for your megates 0990: 74 20 61 72 65 61 2e 20 54 68 65 73 65 20 77 69 t area. These wi 09a0: 6c 6c 20 0a 62 65 20 75 73 65 64 20 74 6f 20 6f ll .be used to o 09b0: 72 67 61 6e 69 73 65 20 79 6f 75 72 20 72 75 6e rganise your run 09c0: 73 2e 20 4f 6e 65 20 66 69 65 6c 64 20 73 68 6f s. One field sho 09d0: 75 6c 64 20 70 72 6f 62 61 62 6c 79 20 62 65 20 uld probably be 09e0: 5c 22 52 45 4c 45 41 53 45 5c 22 2e 20 0a 4f 74 \"RELEASE\". .Ot 09f0: 68 65 72 20 65 78 61 6d 70 6c 65 73 20 6f 66 20 her examples of 0a00: 75 73 65 66 75 6c 20 66 69 65 6c 64 73 20 6d 69 useful fields mi 0a10: 67 68 74 20 62 65 20 5c 22 50 4c 41 54 46 4f 52 ght be \"PLATFOR 0a20: 4d 5c 22 2c 20 5c 22 54 41 52 47 45 54 5f 4f 53 M\", \"TARGET_OS 0a30: 5c 22 20 6f 72 20 69 66 20 79 6f 75 20 61 72 65 \" or if you are 0a40: 20 69 6e 20 74 68 65 0a 73 65 6d 69 63 6f 6e 64 in the.semicond 0a50: 75 63 74 6f 72 20 62 75 73 69 6e 65 73 73 20 70 uctor business p 0a60: 65 72 68 61 70 73 20 74 68 69 6e 67 73 20 6c 69 erhaps things li 0a70: 6b 65 20 5c 22 54 45 43 48 4e 4f 4c 4f 47 59 5f ke \"TECHNOLOGY_ 0a80: 4e 4f 44 45 5c 22 2c 20 5c 22 44 45 53 49 47 4e NODE\", \"DESIGN 0a90: 5f 4b 49 54 5c 22 20 6f 72 20 5c 22 4d 45 54 41 _KIT\" or \"META 0aa0: 4c 5f 53 54 41 43 4b 5c 22 2e 0a 0a 54 68 65 20 L_STACK\"...The 0ab0: 61 6c 6c 20 63 61 70 73 20 69 73 20 61 20 63 6f all caps is a co 0ac0: 6e 76 65 6e 74 69 6f 6e 20 62 65 63 61 75 73 65 nvention because 0ad0: 20 74 68 65 20 76 61 72 69 61 62 6c 65 73 20 79 the variables y 0ae0: 6f 75 20 63 68 6f 6f 73 65 20 77 69 6c 6c 20 62 ou choose will b 0af0: 65 20 61 76 61 69 6c 61 62 6c 65 20 74 6f 20 79 e available to y 0b00: 6f 75 72 20 74 65 73 74 73 0a 61 73 20 65 6e 76 our tests.as env 0b10: 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c ironment variabl 0b20: 65 73 2e 20 59 6f 75 20 63 61 6e 20 65 64 69 74 es. You can edit 0b30: 20 74 68 65 73 65 20 76 61 6c 75 65 73 20 6c 61 these values la 0b40: 74 65 72 20 62 75 74 20 69 74 20 69 73 20 67 65 ter but it is ge 0b50: 6e 65 72 61 6c 6c 79 20 61 20 67 6f 6f 64 20 69 nerally a good i 0b60: 64 65 61 20 74 6f 0a 73 65 74 74 6c 65 20 6f 6e dea to.settle on 0b70: 20 74 68 65 6d 20 61 6e 64 20 67 65 74 20 74 68 them and get th 0b80: 65 6d 20 72 69 67 68 74 20 65 61 72 6c 79 20 6f em right early o 0b90: 6e 2e 20 59 6f 75 72 20 72 75 6e 73 20 77 69 6c n. Your runs wil 0ba0: 6c 20 62 65 20 73 74 6f 72 65 64 20 69 6e 20 64 l be stored in d 0bb0: 69 72 65 63 74 6f 72 69 65 73 20 73 70 65 63 69 irectories speci 0bc0: 66 69 65 64 20 62 79 0a 79 6f 75 72 20 6b 65 79 fied by.your key 0bd0: 73 2e 20 45 78 61 6d 70 6c 65 2c 20 69 66 20 79 s. Example, if y 0be0: 6f 75 20 68 61 76 65 20 6b 65 79 73 20 4f 53 46 ou have keys OSF 0bf0: 41 4d 49 4c 59 2f 56 41 52 49 41 4e 54 2f 4f 53 AMILY/VARIANT/OS 0c00: 56 45 52 2f 52 45 4c 45 41 53 45 20 79 6f 75 20 VER/RELEASE you 0c10: 6d 61 79 20 67 65 74 20 61 20 74 65 73 74 20 5c may get a test \ 0c20: 22 62 75 69 6c 64 5c 22 0a 69 6e 20 61 20 64 69 "build\".in a di 0c30: 72 65 63 74 6f 72 79 20 6c 69 6b 65 20 74 68 69 rectory like thi 0c40: 73 3a 20 6c 69 6e 75 78 2f 75 62 75 6e 74 75 2f s: linux/ubuntu/ 0c50: 31 31 2e 30 34 2f 72 65 76 5f 31 2e 32 2f 62 75 11.04/rev_1.2/bu 0c60: 69 6c 64 0a 0a 50 6c 65 61 73 65 20 65 6e 74 65 ild..Please ente 0c70: 72 20 79 6f 75 72 20 6b 65 79 73 20 6e 6f 77 2c r your keys now, 0c80: 20 73 65 70 61 72 61 74 65 64 20 62 79 20 73 70 separated by sp 0c90: 61 63 65 73 20 6f 72 20 73 6c 61 73 68 65 73 2e aces or slashes. 0ca0: 20 4f 6e 6c 79 20 61 6c 70 68 61 2d 6e 75 6d 65 Only alpha-nume 0cb0: 72 69 63 20 63 68 61 72 61 63 74 65 72 73 2e 20 ric characters. 0cc0: 0a 55 70 70 65 72 20 63 61 73 65 20 72 65 63 6f .Upper case reco 0cd0: 6d 6d 65 6e 64 65 64 2e 22 29 0a 20 20 20 20 28 mmended."). ( 0ce0: 64 69 73 70 6c 61 79 20 22 45 6e 74 65 72 20 6b display "Enter k 0cf0: 65 79 73 20 73 65 70 61 72 61 74 65 64 20 62 79 eys separated by 0d00: 20 73 70 61 63 65 73 20 6f 72 20 73 6c 61 73 68 spaces or slash 0d10: 65 73 3a 20 22 29 0a 20 20 20 20 28 73 65 74 21 es: "). (set! 0d20: 20 6b 65 79 73 74 72 20 28 72 65 61 64 2d 6c 69 keystr (read-li 0d30: 6e 65 29 29 0a 20 20 20 20 28 73 65 74 21 20 6b ne)). (set! k 0d40: 65 79 73 20 20 20 28 61 70 70 6c 79 20 61 70 70 eys (apply app 0d50: 65 6e 64 0a 09 09 09 28 6d 61 70 20 73 74 72 69 end....(map stri 0d60: 6e 67 2d 73 70 6c 69 74 20 28 73 74 72 69 6e 67 ng-split (string 0d70: 2d 73 70 6c 69 74 20 6b 65 79 73 74 72 20 22 2f -split keystr "/ 0d80: 22 29 29 29 29 0a 20 20 20 20 0a 20 20 20 20 3b ")))). . ; 0d90: 3b 20 4e 6f 77 20 67 65 74 20 74 68 65 20 6c 69 ; Now get the li 0da0: 6e 6b 20 74 72 65 65 20 6c 6f 63 61 74 69 6f 6e nk tree location 0db0: 20 61 6e 64 20 61 20 66 69 72 73 74 20 64 69 73 and a first dis 0dc0: 6b 0a 20 20 20 20 28 70 72 69 6e 74 20 22 3d 3d k. (print "== 0dd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 0de0: 5c 6e 4e 6f 77 20 79 6f 75 20 6e 65 65 64 20 61 \nNow you need a 0df0: 6e 20 69 6e 69 74 69 61 6c 20 70 6c 61 63 65 20 n initial place 0e00: 74 6f 20 73 74 6f 72 65 20 79 6f 75 72 20 72 75 to store your ru 0e10: 6e 73 2e 20 54 68 65 73 65 20 61 72 65 20 63 61 ns. These are ca 0e20: 6c 6c 65 64 20 5c 22 64 69 73 6b 73 5c 22 20 61 lled \"disks\" a 0e30: 6e 64 20 79 6f 75 0a 63 61 6e 20 61 64 64 20 6d nd you.can add m 0e40: 6f 72 65 20 61 74 20 61 6e 79 20 74 69 6d 65 2e ore at any time. 0e50: 20 54 6f 20 67 65 74 20 67 6f 69 6e 67 20 70 72 To get going pr 0e60: 6f 76 69 64 65 20 61 20 77 72 69 74 65 61 62 6c ovide a writeabl 0e70: 65 20 64 69 72 65 63 74 6f 72 79 20 6e 61 6d 65 e directory name 0e80: 2e 20 22 29 0a 20 20 20 20 28 64 69 73 70 6c 61 . "). (displa 0e90: 79 20 22 45 6e 74 65 72 20 79 6f 75 72 20 74 65 y "Enter your te 0ea0: 73 74 20 72 75 6e 73 20 64 69 72 65 63 74 6f 72 st runs director 0eb0: 79 3a 20 22 29 0a 20 20 20 20 28 73 65 74 21 20 y: "). (set! 0ec0: 66 69 72 73 74 64 20 28 72 65 61 64 2d 6c 69 6e firstd (read-lin 0ed0: 65 29 29 0a 20 20 20 20 28 69 66 20 28 6e 6f 74 e)). (if (not 0ee0: 20 28 64 69 72 65 63 74 6f 72 79 3f 20 66 69 72 (directory? fir 0ef0: 73 74 64 29 29 0a 09 28 62 65 67 69 6e 0a 09 20 std))..(begin.. 0f00: 20 28 70 72 69 6e 74 20 22 57 41 52 4e 49 4e 47 (print "WARNING 0f10: 3a 20 79 6f 75 20 68 61 76 65 20 73 70 65 63 69 : you have speci 0f20: 66 69 65 64 20 61 20 70 61 74 68 20 22 20 66 69 fied a path " fi 0f30: 72 73 74 64 20 22 20 74 68 61 74 20 64 6f 65 73 rstd " that does 0f40: 20 6e 6f 74 20 65 78 69 73 74 2e 20 41 74 74 65 not exist. Atte 0f50: 6d 70 74 69 6e 67 20 74 6f 20 63 72 65 61 74 65 mpting to create 0f60: 20 69 74 2e 2e 2e 5c 6e 22 29 0a 09 20 20 28 63 it...\n").. (c 0f70: 72 65 61 74 65 2d 64 69 72 65 63 74 6f 72 79 20 reate-directory 0f80: 66 69 72 73 74 64 20 23 74 29 29 29 0a 0a 20 20 firstd #t))).. 0f90: 20 20 28 70 72 69 6e 74 20 22 3d 3d 3d 3d 3d 3d (print "====== 0fa0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 4d 65 ============\nMe 0fb0: 67 61 74 65 73 74 20 75 73 65 73 20 61 20 74 72 gatest uses a tr 0fc0: 65 65 20 6f 66 20 73 79 6d 6c 69 6e 6b 73 20 74 ee of symlinks t 0fd0: 6f 20 70 72 6f 76 69 64 65 20 61 20 75 6e 69 66 o provide a unif 0fe0: 6f 72 6d 20 73 74 72 75 63 74 75 72 65 20 66 6f orm structure fo 0ff0: 72 20 66 69 6e 64 69 6e 67 20 61 6c 6c 20 74 68 r finding all th 1000: 65 20 74 65 73 74 73 0a 79 6f 75 20 72 75 6e 20 e tests.you run 1010: 6f 76 65 72 20 74 69 6d 65 2e 20 50 6c 65 61 73 over time. Pleas 1020: 65 20 70 72 6f 76 69 64 65 20 61 20 70 61 74 68 e provide a path 1030: 20 77 68 65 72 65 20 77 65 20 63 61 6e 20 63 72 where we can cr 1040: 65 61 74 65 20 74 68 69 73 20 6c 69 6e 6b 20 74 eate this link t 1050: 72 65 65 2e 22 29 0a 20 20 20 20 28 64 69 73 70 ree."). (disp 1060: 6c 61 79 20 22 45 6e 74 65 72 20 6c 69 6e 6b 20 lay "Enter link 1070: 74 72 65 65 20 64 69 72 65 63 74 6f 72 79 3a 20 tree directory: 1080: 22 29 0a 20 20 20 20 28 73 65 74 21 20 6c 6e 74 "). (set! lnt 1090: 72 65 65 20 28 72 65 61 64 2d 6c 69 6e 65 29 29 ree (read-line)) 10a0: 0a 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 64 . (if (not (d 10b0: 69 72 65 63 74 6f 72 79 3f 20 6c 6e 74 72 65 65 irectory? lntree 10c0: 29 29 0a 09 28 62 65 67 69 6e 0a 09 20 20 28 70 ))..(begin.. (p 10d0: 72 69 6e 74 20 22 57 41 52 4e 49 4e 47 3a 20 79 rint "WARNING: y 10e0: 6f 75 20 68 61 76 65 20 73 70 65 63 69 66 69 65 ou have specifie 10f0: 64 20 61 20 70 61 74 68 20 22 20 6c 6e 74 72 65 d a path " lntre 1100: 65 20 22 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 e "that does not 1110: 20 65 78 69 73 74 2e 20 41 74 74 65 6d 70 74 69 exist. Attempti 1120: 6e 67 20 74 6f 20 63 72 65 61 74 65 20 69 74 2e ng to create it. 1130: 2e 2e 5c 6e 22 29 0a 09 20 20 28 63 72 65 61 74 ..\n").. (creat 1140: 65 2d 64 69 72 65 63 74 6f 72 79 20 6c 6e 74 72 e-directory lntr 1150: 65 65 20 23 74 29 29 29 0a 20 20 20 20 0a 20 20 ee #t))). . 1160: 20 20 28 77 69 74 68 2d 6f 75 74 70 75 74 2d 74 (with-output-t 1170: 6f 2d 66 69 6c 65 20 28 63 6f 6e 63 20 70 61 74 o-file (conc pat 1180: 68 20 22 2f 6d 65 67 61 74 65 73 74 2e 63 6f 6e h "/megatest.con 1190: 66 69 67 22 29 0a 20 20 20 20 20 20 28 6c 61 6d fig"). (lam 11a0: 62 64 61 20 28 29 0a 09 28 70 72 69 6e 74 20 22 bda ()..(print " 11b0: 5b 66 69 65 6c 64 73 5d 22 29 0a 09 28 6d 61 70 [fields]")..(map 11c0: 20 28 6c 61 6d 62 64 61 20 28 6b 29 28 70 72 69 (lambda (k)(pri 11d0: 6e 74 20 6b 20 22 20 54 45 58 54 22 29 29 20 6b nt k " TEXT")) k 11e0: 65 79 73 29 0a 09 28 70 72 69 6e 74 20 22 22 29 eys)..(print "") 11f0: 0a 09 28 70 72 69 6e 74 20 22 5b 73 65 74 75 70 ..(print "[setup 1200: 5d 22 29 0a 09 28 70 72 69 6e 74 20 22 23 20 41 ]")..(print "# A 1210: 64 6a 75 73 74 20 6d 61 78 5f 63 6f 6e 63 75 72 djust max_concur 1220: 72 65 6e 74 5f 6a 6f 62 73 20 74 6f 20 6c 69 6d rent_jobs to lim 1230: 69 74 20 68 6f 77 20 6d 75 63 68 20 79 6f 75 20 it how much you 1240: 6c 6f 61 64 20 79 6f 75 72 20 6d 61 63 68 69 6e load your machin 1250: 65 73 22 29 0a 09 28 70 72 69 6e 74 20 22 6d 61 es")..(print "ma 1260: 78 5f 63 6f 6e 63 75 72 72 65 6e 74 5f 6a 6f 62 x_concurrent_job 1270: 73 20 35 30 5c 6e 22 29 0a 09 28 70 72 69 6e 74 s 50\n")..(print 1280: 20 22 23 20 54 68 69 73 20 69 73 20 79 6f 75 72 "# This is your 1290: 20 6c 69 6e 6b 20 70 61 74 68 2c 20 79 6f 75 20 link path, you 12a0: 63 61 6e 20 6d 6f 76 65 20 69 74 20 62 75 74 20 can move it but 12b0: 69 74 20 69 73 20 67 65 6e 65 72 61 6c 6c 79 20 it is generally 12c0: 62 65 74 74 65 72 20 74 6f 20 6b 65 65 70 20 69 better to keep i 12d0: 74 20 73 74 61 62 6c 65 22 29 0a 09 28 70 72 69 t stable")..(pri 12e0: 6e 74 20 22 6c 69 6e 6b 74 72 65 65 20 22 20 6c nt "linktree " l 12f0: 6e 74 72 65 65 29 0a 09 28 70 72 69 6e 74 20 22 ntree)..(print " 1300: 5c 6e 23 20 4a 6f 62 20 74 6f 6f 6c 73 20 61 72 \n# Job tools ar 1310: 65 20 6d 6f 72 65 20 61 64 76 61 6e 63 65 64 20 e more advanced 1320: 77 61 79 73 20 74 6f 20 63 6f 6e 74 72 6f 6c 20 ways to control 1330: 68 6f 77 20 79 6f 75 72 20 6a 6f 62 73 20 61 72 how your jobs ar 1340: 65 20 6c 61 75 6e 63 68 65 64 22 29 0a 09 28 70 e launched")..(p 1350: 72 69 6e 74 20 22 5b 6a 6f 62 74 6f 6f 6c 73 5d rint "[jobtools] 1360: 5c 6e 75 73 65 73 68 65 6c 6c 20 79 65 73 5c 6e \nuseshell yes\n 1370: 6c 61 75 6e 63 68 65 72 20 6e 62 66 69 6e 64 5c launcher nbfind\ 1380: 6e 22 29 0a 09 28 70 72 69 6e 74 20 22 23 20 59 n")..(print "# Y 1390: 6f 75 20 63 61 6e 20 6f 76 65 72 72 69 64 65 20 ou can override 13a0: 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 72 69 environment vari 13b0: 61 62 6c 65 73 20 66 6f 72 20 61 6c 6c 20 79 6f ables for all yo 13c0: 75 72 20 74 65 73 74 73 20 68 65 72 65 22 29 0a ur tests here"). 13d0: 09 28 70 72 69 6e 74 20 22 5b 65 6e 76 2d 6f 76 .(print "[env-ov 13e0: 65 72 72 69 64 65 5d 5c 6e 45 58 41 4d 50 4c 45 erride]\nEXAMPLE 13f0: 5f 56 41 52 20 65 78 61 6d 70 6c 65 20 76 61 6c _VAR example val 1400: 75 65 5c 6e 22 29 0a 09 28 70 72 69 6e 74 20 22 ue\n")..(print " 1410: 23 20 41 73 20 79 6f 75 20 72 75 6e 20 6d 6f 72 # As you run mor 1420: 65 20 74 65 73 74 73 20 79 6f 75 20 6d 61 79 20 e tests you may 1430: 6e 65 65 64 20 74 6f 20 61 64 64 20 61 64 64 69 need to add addi 1440: 74 69 6f 6e 61 6c 20 64 69 73 6b 73 2c 20 74 68 tional disks, th 1450: 65 20 6e 61 6d 65 73 20 61 72 65 20 61 72 62 69 e names are arbi 1460: 74 72 61 72 79 20 62 75 74 20 6d 75 73 74 20 62 trary but must b 1470: 65 20 75 6e 69 71 75 65 22 29 0a 09 28 70 72 69 e unique")..(pri 1480: 6e 74 20 22 5b 64 69 73 6b 73 5d 5c 6e 64 69 73 nt "[disks]\ndis 1490: 6b 30 20 22 20 66 69 72 73 74 64 29 29 29 0a 0a k0 " firstd))).. 14a0: 20 20 20 20 28 70 72 69 6e 74 20 22 3d 3d 3d 3d (print "==== 14b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e ==============\n 14c0: 49 27 6d 20 6e 6f 77 20 63 72 65 61 74 69 6e 67 I'm now creating 14d0: 20 61 20 72 75 6e 63 6f 6e 66 69 67 73 2e 63 6f a runconfigs.co 14e0: 6e 66 69 67 20 66 69 6c 65 20 66 6f 72 20 79 6f nfig file for yo 14f0: 75 20 77 69 74 68 20 61 20 64 65 66 61 75 6c 74 u with a default 1500: 20 73 65 63 74 69 6f 6e 2e 0a 59 6f 75 20 63 61 section..You ca 1510: 6e 20 75 73 65 20 74 68 69 73 20 66 69 6c 65 20 n use this file 1520: 74 6f 20 73 65 74 20 76 61 72 69 61 62 6c 65 73 to set variables 1530: 20 66 6f 72 20 79 6f 75 72 20 74 65 73 74 73 20 for your tests 1540: 62 61 73 65 64 20 6f 6e 20 74 68 65 20 5c 22 74 based on the \"t 1550: 61 72 67 65 74 5c 22 20 28 74 68 65 20 63 6f 6d arget\" (the com 1560: 62 69 6e 61 74 69 6f 6e 0a 6f 66 20 6b 65 79 73 bination.of keys 1570: 29 2e 22 29 0a 20 20 20 20 28 77 69 74 68 2d 6f )."). (with-o 1580: 75 74 70 75 74 2d 74 6f 2d 66 69 6c 65 20 28 63 utput-to-file (c 1590: 6f 6e 63 20 70 61 74 68 20 22 2f 72 75 6e 63 6f onc path "/runco 15a0: 6e 66 69 67 73 2e 63 6f 6e 66 69 67 22 29 0a 20 nfigs.config"). 15b0: 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 0a (lambda (). 15c0: 09 28 70 72 69 6e 74 20 22 23 20 54 68 65 20 76 .(print "# The v 15d0: 61 72 69 61 62 6c 65 73 20 69 6e 20 74 68 65 20 ariables in the 15e0: 64 65 66 61 75 6c 74 20 63 61 74 65 67 6f 72 79 default category 15f0: 20 77 69 6c 6c 20 62 65 20 73 65 65 6e 20 69 6e will be seen in 1600: 20 61 6c 6c 20 72 75 6e 73 5c 6e 5b 64 65 66 61 all runs\n[defa 1610: 75 6c 74 5d 5c 6e 41 4c 4c 54 45 53 54 53 20 73 ult]\nALLTESTS s 1620: 65 65 20 74 68 69 73 20 76 61 72 69 61 62 6c 65 ee this variable 1630: 5c 6e 22 29 0a 09 0a 09 28 70 72 69 6e 74 20 22 \n")....(print " 1640: 23 20 59 6f 75 72 20 76 61 72 69 61 62 6c 65 73 # Your variables 1650: 20 68 65 72 65 20 61 72 65 20 67 72 6f 75 70 65 here are groupe 1660: 64 20 62 79 20 74 61 72 67 65 74 73 20 5b 22 20 d by targets [" 1670: 28 73 74 72 69 6e 67 2d 69 6e 74 65 72 73 70 65 (string-interspe 1680: 72 73 65 20 6b 65 79 73 20 22 2f 22 29 20 22 5d rse keys "/") "] 1690: 22 29 0a 09 28 6c 65 74 20 28 28 65 78 61 6d 70 ")..(let ((examp 16a0: 6c 65 2d 74 61 72 67 65 74 20 28 73 74 72 69 6e le-target (strin 16b0: 67 2d 69 6e 74 65 72 73 70 65 72 73 65 20 28 6d g-intersperse (m 16c0: 61 70 20 28 6c 61 6d 62 64 61 20 28 6b 29 28 63 ap (lambda (k)(c 16d0: 6f 6e 63 20 6b 20 22 5f 76 61 6c 22 29 29 20 6b onc k "_val")) k 16e0: 65 79 73 29 20 22 2f 22 29 29 29 0a 09 20 20 28 eys) "/"))).. ( 16f0: 70 72 69 6e 74 20 22 5b 22 20 65 78 61 6d 70 6c print "[" exampl 1700: 65 2d 74 61 72 67 65 74 20 22 5d 22 29 0a 09 20 e-target "]").. 1710: 20 28 70 72 69 6e 74 20 22 41 4e 4f 54 48 45 52 (print "ANOTHER 1720: 56 41 52 20 6f 6e 6c 79 20 64 65 66 69 6e 65 64 VAR only defined 1730: 20 69 66 20 74 61 72 67 65 74 20 69 73 20 22 20 if target is " 1740: 65 78 61 6d 70 6c 65 2d 74 61 72 67 65 74 29 29 example-target)) 1750: 29 29 0a 0a 20 20 20 20 3b 3b 20 4e 6f 77 20 63 )).. ;; Now c 1760: 72 65 61 74 65 20 61 20 74 65 73 74 20 61 6e 64 reate a test and 1770: 20 6c 6f 67 70 72 6f 20 66 69 6c 65 0a 20 20 20 logpro file. 1780: 20 28 70 72 69 6e 74 20 22 59 6f 75 20 6e 6f 77 (print "You now 1790: 20 68 61 76 65 20 74 68 65 20 62 61 73 69 63 20 have the basic 17a0: 63 6f 6d 6d 6f 6e 20 66 69 6c 65 73 20 66 6f 72 common files for 17b0: 20 79 6f 75 72 20 6d 65 67 61 74 65 73 74 20 73 your megatest s 17c0: 65 74 75 70 2e 20 4e 65 78 74 20 72 75 6e 20 5c etup. Next run \ 17d0: 22 6d 65 67 61 74 65 73 74 20 2d 67 65 6e 74 65 "megatest -gente 17e0: 73 74 5c 22 5c 6e 22 0a 09 20 20 20 22 74 6f 20 st\"\n".. "to 17f0: 63 72 65 61 74 65 20 61 20 74 65 73 74 2e 5c 6e create a test.\n 1800: 5c 6e 54 68 61 6e 6b 73 20 66 6f 72 20 75 73 69 \nThanks for usi 1810: 6e 67 20 4d 65 67 61 74 65 73 74 2e 20 59 6f 75 ng Megatest. You 1820: 20 63 61 6e 20 65 64 69 74 20 79 6f 75 72 20 63 can edit your c 1830: 6f 6e 66 69 67 20 66 69 6c 65 73 20 61 6e 64 20 onfig files and 1840: 63 72 65 61 74 65 20 74 65 73 74 73 5c 6e 22 0a create tests\n". 1850: 09 20 20 20 22 69 6e 20 74 68 65 20 22 20 70 61 . "in the " pa 1860: 74 68 20 22 20 64 69 72 65 63 74 6f 72 79 22 29 th " directory") 1870: 29 29 0a 0a 0a 3b 3b 3d 3d 3d 3d 3d 3d 3d 3d 3d ))...;;========= 1880: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 1890: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 18a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 18b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 3b 3b =============.;; 18c0: 20 63 72 65 61 74 65 20 73 6b 65 6c 65 74 6f 6e create skeleton 18d0: 20 66 69 6c 65 73 20 66 6f 72 20 61 20 74 65 73 files for a tes 18e0: 74 0a 3b 3b 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d t.;;============ 18f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 1900: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 1910: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 1920: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 0a 28 64 65 66 ==========..(def 1930: 69 6e 65 20 28 67 65 6e 65 78 61 6d 70 6c 65 3a ine (genexample: 1940: 6d 6b 2d 6d 65 67 61 74 65 73 74 2d 74 65 73 74 mk-megatest-test 1950: 20 74 65 73 74 6e 61 6d 65 29 0a 20 20 3b 3b 20 testname). ;; 1960: 47 61 74 68 65 72 20 6e 65 65 64 65 64 20 64 61 Gather needed da 1970: 74 61 0a 20 20 28 6c 65 74 20 28 28 77 61 69 74 ta. (let ((wait 1980: 6f 6e 20 20 20 23 66 29 0a 09 28 70 72 69 6f 72 on #f)..(prior 1990: 69 74 79 20 23 66 29 0a 09 28 64 65 73 63 72 69 ity #f)..(descri 19a0: 70 74 69 6f 6e 20 23 66 29 0a 09 28 73 74 65 70 ption #f)..(step 19b0: 73 20 20 20 20 27 28 29 29 0a 09 28 73 63 72 69 s '())..(scri 19c0: 70 74 73 20 20 27 28 29 29 0a 09 28 69 74 65 6d pts '())..(item 19d0: 73 20 20 20 20 27 28 29 29 0a 09 28 72 65 6c 2d s '())..(rel- 19e0: 70 61 74 68 20 23 66 29 29 0a 0a 20 20 20 20 28 path #f)).. ( 19f0: 63 6f 6e 64 0a 20 20 20 20 20 28 28 66 69 6c 65 cond. ((file 1a00: 2d 65 78 69 73 74 73 3f 20 22 6d 65 67 61 74 65 -exists? "megate 1a10: 73 74 2e 63 6f 6e 66 69 67 22 29 20 20 20 20 20 st.config") 1a20: 20 20 20 20 28 73 65 74 21 20 72 65 6c 2d 70 61 (set! rel-pa 1a30: 74 68 20 22 2e 2f 22 29 29 0a 20 20 20 20 20 28 th "./")). ( 1a40: 28 66 69 6c 65 2d 65 78 69 73 74 73 3f 20 22 2e (file-exists? ". 1a50: 2e 2f 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 ./megatest.confi 1a60: 67 22 29 20 20 20 20 20 20 28 73 65 74 21 20 72 g") (set! r 1a70: 65 6c 2d 70 61 74 68 20 22 2e 2e 2f 22 29 29 0a el-path "../")). 1a80: 20 20 20 20 20 28 28 66 69 6c 65 2d 65 78 69 73 ((file-exis 1a90: 74 73 3f 20 22 2e 2e 2f 2e 2e 2f 6d 65 67 61 74 ts? "../../megat 1aa0: 65 73 74 2e 63 6f 6e 66 69 67 22 29 20 20 20 28 est.config") ( 1ab0: 73 65 74 21 20 72 65 6c 2d 70 61 74 68 20 22 2e set! rel-path ". 1ac0: 2e 2f 2e 2e 2f 22 29 29 0a 20 20 20 20 20 28 28 ./../")). (( 1ad0: 66 69 6c 65 2d 65 78 69 73 74 73 3f 20 22 2e 2e file-exists? ".. 1ae0: 2f 2e 2e 2f 2e 2e 2f 6d 65 67 61 74 65 73 74 2e /../../megatest. 1af0: 63 6f 6e 66 69 67 22 29 28 73 65 74 21 20 72 65 config")(set! re 1b00: 6c 2d 70 61 74 68 20 22 2e 2e 2f 2e 2e 2f 2e 2e l-path "../../.. 1b10: 2f 22 29 29 29 20 3b 3b 20 67 6f 6f 64 20 65 6e /"))) ;; good en 1b20: 6f 75 67 68 20 64 61 6e 67 20 69 74 2e 0a 0a 20 ough dang it... 1b30: 20 20 20 3b 3b 20 44 6f 6e 27 74 20 67 61 74 68 ;; Don't gath 1b40: 65 72 20 64 61 74 61 20 6f 72 20 63 6f 6e 74 69 er data or conti 1b50: 6e 75 65 20 69 66 20 61 29 20 6d 65 67 61 74 65 nue if a) megate 1b60: 73 74 2e 63 6f 6e 66 69 67 20 63 61 6e 27 74 20 st.config can't 1b70: 62 65 20 66 6f 75 6e 64 20 6f 72 20 62 29 20 74 be found or b) t 1b80: 65 73 74 63 6f 6e 66 69 67 20 61 6c 72 65 61 64 estconfig alread 1b90: 79 20 65 78 69 73 74 73 0a 20 20 20 20 28 69 66 y exists. (if 1ba0: 20 28 6e 6f 74 20 72 65 6c 2d 70 61 74 68 29 0a (not rel-path). 1bb0: 09 28 62 65 67 69 6e 0a 09 20 20 28 70 72 69 6e .(begin.. (prin 1bc0: 74 20 22 45 52 52 4f 52 3a 20 49 20 63 6f 75 6c t "ERROR: I coul 1bd0: 64 20 6e 6f 74 20 66 69 6e 64 20 6d 65 67 61 74 d not find megat 1be0: 65 73 74 2e 63 6f 6e 66 69 67 2c 20 70 6c 65 61 est.config, plea 1bf0: 73 65 20 72 75 6e 20 2d 67 65 74 2d 6d 65 67 61 se run -get-mega 1c00: 74 65 73 74 2d 74 65 73 74 20 69 6e 20 74 68 65 test-test in the 1c10: 20 74 6f 70 20 64 69 72 20 6f 66 20 79 6f 75 72 top dir of your 1c20: 20 6d 65 67 61 74 65 73 74 20 61 72 65 61 22 29 megatest area") 1c30: 0a 09 20 20 28 65 78 69 74 20 31 29 29 29 0a 0a .. (exit 1))).. 1c40: 20 20 20 20 28 69 66 20 28 66 69 6c 65 2d 65 78 (if (file-ex 1c50: 69 73 74 73 3f 20 28 63 6f 6e 63 20 72 65 6c 2d ists? (conc rel- 1c60: 70 61 74 68 20 22 74 65 73 74 73 2f 22 20 74 65 path "tests/" te 1c70: 73 74 6e 61 6d 65 20 22 2f 74 65 73 74 63 6f 6e stname "/testcon 1c80: 66 69 67 22 29 29 0a 09 28 62 65 67 69 6e 0a 09 fig"))..(begin.. 1c90: 20 20 28 70 72 69 6e 74 20 22 57 41 52 4e 49 4e (print "WARNIN 1ca0: 47 3a 20 59 6f 75 20 61 6c 72 65 61 64 79 20 68 G: You already h 1cb0: 61 76 65 20 61 20 74 65 73 74 63 6f 6e 66 69 67 ave a testconfig 1cc0: 20 69 6e 20 22 20 72 65 6c 2d 70 61 74 68 20 22 in " rel-path " 1cd0: 74 65 73 74 73 2f 22 20 74 65 73 74 6e 61 6d 65 tests/" testname 1ce0: 20 22 2c 20 64 6f 20 79 6f 75 20 77 61 6e 74 20 ", do you want 1cf0: 74 6f 20 63 6c 6f 62 62 65 72 20 79 6f 75 72 20 to clobber your 1d00: 66 69 6c 65 73 3f 22 29 0a 09 20 20 28 64 69 73 files?").. (dis 1d10: 70 6c 61 79 20 22 45 6e 74 65 72 20 79 2f 6e 3a play "Enter y/n: 1d20: 20 22 29 0a 09 20 20 28 69 66 20 28 6e 6f 74 20 ").. (if (not 1d30: 28 65 71 75 61 6c 3f 20 22 79 22 20 28 72 65 61 (equal? "y" (rea 1d40: 64 2d 6c 69 6e 65 29 29 29 0a 09 20 20 20 20 20 d-line))).. 1d50: 20 28 62 65 67 69 6e 0a 09 09 28 70 72 69 6e 74 (begin...(print 1d60: 20 22 49 4e 46 4f 3a 20 75 73 65 72 20 61 62 6f "INFO: user abo 1d70: 72 74 20 6f 66 20 63 72 65 61 74 69 6f 6e 20 6f rt of creation o 1d80: 66 20 74 65 73 74 20 22 20 74 65 73 74 6e 61 6d f test " testnam 1d90: 65 29 0a 09 09 28 65 78 69 74 20 31 29 29 29 29 e)...(exit 1)))) 1da0: 29 0a 0a 20 20 20 20 28 70 72 69 6e 74 20 22 57 ).. (print "W 1db0: 65 20 61 72 65 20 67 6f 69 6e 67 20 74 6f 20 67 e are going to g 1dc0: 65 6e 65 72 61 74 65 20 61 20 73 6b 65 6c 65 74 enerate a skelet 1dd0: 6f 6e 20 73 65 74 20 6f 66 20 66 69 6c 65 73 20 on set of files 1de0: 66 6f 72 20 79 6f 75 72 20 74 65 73 74 20 22 20 for your test " 1df0: 74 65 73 74 6e 61 6d 65 20 22 5c 6e 22 0a 09 20 testname "\n".. 1e00: 20 20 22 20 2a 2a 2a 20 4e 6f 74 65 3a 20 64 6f " *** Note: do 1e10: 20 6e 6f 74 20 77 6f 72 72 79 20 74 6f 6f 20 6d not worry too m 1e20: 75 63 68 20 61 62 6f 75 74 20 74 79 70 6f 73 2c uch about typos, 1e30: 20 79 6f 75 20 63 61 6e 20 65 64 69 74 20 74 68 you can edit th 1e40: 65 20 66 69 6c 65 73 20 63 72 65 61 74 65 64 20 e files created 1e50: 77 68 65 6e 20 79 6f 75 20 61 72 65 20 64 6f 6e when you are don 1e60: 65 2e 22 29 0a 0a 20 20 20 20 28 70 72 69 6e 74 e.").. (print 1e70: 20 22 5c 6e 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d "\n\n========== 1e80: 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 50 6c 65 61 73 65 ========\nPlease 1e90: 20 64 65 73 63 72 69 62 65 20 74 68 69 73 20 74 describe this t 1ea0: 65 73 74 2e 20 54 68 65 20 64 65 73 63 72 69 70 est. The descrip 1eb0: 74 69 6f 6e 20 77 69 6c 6c 20 62 65 20 76 69 73 tion will be vis 1ec0: 69 62 6c 65 20 69 6e 20 76 61 72 69 6f 75 73 20 ible in various 1ed0: 64 69 61 6c 6f 67 73 20 61 6e 64 20 72 65 70 6f dialogs and repo 1ee0: 72 74 73 22 29 0a 20 20 20 20 28 64 69 73 70 6c rts"). (displ 1ef0: 61 79 20 22 45 6e 74 65 72 20 6f 6e 65 20 6c 69 ay "Enter one li 1f00: 6e 65 20 64 65 73 63 72 69 70 74 69 6f 6e 20 66 ne description f 1f10: 6f 72 20 74 68 69 73 20 74 65 73 74 3a 20 22 29 or this test: ") 1f20: 0a 20 20 20 20 28 73 65 74 21 20 64 65 73 63 72 . (set! descr 1f30: 69 70 74 69 6f 6e 20 28 72 65 61 64 2d 6c 69 6e iption (read-lin 1f40: 65 29 29 0a 0a 20 20 20 20 28 70 72 69 6e 74 20 e)).. (print 1f50: 22 5c 6e 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d "\n\n=========== 1f60: 3d 3d 3d 3d 3d 3d 3d 5c 6e 44 6f 65 73 20 74 68 =======\nDoes th 1f70: 69 73 20 74 65 73 74 2c 20 22 20 74 65 73 74 6e is test, " testn 1f80: 61 6d 65 20 22 2c 20 72 65 71 75 69 72 65 20 61 ame ", require a 1f90: 6e 79 20 6f 74 68 65 72 20 74 65 73 74 20 62 65 ny other test be 1fa0: 20 72 75 6e 20 70 72 69 6f 72 20 74 6f 20 6c 61 run prior to la 1fb0: 75 6e 63 68 3f 22 29 0a 20 20 20 20 28 64 69 73 unch?"). (dis 1fc0: 70 6c 61 79 20 28 63 6f 6e 63 20 22 45 6e 74 65 play (conc "Ente 1fd0: 72 20 73 70 61 63 65 20 64 65 6c 69 6d 69 74 65 r space delimite 1fe0: 64 20 6c 69 73 74 20 6f 66 20 74 65 73 74 73 20 d list of tests 1ff0: 77 68 69 63 68 20 22 20 74 65 73 74 6e 61 6d 65 which " testname 2000: 20 22 20 6d 75 73 74 20 77 61 69 74 20 66 6f 72 " must wait for 2010: 3a 20 22 29 29 0a 20 20 20 20 28 73 65 74 21 20 : ")). (set! 2020: 77 61 69 74 6f 6e 20 28 72 65 61 64 2d 6c 69 6e waiton (read-lin 2030: 65 29 29 0a 0a 20 20 20 20 28 70 72 69 6e 74 20 e)).. (print 2040: 22 5c 6e 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d "\n\n=========== 2050: 3d 3d 3d 3d 3d 3d 3d 5c 6e 44 6f 20 79 6f 75 20 =======\nDo you 2060: 77 69 73 68 20 74 6f 20 70 72 69 6f 72 69 74 69 wish to prioriti 2070: 7a 65 20 74 68 65 20 72 75 6e 6e 69 6e 67 20 6f ze the running o 2080: 66 20 74 68 69 73 20 74 65 73 74 20 6f 76 65 72 f this test over 2090: 20 6f 74 68 65 72 20 74 65 73 74 73 3f 20 49 66 other tests? If 20a0: 20 73 6f 22 29 0a 20 20 20 20 28 70 72 69 6e 74 so"). (print 20b0: 20 22 65 6e 74 65 72 20 61 20 6e 75 6d 62 65 72 "enter a number 20c0: 20 67 72 65 61 74 65 72 20 74 68 61 6e 20 7a 65 greater than ze 20d0: 72 6f 20 68 65 72 65 22 29 0a 20 20 20 20 28 64 ro here"). (d 20e0: 69 73 70 6c 61 79 20 22 45 6e 74 65 72 20 61 20 isplay "Enter a 20f0: 70 72 69 6f 72 69 74 79 20 6f 66 20 30 20 28 64 priority of 0 (d 2100: 65 66 61 75 6c 74 29 20 6f 72 20 68 69 67 68 65 efault) or highe 2110: 72 3a 20 22 29 0a 20 20 20 20 28 73 65 74 21 20 r: "). (set! 2120: 70 72 69 6f 72 69 74 79 20 28 72 65 61 64 2d 6c priority (read-l 2130: 69 6e 65 29 29 0a 0a 20 20 20 20 3b 3b 20 47 65 ine)).. ;; Ge 2140: 74 20 74 68 65 20 73 74 65 70 73 0a 20 20 20 20 t the steps. 2150: 28 70 72 69 6e 74 20 22 5c 6e 5c 6e 3d 3d 3d 3d (print "\n\n==== 2160: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e ==============\n 2170: 4e 6f 77 20 74 6f 20 65 6e 74 65 72 20 74 68 65 Now to enter the 2180: 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 73 74 65 one or more ste 2190: 70 73 20 74 68 61 74 20 6d 61 6b 65 20 75 70 20 ps that make up 21a0: 79 6f 75 72 20 74 65 73 74 2c 20 6e 6f 74 65 3b your test, note; 21b0: 20 79 6f 75 20 63 61 6e 20 61 64 64 20 6d 6f 72 you can add mor 21c0: 65 20 6c 61 74 65 72 22 29 0a 20 20 20 20 28 70 e later"). (p 21d0: 72 69 6e 74 20 22 48 69 6e 74 3b 20 75 73 65 20 rint "Hint; use 21e0: 2e 73 68 20 65 78 74 65 6e 73 69 6f 6e 20 6f 6e .sh extension on 21f0: 20 74 68 65 20 73 63 72 69 70 74 20 6e 61 6d 65 the script name 2200: 73 20 61 6e 64 20 77 65 27 6c 6c 20 63 72 65 61 s and we'll crea 2210: 74 65 20 70 6c 61 63 65 68 6f 6c 64 65 72 20 73 te placeholder s 2220: 63 72 69 70 74 73 2e 22 0a 0a 20 20 20 20 28 6c cripts.".. (l 2230: 65 74 20 28 28 73 74 65 70 6e 61 6d 65 20 20 20 et ((stepname 2240: 23 66 29 0a 09 20 20 28 73 63 72 69 70 74 6e 61 #f).. (scriptna 2250: 6d 65 20 23 66 29 29 0a 20 20 20 20 20 20 28 6c me #f)). (l 2260: 65 74 20 6c 6f 6f 70 20 28 28 64 6f 6e 65 20 23 et loop ((done # 2270: 66 29 29 0a 09 28 64 69 73 70 6c 61 79 20 22 45 f))..(display "E 2280: 6e 74 65 72 20 74 68 65 20 6e 61 6d 65 20 66 6f nter the name fo 2290: 72 20 74 68 69 73 20 73 74 65 70 20 28 62 6c 61 r this step (bla 22a0: 6e 6b 20 74 6f 20 73 74 6f 70 29 3a 20 22 29 0a nk to stop): "). 22b0: 09 28 73 65 74 21 20 73 74 65 70 6e 61 6d 65 20 .(set! stepname 22c0: 28 72 65 61 64 2d 6c 69 6e 65 29 29 0a 09 28 69 (read-line))..(i 22d0: 66 20 28 6e 6f 74 20 28 65 71 75 61 6c 3f 20 73 f (not (equal? s 22e0: 74 65 70 6e 61 6d 65 20 22 22 29 29 0a 09 20 20 tepname "")).. 22f0: 20 20 28 62 65 67 69 6e 0a 09 20 20 20 20 20 20 (begin.. 2300: 28 64 69 73 70 6c 61 79 20 22 45 6e 74 65 72 20 (display "Enter 2310: 74 68 65 20 73 63 72 69 70 74 20 6f 72 20 70 72 the script or pr 2320: 6f 67 61 6d 20 74 6f 20 72 75 6e 3a 20 22 29 0a ogam to run: "). 2330: 09 20 20 20 20 20 20 28 73 65 74 21 20 73 63 72 . (set! scr 2340: 69 70 74 6e 61 6d 65 20 28 72 65 61 64 2d 6c 69 iptname (read-li 2350: 6e 65 29 29 0a 09 20 20 20 20 20 20 28 73 65 74 ne)).. (set 2360: 21 20 73 74 65 70 73 20 28 61 70 70 65 6e 64 20 ! steps (append 2370: 73 74 65 70 73 20 28 6c 69 73 74 20 28 6c 69 73 steps (list (lis 2380: 74 20 73 74 65 70 6e 61 6d 65 20 73 63 72 69 70 t stepname scrip 2390: 74 6e 61 6d 65 29 29 29 29 29 29 0a 09 28 69 66 tname))))))..(if 23a0: 20 28 6e 6f 74 20 28 65 71 75 61 6c 3f 20 73 74 (not (equal? st 23b0: 65 70 6e 61 6d 65 20 22 22 29 29 0a 09 20 20 20 epname "")).. 23c0: 20 28 6c 6f 6f 70 20 23 66 29 29 29 29 0a 0a 20 (loop #f)))).. 23d0: 20 20 20 3b 3b 20 47 65 74 20 74 68 65 20 69 74 ;; Get the it 23e0: 65 6d 73 0a 20 20 20 20 28 70 72 69 6e 74 20 22 ems. (print " 23f0: 5c 6e 5c 6e 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d \n\n============ 2400: 3d 3d 3d 3d 3d 3d 5c 6e 4e 65 78 74 20 77 65 20 ======\nNext we 2410: 6e 65 65 64 20 74 6f 20 67 65 74 20 74 68 65 20 need to get the 2420: 76 61 72 69 61 62 6c 65 73 20 61 6e 64 20 76 61 variables and va 2430: 6c 75 65 73 20 79 6f 75 20 77 69 73 68 20 74 6f lues you wish to 2440: 20 69 74 65 72 61 74 65 20 74 68 69 73 20 74 65 iterate this te 2450: 73 74 20 6f 76 65 72 20 28 62 6c 61 6e 6b 20 66 st over (blank f 2460: 6f 72 20 6e 6f 6e 65 29 22 29 0a 20 20 20 20 28 or none)"). ( 2470: 6c 65 74 20 28 28 76 61 72 6e 61 6d 65 20 23 66 let ((varname #f 2480: 29 0a 09 20 20 28 76 61 6c 75 65 73 20 20 23 66 ).. (values #f 2490: 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 6c 6f )). (let lo 24a0: 6f 70 20 28 28 64 6f 6e 65 20 23 66 29 29 0a 09 op ((done #f)).. 24b0: 28 64 69 73 70 6c 61 79 20 22 45 6e 74 65 72 20 (display "Enter 24c0: 74 68 65 20 76 61 72 69 61 62 6c 65 20 6e 61 6d the variable nam 24d0: 65 3a 20 22 29 0a 09 28 73 65 74 21 20 76 61 72 e: ")..(set! var 24e0: 6e 61 6d 65 20 28 72 65 61 64 2d 6c 69 6e 65 29 name (read-line) 24f0: 29 0a 09 28 69 66 20 28 6e 6f 74 20 28 65 71 75 )..(if (not (equ 2500: 61 6c 3f 20 76 61 72 6e 61 6d 65 20 22 22 29 29 al? varname "")) 2510: 0a 09 20 20 20 20 28 62 65 67 69 6e 0a 09 20 20 .. (begin.. 2520: 20 20 20 20 28 64 69 73 70 6c 61 79 20 28 63 6f (display (co 2530: 6e 63 20 22 45 6e 74 65 72 20 74 68 65 20 73 70 nc "Enter the sp 2540: 61 63 65 20 73 65 70 61 72 61 74 65 64 20 6c 69 ace separated li 2550: 73 74 20 6f 66 20 76 61 6c 75 65 73 20 66 6f 72 st of values for 2560: 20 22 20 76 61 72 6e 61 6d 65 20 22 3a 20 22 29 " varname ": ") 2570: 29 0a 09 20 20 20 20 20 20 28 73 65 74 21 20 76 ).. (set! v 2580: 61 6c 75 65 73 20 28 72 65 61 64 2d 6c 69 6e 65 alues (read-line 2590: 29 29 0a 09 20 20 20 20 20 20 28 73 65 74 21 20 )).. (set! 25a0: 69 74 65 6d 73 20 28 61 70 70 65 6e 64 20 69 74 items (append it 25b0: 65 6d 73 20 28 6c 69 73 74 20 28 63 6f 6e 63 20 ems (list (conc 25c0: 76 61 72 6e 61 6d 65 20 22 20 22 20 76 61 6c 75 varname " " valu 25d0: 65 73 29 29 29 29 29 29 0a 09 28 69 66 20 28 6e es))))))..(if (n 25e0: 6f 74 20 28 65 71 75 61 6c 3f 20 76 61 72 6e 61 ot (equal? varna 25f0: 6d 65 20 22 22 29 29 0a 09 20 20 20 20 28 6c 6f me "")).. (lo 2600: 6f 70 20 23 66 29 29 29 29 0a 0a 20 20 20 20 3b op #f)))).. ; 2610: 3b 20 4e 6f 77 20 63 72 65 61 74 65 20 74 68 65 ; Now create the 2620: 20 74 65 73 74 0a 20 20 20 20 28 69 66 20 28 6e test. (if (n 2630: 6f 74 20 72 65 6c 2d 70 61 74 68 29 0a 09 28 62 ot rel-path)..(b 2640: 65 67 69 6e 0a 09 20 20 28 70 72 69 6e 74 20 22 egin.. (print " 2650: 45 52 52 4f 52 3a 20 59 6f 75 20 6d 75 73 74 20 ERROR: You must 2660: 72 75 6e 20 74 68 69 73 20 63 6f 6d 6d 61 6e 64 run this command 2670: 20 69 6e 20 61 20 6d 65 67 61 74 65 73 74 20 61 in a megatest a 2680: 72 65 61 20 75 6e 64 65 72 20 77 68 65 72 65 20 rea under where 2690: 74 68 65 20 6d 65 67 61 74 65 73 74 2e 63 6f 6e the megatest.con 26a0: 66 69 67 20 66 69 6c 65 20 65 78 69 73 74 73 2e fig file exists. 26b0: 22 29 0a 09 20 20 28 65 78 69 74 20 31 29 29 0a ").. (exit 1)). 26c0: 09 28 6c 65 74 20 28 28 74 65 73 74 64 69 72 20 .(let ((testdir 26d0: 28 63 6f 6e 63 20 72 65 6c 2d 70 61 74 68 20 22 (conc rel-path " 26e0: 74 65 73 74 73 2f 22 20 74 65 73 74 6e 61 6d 65 tests/" testname 26f0: 29 29 29 0a 09 20 20 28 63 72 65 61 74 65 2d 64 ))).. (create-d 2700: 69 72 65 63 74 6f 72 79 20 74 65 73 74 64 69 72 irectory testdir 2710: 20 23 74 29 0a 09 20 20 28 77 69 74 68 2d 6f 75 #t).. (with-ou 2720: 74 70 75 74 2d 74 6f 2d 66 69 6c 65 20 28 63 6f tput-to-file (co 2730: 6e 63 20 74 65 73 74 64 69 72 20 22 2f 74 65 73 nc testdir "/tes 2740: 74 63 6f 6e 66 69 67 22 29 0a 09 20 20 20 20 28 tconfig").. ( 2750: 6c 61 6d 62 64 61 20 28 29 0a 09 20 20 20 20 20 lambda ().. 2760: 20 28 70 72 69 6e 74 20 22 23 20 41 64 64 20 61 (print "# Add a 2770: 64 64 69 74 69 6f 6e 61 6c 20 73 74 65 70 73 20 dditional steps 2780: 68 65 72 65 2e 20 46 6f 72 6d 61 74 20 69 73 20 here. Format is 2790: 5c 22 73 74 65 70 6e 61 6d 65 20 73 63 72 69 70 \"stepname scrip 27a0: 74 5c 22 5c 6e 5b 65 7a 73 74 65 70 73 5d 22 29 t\"\n[ezsteps]") 27b0: 0a 09 20 20 20 20 20 20 28 6d 61 70 20 28 6c 61 .. (map (la 27c0: 6d 62 64 61 20 28 73 74 70 29 28 70 72 69 6e 74 mbda (stp)(print 27d0: 20 28 73 74 72 69 6e 67 2d 69 6e 74 65 72 73 70 (string-intersp 27e0: 65 72 73 65 20 73 74 70 20 22 20 22 29 29 29 20 erse stp " "))) 27f0: 73 74 65 70 73 29 0a 09 20 20 20 20 20 20 28 70 steps).. (p 2800: 72 69 6e 74 20 22 22 29 0a 09 20 20 20 20 20 20 rint "").. 2810: 28 70 72 69 6e 74 20 22 23 20 54 65 73 74 20 72 (print "# Test r 2820: 65 71 75 69 72 65 6d 65 6e 74 73 20 61 72 65 20 equirements are 2830: 73 70 65 63 69 66 69 65 64 20 68 65 72 65 5c 6e specified here\n 2840: 5b 72 65 71 75 69 72 65 6d 65 6e 74 73 5d 22 29 [requirements]") 2850: 0a 09 20 20 20 20 20 20 28 70 72 69 6e 74 20 22 .. (print " 2860: 77 61 69 74 6f 6e 20 22 20 77 61 69 74 6f 6e 29 waiton " waiton) 2870: 0a 09 20 20 20 20 20 20 28 70 72 69 6e 74 20 22 .. (print " 2880: 70 72 69 6f 72 69 74 79 20 22 20 70 72 69 6f 72 priority " prior 2890: 69 74 79 20 22 5c 6e 22 29 0a 09 20 20 20 20 20 ity "\n").. 28a0: 20 28 70 72 69 6e 74 20 22 23 20 49 74 65 72 61 (print "# Itera 28b0: 74 69 6f 6e 20 66 6f 72 20 79 6f 75 72 20 74 65 tion for your te 28c0: 73 74 73 20 61 72 65 20 63 6f 6e 74 72 6f 6c 6c sts are controll 28d0: 65 64 20 62 79 20 74 68 65 20 69 74 65 6d 73 20 ed by the items 28e0: 73 65 63 74 69 6f 6e 5c 6e 5b 69 74 65 6d 73 5d section\n[items] 28f0: 22 29 0a 09 20 20 20 20 20 20 28 6d 61 70 20 70 ").. (map p 2900: 72 69 6e 74 20 69 74 65 6d 73 29 0a 09 20 20 20 rint items).. 2910: 20 20 20 28 70 72 69 6e 74 20 22 22 29 0a 09 20 (print "").. 2920: 20 20 20 20 20 28 70 72 69 6e 74 20 22 23 20 74 (print "# t 2930: 65 73 74 5f 6d 65 74 61 20 69 73 20 61 20 73 65 est_meta is a se 2940: 63 74 69 6f 6e 20 66 6f 72 20 73 74 6f 72 69 6e ction for storin 2950: 67 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 61 74 g additional dat 2960: 61 20 6f 6e 20 79 6f 75 72 20 74 65 73 74 5c 6e a on your test\n 2970: 5b 74 65 73 74 5f 6d 65 74 61 5d 22 29 0a 09 20 [test_meta]").. 2980: 20 20 20 20 20 28 70 72 69 6e 74 20 22 61 75 74 (print "aut 2990: 68 6f 72 20 22 20 28 67 65 74 2d 65 6e 76 69 72 hor " (get-envir 29a0: 6f 6e 6d 65 6e 74 2d 76 61 72 69 61 62 6c 65 20 onment-variable 29b0: 22 55 53 45 52 22 29 29 0a 09 20 20 20 20 20 20 "USER")).. 29c0: 28 70 72 69 6e 74 20 22 6f 77 6e 65 72 20 20 22 (print "owner " 29d0: 20 28 67 65 74 2d 65 6e 76 69 72 6f 6e 6d 65 6e (get-environmen 29e0: 74 2d 76 61 72 69 61 62 6c 65 20 22 55 53 45 52 t-variable "USER 29f0: 22 29 29 0a 09 20 20 20 20 20 20 28 70 72 69 6e ")).. (prin 2a00: 74 20 22 64 65 73 63 72 69 70 74 69 6f 6e 20 22 t "description " 2a10: 20 64 65 73 63 72 69 70 74 69 6f 6e 29 0a 09 20 description).. 2a20: 20 20 20 20 20 28 70 72 69 6e 74 20 22 74 61 67 (print "tag 2a30: 73 20 74 61 67 6f 6e 65 2c 74 61 67 74 77 6f 22 s tagone,tagtwo" 2a40: 29 0a 09 20 20 20 20 20 20 28 70 72 69 6e 74 20 ).. (print 2a50: 22 72 65 76 69 65 77 65 64 20 6e 65 76 65 72 22 "reviewed never" 2a60: 29 29 29 0a 09 20 20 3b 3b 20 4e 6f 77 20 63 72 ))).. ;; Now cr 2a70: 65 61 74 65 20 73 68 65 6c 6c 20 73 63 72 69 70 eate shell scrip 2a80: 74 73 20 28 69 66 20 65 78 74 65 6e 73 69 6f 6e ts (if extension 2a90: 20 69 73 20 2e 73 68 29 20 61 6e 64 20 6c 6f 67 is .sh) and log 2aa0: 70 72 6f 20 66 69 6c 65 73 0a 09 20 20 28 66 6f pro files.. (fo 2ab0: 72 2d 65 61 63 68 20 28 6c 61 6d 62 64 61 20 28 r-each (lambda ( 2ac0: 73 74 70 29 0a 09 09 20 20 20 20 20 20 28 6c 65 stp)... (le 2ad0: 74 20 28 28 73 74 65 70 6e 61 6d 65 20 28 63 61 t ((stepname (ca 2ae0: 72 20 73 74 70 29 29 0a 09 09 09 20 20 20 20 28 r stp)).... ( 2af0: 73 63 72 69 70 74 20 20 20 28 63 61 64 72 20 73 script (cadr s 2b00: 74 70 29 29 29 0a 09 09 09 28 77 69 74 68 2d 6f tp)))....(with-o 2b10: 75 74 70 75 74 2d 74 6f 2d 66 69 6c 65 20 28 63 utput-to-file (c 2b20: 6f 6e 63 20 74 65 73 74 64 69 72 20 22 2f 22 20 onc testdir "/" 2b30: 73 74 65 70 6e 61 6d 65 20 22 2e 6c 6f 67 70 72 stepname ".logpr 2b40: 6f 22 29 0a 09 09 09 20 20 28 6c 61 6d 62 64 61 o").... (lambda 2b50: 20 28 29 0a 09 09 09 20 20 20 20 28 70 72 69 6e ().... (prin 2b60: 74 20 67 65 6e 65 78 61 6d 70 6c 65 3a 65 78 61 t genexample:exa 2b70: 6d 70 6c 65 2d 6c 6f 67 70 72 6f 29 29 29 0a 09 mple-logpro))).. 2b80: 09 09 28 77 69 74 68 2d 6f 75 74 70 75 74 2d 74 ..(with-output-t 2b90: 6f 2d 66 69 6c 65 20 28 63 6f 6e 63 20 74 65 73 o-file (conc tes 2ba0: 74 64 69 72 20 22 2f 22 20 73 63 72 69 70 74 20 tdir "/" script 2bb0: 22 2e 73 68 22 29 0a 09 09 09 20 20 28 6c 61 6d ".sh").... (lam 2bc0: 62 64 61 20 28 29 0a 09 09 09 20 20 20 20 28 70 bda ().... (p 2bd0: 72 69 6e 74 20 67 65 6e 65 78 61 6d 70 6c 65 3a rint genexample: 2be0: 65 78 61 6d 70 6c 65 2d 73 63 72 69 70 74 29 29 example-script)) 2bf0: 29 0a 09 09 09 28 73 79 73 74 65 6d 20 28 63 6f )....(system (co 2c00: 6e 63 20 22 63 68 6d 6f 64 20 75 67 2b 72 20 22 nc "chmod ug+r " 2c10: 20 28 63 6f 6e 63 20 74 65 73 74 64 69 72 20 22 (conc testdir " 2c20: 2f 22 20 73 63 72 69 70 74 20 22 2e 73 68 22 29 /" script ".sh") 2c30: 29 29 29 29 0a 09 09 20 20 20 20 73 74 65 70 73 ))))... steps 2c40: 29 29 29 29 29 29 0a 09 20 20 3b 3b 20 0a )))))).. ;; .