Artifact 35a078568515ba67cd1dec20dd263ec62ad5c24b:
- File genexample.scm — part of check-in [3de9db9a0f] at 2012-04-23 02:36:33 on branch extend-test-get-path — Added simple helper for creating new tests and megatest areas (user: matt size: 10303)
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 66 69 72 73 74 20 70 72 6f 6d 70 74 20 75 73 first prompt us 07b0: 65 72 20 66 6f 72 20 66 69 65 6c 64 73 0a 20 20 er for fields. 07c0: 20 20 3b 3b 0a 20 20 20 20 28 70 72 69 6e 74 20 ;;. (print 07d0: 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d "=============== 07e0: 3d 3d 3d 5c 6e 4e 65 78 74 20 79 6f 75 20 6d 75 ===\nNext you mu 07f0: 73 74 20 73 70 65 63 69 66 79 20 66 69 65 6c 64 st specify field 0800: 73 20 6f 72 20 6b 65 79 73 20 66 6f 72 20 79 6f s or keys for yo 0810: 75 72 20 6d 65 67 61 74 65 73 74 20 61 72 65 61 ur megatest area 0820: 2e 20 54 68 65 73 65 20 77 69 6c 6c 20 0a 62 65 . These will .be 0830: 20 75 73 65 64 20 74 6f 20 6f 72 67 61 6e 69 73 used to organis 0840: 65 20 79 6f 75 72 20 72 75 6e 73 2e 20 4f 6e 65 e your runs. One 0850: 20 66 69 65 6c 64 20 73 68 6f 75 6c 64 20 70 72 field should pr 0860: 6f 62 61 62 6c 79 20 62 65 20 5c 22 52 45 4c 45 obably be \"RELE 0870: 41 53 45 5c 22 2e 20 0a 4f 74 68 65 72 20 65 78 ASE\". .Other ex 0880: 61 6d 70 6c 65 73 20 6f 66 20 75 73 65 66 75 6c amples of useful 0890: 20 66 69 65 6c 64 73 20 6d 69 67 68 74 20 62 65 fields might be 08a0: 20 5c 22 50 4c 41 54 46 4f 52 4d 5c 22 2c 20 5c \"PLATFORM\", \ 08b0: 22 54 41 52 47 45 54 5f 4f 53 5c 22 20 6f 72 20 "TARGET_OS\" or 08c0: 69 66 20 79 6f 75 20 61 72 65 20 69 6e 20 74 68 if you are in th 08d0: 65 0a 73 65 6d 69 63 6f 6e 64 75 63 74 6f 72 20 e.semiconductor 08e0: 62 75 73 69 6e 65 73 73 20 70 65 72 68 61 70 73 business perhaps 08f0: 20 74 68 69 6e 67 73 20 6c 69 6b 65 20 5c 22 54 things like \"T 0900: 45 43 48 4e 4f 4c 4f 47 59 5f 4e 4f 44 45 5c 22 ECHNOLOGY_NODE\" 0910: 2c 20 5c 22 44 45 53 49 47 4e 5f 4b 49 54 5c 22 , \"DESIGN_KIT\" 0920: 20 6f 72 20 5c 22 4d 45 54 41 4c 5f 53 54 41 43 or \"METAL_STAC 0930: 4b 5c 22 2e 0a 0a 54 68 65 20 61 6c 6c 20 63 61 K\"...The all ca 0940: 70 73 20 69 73 20 61 20 63 6f 6e 76 65 6e 74 69 ps is a conventi 0950: 6f 6e 20 62 65 63 61 75 73 65 20 74 68 65 20 76 on because the v 0960: 61 72 69 61 62 6c 65 73 20 79 6f 75 20 63 68 6f ariables you cho 0970: 6f 73 65 20 77 69 6c 6c 20 62 65 20 61 76 61 69 ose will be avai 0980: 6c 61 62 6c 65 20 74 6f 20 79 6f 75 72 20 74 65 lable to your te 0990: 73 74 73 0a 61 73 20 65 6e 76 69 72 6f 6e 6d 65 sts.as environme 09a0: 6e 74 20 76 61 72 69 61 62 6c 65 73 2e 20 59 6f nt variables. Yo 09b0: 75 20 63 61 6e 20 65 64 69 74 20 74 68 65 73 65 u can edit these 09c0: 20 76 61 6c 75 65 73 20 6c 61 74 65 72 20 62 75 values later bu 09d0: 74 20 69 74 20 69 73 20 67 65 6e 65 72 61 6c 6c t it is generall 09e0: 79 20 61 20 67 6f 6f 64 20 69 64 65 61 20 74 6f y a good idea to 09f0: 0a 73 65 74 74 6c 65 20 6f 6e 20 74 68 65 6d 20 .settle on them 0a00: 61 6e 64 20 67 65 74 20 74 68 65 6d 20 72 69 67 and get them rig 0a10: 68 74 20 65 61 72 6c 79 20 6f 6e 2e 20 59 6f 75 ht early on. You 0a20: 72 20 72 75 6e 73 20 77 69 6c 6c 20 62 65 20 73 r runs will be s 0a30: 74 6f 72 65 64 20 69 6e 20 64 69 72 65 63 74 6f tored in directo 0a40: 72 69 65 73 20 73 70 65 63 69 66 69 65 64 20 62 ries specified b 0a50: 79 0a 79 6f 75 72 20 6b 65 79 73 2e 20 45 78 61 y.your keys. Exa 0a60: 6d 70 6c 65 2c 20 69 66 20 79 6f 75 20 68 61 76 mple, if you hav 0a70: 65 20 6b 65 79 73 20 4f 53 46 41 4d 49 4c 59 2f e keys OSFAMILY/ 0a80: 56 41 52 49 41 4e 54 2f 4f 53 56 45 52 2f 52 45 VARIANT/OSVER/RE 0a90: 4c 45 41 53 45 20 79 6f 75 20 6d 61 79 20 67 65 LEASE you may ge 0aa0: 74 20 61 20 74 65 73 74 20 5c 22 62 75 69 6c 64 t a test \"build 0ab0: 5c 22 0a 69 6e 20 61 20 64 69 72 65 63 74 6f 72 \".in a director 0ac0: 79 20 6c 69 6b 65 20 74 68 69 73 3a 20 6c 69 6e y like this: lin 0ad0: 75 78 2f 75 62 75 6e 74 75 2f 31 31 2e 30 34 2f ux/ubuntu/11.04/ 0ae0: 72 65 76 5f 31 2e 32 2f 62 75 69 6c 64 0a 0a 50 rev_1.2/build..P 0af0: 6c 65 61 73 65 20 65 6e 74 65 72 20 79 6f 75 72 lease enter your 0b00: 20 6b 65 79 73 20 6e 6f 77 2c 20 73 65 70 61 72 keys now, separ 0b10: 61 74 65 64 20 62 79 20 73 70 61 63 65 73 20 6f ated by spaces o 0b20: 72 20 73 6c 61 73 68 65 73 2e 20 4f 6e 6c 79 20 r slashes. Only 0b30: 61 6c 70 68 61 2d 6e 75 6d 65 72 69 63 20 63 68 alpha-numeric ch 0b40: 61 72 61 63 74 65 72 73 2e 20 0a 55 70 70 65 72 aracters. .Upper 0b50: 20 63 61 73 65 20 72 65 63 6f 6d 6d 65 6e 64 65 case recommende 0b60: 64 2e 22 29 0a 20 20 20 20 28 64 69 73 70 6c 61 d."). (displa 0b70: 79 20 22 45 6e 74 65 72 20 6b 65 79 73 20 73 65 y "Enter keys se 0b80: 70 61 72 61 74 65 64 20 62 79 20 73 70 61 63 65 parated by space 0b90: 73 20 6f 72 20 73 6c 61 73 68 65 73 3a 20 22 29 s or slashes: ") 0ba0: 0a 20 20 20 20 28 73 65 74 21 20 6b 65 79 73 74 . (set! keyst 0bb0: 72 20 28 72 65 61 64 2d 6c 69 6e 65 29 29 0a 20 r (read-line)). 0bc0: 20 20 20 28 73 65 74 21 20 6b 65 79 73 20 20 20 (set! keys 0bd0: 28 61 70 70 6c 79 20 61 70 70 65 6e 64 0a 09 09 (apply append... 0be0: 09 28 6d 61 70 20 73 74 72 69 6e 67 2d 73 70 6c .(map string-spl 0bf0: 69 74 20 28 73 74 72 69 6e 67 2d 73 70 6c 69 74 it (string-split 0c00: 20 6b 65 79 73 74 72 20 22 2f 22 29 29 29 29 0a keystr "/")))). 0c10: 20 20 20 20 0a 20 20 20 20 3b 3b 20 4e 6f 77 20 . ;; Now 0c20: 67 65 74 20 74 68 65 20 6c 69 6e 6b 20 74 72 65 get the link tre 0c30: 65 20 6c 6f 63 61 74 69 6f 6e 20 61 6e 64 20 61 e location and a 0c40: 20 66 69 72 73 74 20 64 69 73 6b 0a 20 20 20 20 first disk. 0c50: 28 70 72 69 6e 74 20 22 3d 3d 3d 3d 3d 3d 3d 3d (print "======== 0c60: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 4e 6f 77 20 ==========\nNow 0c70: 79 6f 75 20 6e 65 65 64 20 61 6e 20 69 6e 69 74 you need an init 0c80: 69 61 6c 20 70 6c 61 63 65 20 74 6f 20 73 74 6f ial place to sto 0c90: 72 65 20 79 6f 75 72 20 72 75 6e 73 2e 20 54 68 re your runs. Th 0ca0: 65 73 65 20 61 72 65 20 63 61 6c 6c 65 64 20 5c ese are called \ 0cb0: 22 64 69 73 6b 73 5c 22 20 61 6e 64 20 79 6f 75 "disks\" and you 0cc0: 0a 63 61 6e 20 61 64 64 20 6d 6f 72 65 20 61 74 .can add more at 0cd0: 20 61 6e 79 20 74 69 6d 65 2e 20 54 6f 20 67 65 any time. To ge 0ce0: 74 20 67 6f 69 6e 67 20 70 72 6f 76 69 64 65 20 t going provide 0cf0: 61 20 77 72 69 74 65 61 62 6c 65 20 64 69 72 65 a writeable dire 0d00: 63 74 6f 72 79 20 6e 61 6d 65 2e 20 22 29 0a 20 ctory name. "). 0d10: 20 20 20 28 64 69 73 70 6c 61 79 20 22 45 6e 74 (display "Ent 0d20: 65 72 20 79 6f 75 72 20 74 65 73 74 20 72 75 6e er your test run 0d30: 73 20 64 69 72 65 63 74 6f 72 79 3a 20 22 29 0a s directory: "). 0d40: 20 20 20 20 28 73 65 74 21 20 66 69 72 73 74 64 (set! firstd 0d50: 20 28 72 65 61 64 2d 6c 69 6e 65 29 29 0a 20 20 (read-line)). 0d60: 20 20 28 69 66 20 28 6e 6f 74 20 28 64 69 72 65 (if (not (dire 0d70: 63 74 6f 72 79 3f 20 66 69 72 73 74 64 29 29 0a ctory? firstd)). 0d80: 09 28 62 65 67 69 6e 0a 09 20 20 28 70 72 69 6e .(begin.. (prin 0d90: 74 20 22 57 41 52 4e 49 4e 47 3a 20 79 6f 75 20 t "WARNING: you 0da0: 68 61 76 65 20 73 70 65 63 69 66 69 65 64 20 61 have specified a 0db0: 20 70 61 74 68 20 22 20 66 69 72 73 74 64 20 22 path " firstd " 0dc0: 20 74 68 61 74 20 64 6f 65 73 20 6e 6f 74 20 65 that does not e 0dd0: 78 69 73 74 2e 20 41 74 74 65 6d 70 74 69 6e 67 xist. Attempting 0de0: 20 74 6f 20 63 72 65 61 74 65 20 69 74 2e 2e 2e to create it... 0df0: 5c 6e 22 29 0a 09 20 20 28 63 72 65 61 74 65 2d \n").. (create- 0e00: 64 69 72 65 63 74 6f 72 79 20 66 69 72 73 74 64 directory firstd 0e10: 20 23 74 29 29 29 0a 0a 20 20 20 20 28 70 72 69 #t))).. (pri 0e20: 6e 74 20 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d nt "============ 0e30: 3d 3d 3d 3d 3d 3d 5c 6e 4d 65 67 61 74 65 73 74 ======\nMegatest 0e40: 20 75 73 65 73 20 61 20 74 72 65 65 20 6f 66 20 uses a tree of 0e50: 73 79 6d 6c 69 6e 6b 73 20 74 6f 20 70 72 6f 76 symlinks to prov 0e60: 69 64 65 20 61 20 75 6e 69 66 6f 72 6d 20 73 74 ide a uniform st 0e70: 72 75 63 74 75 72 65 20 66 6f 72 20 66 69 6e 64 ructure for find 0e80: 69 6e 67 20 61 6c 6c 20 74 68 65 20 74 65 73 74 ing all the test 0e90: 73 0a 79 6f 75 20 72 75 6e 20 6f 76 65 72 20 74 s.you run over t 0ea0: 69 6d 65 2e 20 50 6c 65 61 73 65 20 70 72 6f 76 ime. Please prov 0eb0: 69 64 65 20 61 20 70 61 74 68 20 77 68 65 72 65 ide a path where 0ec0: 20 77 65 20 63 61 6e 20 63 72 65 61 74 65 20 74 we can create t 0ed0: 68 69 73 20 6c 69 6e 6b 20 74 72 65 65 2e 22 29 his link tree.") 0ee0: 0a 20 20 20 20 28 64 69 73 70 6c 61 79 20 22 45 . (display "E 0ef0: 6e 74 65 72 20 6c 69 6e 6b 20 74 72 65 65 20 64 nter link tree d 0f00: 69 72 65 63 74 6f 72 79 3a 20 22 29 0a 20 20 20 irectory: "). 0f10: 20 28 73 65 74 21 20 6c 6e 74 72 65 65 20 28 72 (set! lntree (r 0f20: 65 61 64 2d 6c 69 6e 65 29 29 0a 20 20 20 20 28 ead-line)). ( 0f30: 69 66 20 28 6e 6f 74 20 28 64 69 72 65 63 74 6f if (not (directo 0f40: 72 79 3f 20 6c 6e 74 72 65 65 29 29 0a 09 28 62 ry? lntree))..(b 0f50: 65 67 69 6e 0a 09 20 20 28 70 72 69 6e 74 20 22 egin.. (print " 0f60: 57 41 52 4e 49 4e 47 3a 20 79 6f 75 20 68 61 76 WARNING: you hav 0f70: 65 20 73 70 65 63 69 66 69 65 64 20 61 20 70 61 e specified a pa 0f80: 74 68 20 22 20 6c 6e 74 72 65 65 20 22 74 68 61 th " lntree "tha 0f90: 74 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 t does not exist 0fa0: 2e 20 41 74 74 65 6d 70 74 69 6e 67 20 74 6f 20 . Attempting to 0fb0: 63 72 65 61 74 65 20 69 74 2e 2e 2e 5c 6e 22 29 create it...\n") 0fc0: 0a 09 20 20 28 63 72 65 61 74 65 2d 64 69 72 65 .. (create-dire 0fd0: 63 74 6f 72 79 20 6c 6e 74 72 65 65 20 23 74 29 ctory lntree #t) 0fe0: 29 29 0a 20 20 20 20 0a 20 20 20 20 28 77 69 74 )). . (wit 0ff0: 68 2d 6f 75 74 70 75 74 2d 74 6f 2d 66 69 6c 65 h-output-to-file 1000: 20 28 63 6f 6e 63 20 70 61 74 68 20 22 2f 6d 65 (conc path "/me 1010: 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 22 29 0a gatest.config"). 1020: 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 29 (lambda () 1030: 0a 09 28 70 72 69 6e 74 20 22 5b 66 69 65 6c 64 ..(print "[field 1040: 73 5d 22 29 0a 09 28 6d 61 70 20 28 6c 61 6d 62 s]")..(map (lamb 1050: 64 61 20 28 6b 29 28 70 72 69 6e 74 20 6b 20 22 da (k)(print k " 1060: 20 54 45 58 54 22 29 29 20 6b 65 79 73 29 0a 09 TEXT")) keys).. 1070: 28 70 72 69 6e 74 20 22 22 29 0a 09 28 70 72 69 (print "")..(pri 1080: 6e 74 20 22 5b 73 65 74 75 70 5d 22 29 0a 09 28 nt "[setup]")..( 1090: 70 72 69 6e 74 20 22 23 20 41 64 6a 75 73 74 20 print "# Adjust 10a0: 6d 61 78 5f 63 6f 6e 63 75 72 72 65 6e 74 5f 6a max_concurrent_j 10b0: 6f 62 73 20 74 6f 20 6c 69 6d 69 74 20 68 6f 77 obs to limit how 10c0: 20 6d 75 63 68 20 79 6f 75 20 6c 6f 61 64 20 79 much you load y 10d0: 6f 75 72 20 6d 61 63 68 69 6e 65 73 22 29 0a 09 our machines").. 10e0: 28 70 72 69 6e 74 20 22 6d 61 78 5f 63 6f 6e 63 (print "max_conc 10f0: 75 72 72 65 6e 74 5f 6a 6f 62 73 20 35 30 5c 6e urrent_jobs 50\n 1100: 22 29 0a 09 28 70 72 69 6e 74 20 22 23 20 54 68 ")..(print "# Th 1110: 69 73 20 69 73 20 79 6f 75 72 20 6c 69 6e 6b 20 is is your link 1120: 70 61 74 68 2c 20 79 6f 75 20 63 61 6e 20 6d 6f path, you can mo 1130: 76 65 20 69 74 20 62 75 74 20 69 74 20 69 73 20 ve it but it is 1140: 67 65 6e 65 72 61 6c 6c 79 20 62 65 74 74 65 72 generally better 1150: 20 74 6f 20 6b 65 65 70 20 69 74 20 73 74 61 62 to keep it stab 1160: 6c 65 22 29 0a 09 28 70 72 69 6e 74 20 22 6c 69 le")..(print "li 1170: 6e 6b 74 72 65 65 20 22 20 6c 6e 74 72 65 65 29 nktree " lntree) 1180: 0a 09 28 70 72 69 6e 74 20 22 5c 6e 23 20 4a 6f ..(print "\n# Jo 1190: 62 20 74 6f 6f 6c 73 20 61 72 65 20 6d 6f 72 65 b tools are more 11a0: 20 61 64 76 61 6e 63 65 64 20 77 61 79 73 20 74 advanced ways t 11b0: 6f 20 63 6f 6e 74 72 6f 6c 20 68 6f 77 20 79 6f o control how yo 11c0: 75 72 20 6a 6f 62 73 20 61 72 65 20 6c 61 75 6e ur jobs are laun 11d0: 63 68 65 64 22 29 0a 09 28 70 72 69 6e 74 20 22 ched")..(print " 11e0: 5b 6a 6f 62 74 6f 6f 6c 73 5d 5c 6e 75 73 65 73 [jobtools]\nuses 11f0: 68 65 6c 6c 20 79 65 73 5c 6e 6c 61 75 6e 63 68 hell yes\nlaunch 1200: 65 72 20 6e 62 66 69 6e 64 5c 6e 22 29 0a 09 28 er nbfind\n")..( 1210: 70 72 69 6e 74 20 22 23 20 59 6f 75 20 63 61 6e print "# You can 1220: 20 6f 76 65 72 72 69 64 65 20 65 6e 76 69 72 6f override enviro 1230: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 20 nment variables 1240: 66 6f 72 20 61 6c 6c 20 79 6f 75 72 20 74 65 73 for all your tes 1250: 74 73 20 68 65 72 65 22 29 0a 09 28 70 72 69 6e ts here")..(prin 1260: 74 20 22 5b 65 6e 76 2d 6f 76 65 72 72 69 64 65 t "[env-override 1270: 5d 5c 6e 45 58 41 4d 50 4c 45 5f 56 41 52 20 65 ]\nEXAMPLE_VAR e 1280: 78 61 6d 70 6c 65 20 76 61 6c 75 65 5c 6e 22 29 xample value\n") 1290: 0a 09 28 70 72 69 6e 74 20 22 23 20 41 73 20 79 ..(print "# As y 12a0: 6f 75 20 72 75 6e 20 6d 6f 72 65 20 74 65 73 74 ou run more test 12b0: 73 20 79 6f 75 20 6d 61 79 20 6e 65 65 64 20 74 s you may need t 12c0: 6f 20 61 64 64 20 61 64 64 69 74 69 6f 6e 61 6c o add additional 12d0: 20 64 69 73 6b 73 2c 20 74 68 65 20 6e 61 6d 65 disks, the name 12e0: 73 20 61 72 65 20 61 72 62 69 74 72 61 72 79 20 s are arbitrary 12f0: 62 75 74 20 6d 75 73 74 20 62 65 20 75 6e 69 71 but must be uniq 1300: 75 65 22 29 0a 09 28 70 72 69 6e 74 20 22 5b 64 ue")..(print "[d 1310: 69 73 6b 73 5d 5c 6e 64 69 73 6b 30 20 22 20 66 isks]\ndisk0 " f 1320: 69 72 73 74 64 29 29 29 0a 0a 20 20 20 20 28 70 irstd))).. (p 1330: 72 69 6e 74 20 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d rint "========== 1340: 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 49 27 6d 20 6e 6f ========\nI'm no 1350: 77 20 63 72 65 61 74 69 6e 67 20 61 20 72 75 6e w creating a run 1360: 63 6f 6e 66 69 67 73 2e 63 6f 6e 66 69 67 20 66 configs.config f 1370: 69 6c 65 20 66 6f 72 20 79 6f 75 20 77 69 74 68 ile for you with 1380: 20 61 20 64 65 66 61 75 6c 74 20 73 65 63 74 69 a default secti 1390: 6f 6e 2e 0a 59 6f 75 20 63 61 6e 20 75 73 65 20 on..You can use 13a0: 74 68 69 73 20 66 69 6c 65 20 74 6f 20 73 65 74 this file to set 13b0: 20 76 61 72 69 61 62 6c 65 73 20 66 6f 72 20 79 variables for y 13c0: 6f 75 72 20 74 65 73 74 73 20 62 61 73 65 64 20 our tests based 13d0: 6f 6e 20 74 68 65 20 5c 22 74 61 72 67 65 74 5c on the \"target\ 13e0: 22 20 28 74 68 65 20 63 6f 6d 62 69 6e 61 74 69 " (the combinati 13f0: 6f 6e 0a 6f 66 20 6b 65 79 73 29 2e 22 29 0a 20 on.of keys)."). 1400: 20 20 20 28 77 69 74 68 2d 6f 75 74 70 75 74 2d (with-output- 1410: 74 6f 2d 66 69 6c 65 20 28 63 6f 6e 63 20 70 61 to-file (conc pa 1420: 74 68 20 22 2f 72 75 6e 63 6f 6e 66 69 67 73 2e th "/runconfigs. 1430: 63 6f 6e 66 69 67 22 29 0a 20 20 20 20 20 20 28 config"). ( 1440: 6c 61 6d 62 64 61 20 28 29 0a 09 28 70 72 69 6e lambda ()..(prin 1450: 74 20 22 23 20 54 68 65 20 76 61 72 69 61 62 6c t "# The variabl 1460: 65 73 20 69 6e 20 74 68 65 20 64 65 66 61 75 6c es in the defaul 1470: 74 20 63 61 74 65 67 6f 72 79 20 77 69 6c 6c 20 t category will 1480: 62 65 20 73 65 65 6e 20 69 6e 20 61 6c 6c 20 72 be seen in all r 1490: 75 6e 73 5c 6e 5b 64 65 66 61 75 6c 74 5d 5c 6e uns\n[default]\n 14a0: 41 4c 4c 54 45 53 54 53 20 73 65 65 20 74 68 69 ALLTESTS see thi 14b0: 73 20 76 61 72 69 61 62 6c 65 5c 6e 22 29 0a 09 s variable\n").. 14c0: 0a 09 28 70 72 69 6e 74 20 22 23 20 59 6f 75 72 ..(print "# Your 14d0: 20 76 61 72 69 61 62 6c 65 73 20 68 65 72 65 20 variables here 14e0: 61 72 65 20 67 72 6f 75 70 65 64 20 62 79 20 74 are grouped by t 14f0: 61 72 67 65 74 73 20 5b 22 20 28 73 74 72 69 6e argets [" (strin 1500: 67 2d 69 6e 74 65 72 73 70 65 72 73 65 20 6b 65 g-intersperse ke 1510: 79 73 20 22 2f 22 29 20 22 5d 22 29 0a 09 28 6c ys "/") "]")..(l 1520: 65 74 20 28 28 65 78 61 6d 70 6c 65 2d 74 61 72 et ((example-tar 1530: 67 65 74 20 28 73 74 72 69 6e 67 2d 69 6e 74 65 get (string-inte 1540: 72 73 70 65 72 73 65 20 28 6d 61 70 20 28 6c 61 rsperse (map (la 1550: 6d 62 64 61 20 28 6b 29 28 63 6f 6e 63 20 6b 20 mbda (k)(conc k 1560: 22 5f 76 61 6c 22 29 29 20 6b 65 79 73 29 20 22 "_val")) keys) " 1570: 2f 22 29 29 29 0a 09 20 20 28 70 72 69 6e 74 20 /"))).. (print 1580: 22 5b 22 20 65 78 61 6d 70 6c 65 2d 74 61 72 67 "[" example-targ 1590: 65 74 20 22 5d 22 29 0a 09 20 20 28 70 72 69 6e et "]").. (prin 15a0: 74 20 22 41 4e 4f 54 48 45 52 56 41 52 20 6f 6e t "ANOTHERVAR on 15b0: 6c 79 20 64 65 66 69 6e 65 64 20 69 66 20 74 61 ly defined if ta 15c0: 72 67 65 74 20 69 73 20 22 20 65 78 61 6d 70 6c rget is " exampl 15d0: 65 2d 74 61 72 67 65 74 29 29 29 29 0a 0a 20 20 e-target)))).. 15e0: 20 20 3b 3b 20 4e 6f 77 20 63 72 65 61 74 65 20 ;; Now create 15f0: 61 20 74 65 73 74 20 61 6e 64 20 6c 6f 67 70 72 a test and logpr 1600: 6f 20 66 69 6c 65 0a 20 20 20 20 28 70 72 69 6e o file. (prin 1610: 74 20 22 59 6f 75 20 6e 6f 77 20 68 61 76 65 20 t "You now have 1620: 74 68 65 20 62 61 73 69 63 20 63 6f 6d 6d 6f 6e the basic common 1630: 20 66 69 6c 65 73 20 66 6f 72 20 79 6f 75 72 20 files for your 1640: 6d 65 67 61 74 65 73 74 20 73 65 74 75 70 2e 20 megatest setup. 1650: 4e 65 78 74 20 72 75 6e 20 5c 22 6d 65 67 61 74 Next run \"megat 1660: 65 73 74 20 2d 67 65 6e 74 65 73 74 5c 22 5c 6e est -gentest\"\n 1670: 22 0a 09 20 20 20 22 74 6f 20 63 72 65 61 74 65 ".. "to create 1680: 20 61 20 74 65 73 74 2e 5c 6e 5c 6e 54 68 61 6e a test.\n\nThan 1690: 6b 73 20 66 6f 72 20 75 73 69 6e 67 20 4d 65 67 ks for using Meg 16a0: 61 74 65 73 74 2e 20 59 6f 75 20 63 61 6e 20 65 atest. You can e 16b0: 64 69 74 20 79 6f 75 72 20 63 6f 6e 66 69 67 20 dit your config 16c0: 66 69 6c 65 73 20 61 6e 64 20 63 72 65 61 74 65 files and create 16d0: 20 74 65 73 74 73 5c 6e 22 0a 09 20 20 20 22 69 tests\n".. "i 16e0: 6e 20 74 68 65 20 22 20 70 61 74 68 20 22 20 64 n the " path " d 16f0: 69 72 65 63 74 6f 72 79 22 29 29 29 0a 0a 0a 3b irectory")))...; 1700: 3b 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ;=============== 1710: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 1720: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 1730: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 1740: 3d 3d 3d 3d 3d 3d 3d 0a 3b 3b 20 63 72 65 61 74 =======.;; creat 1750: 65 20 73 6b 65 6c 65 74 6f 6e 20 66 69 6c 65 73 e skeleton files 1760: 20 66 6f 72 20 61 20 74 65 73 74 0a 3b 3b 3d 3d for a test.;;== 1770: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 1780: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 1790: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 17a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 17b0: 3d 3d 3d 3d 0a 0a 28 64 65 66 69 6e 65 20 28 67 ====..(define (g 17c0: 65 6e 65 78 61 6d 70 6c 65 3a 6d 6b 2d 6d 65 67 enexample:mk-meg 17d0: 61 74 65 73 74 2d 74 65 73 74 20 74 65 73 74 6e atest-test testn 17e0: 61 6d 65 29 0a 20 20 3b 3b 20 47 61 74 68 65 72 ame). ;; Gather 17f0: 20 6e 65 65 64 65 64 20 64 61 74 61 0a 20 20 28 needed data. ( 1800: 6c 65 74 20 28 28 77 61 69 74 6f 6e 20 20 20 23 let ((waiton # 1810: 66 29 0a 09 28 70 72 69 6f 72 69 74 79 20 23 66 f)..(priority #f 1820: 29 0a 09 28 64 65 73 63 72 69 70 74 69 6f 6e 20 )..(description 1830: 23 66 29 0a 09 28 73 74 65 70 73 20 20 20 20 27 #f)..(steps ' 1840: 28 29 29 0a 09 28 73 63 72 69 70 74 73 20 20 27 ())..(scripts ' 1850: 28 29 29 0a 09 28 69 74 65 6d 73 20 20 20 20 27 ())..(items ' 1860: 28 29 29 0a 09 28 72 65 6c 2d 70 61 74 68 20 23 ())..(rel-path # 1870: 66 29 29 0a 20 20 20 20 28 70 72 69 6e 74 20 22 f)). (print " 1880: 57 65 20 61 72 65 20 67 6f 69 6e 67 20 74 6f 20 We are going to 1890: 67 65 6e 65 72 61 74 65 20 61 20 73 6b 65 6c 65 generate a skele 18a0: 74 6f 6e 20 73 65 74 20 6f 66 20 66 69 6c 65 73 ton set of files 18b0: 20 66 6f 72 20 79 6f 75 72 20 74 65 73 74 20 22 for your test " 18c0: 20 74 65 73 74 6e 61 6d 65 20 22 20 4e 6f 74 65 testname " Note 18d0: 3a 20 64 6f 20 6e 6f 74 20 77 6f 72 72 79 20 22 : do not worry " 18e0: 0a 09 20 20 20 22 74 6f 6f 20 6d 75 63 68 20 61 .. "too much a 18f0: 62 6f 75 74 20 74 79 70 6f 73 2c 20 79 6f 75 20 bout typos, you 1900: 63 61 6e 20 65 64 69 74 20 74 68 65 20 66 69 6c can edit the fil 1910: 65 73 20 77 68 65 6e 20 79 6f 75 20 61 72 65 20 es when you are 1920: 64 6f 6e 65 22 29 0a 0a 20 20 20 20 28 70 72 69 done").. (pri 1930: 6e 74 20 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d nt "============ 1940: 3d 3d 3d 3d 3d 3d 5c 6e 50 6c 65 61 73 65 20 64 ======\nPlease d 1950: 65 73 63 72 69 62 65 20 74 68 69 73 20 74 65 73 escribe this tes 1960: 74 2e 20 54 68 65 20 64 65 73 63 72 69 70 74 69 t. The descripti 1970: 6f 6e 20 77 69 6c 6c 20 62 65 20 76 69 73 69 62 on will be visib 1980: 6c 65 20 69 6e 20 76 61 72 69 6f 75 73 20 64 69 le in various di 1990: 61 6c 6f 67 73 20 61 6e 64 20 72 65 70 6f 72 74 alogs and report 19a0: 73 22 29 0a 20 20 20 20 28 64 69 73 70 6c 61 79 s"). (display 19b0: 20 22 45 6e 74 65 72 20 6f 6e 65 20 6c 69 6e 65 "Enter one line 19c0: 20 64 65 73 63 72 69 70 74 69 6f 6e 20 66 6f 72 description for 19d0: 20 74 68 69 73 20 74 65 73 74 3a 20 22 29 0a 20 this test: "). 19e0: 20 20 20 28 73 65 74 21 20 64 65 73 63 72 69 70 (set! descrip 19f0: 74 69 6f 6e 20 28 72 65 61 64 2d 6c 69 6e 65 29 tion (read-line) 1a00: 29 0a 0a 20 20 20 20 28 70 72 69 6e 74 20 22 3d ).. (print "= 1a10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 1a20: 3d 5c 6e 44 6f 65 73 20 74 68 69 73 20 74 65 73 =\nDoes this tes 1a30: 74 2c 20 22 20 74 65 73 74 6e 61 6d 65 20 22 2c t, " testname ", 1a40: 20 72 65 71 75 69 72 65 20 61 6e 79 20 6f 74 68 require any oth 1a50: 65 72 20 74 65 73 74 20 62 65 20 72 75 6e 20 70 er test be run p 1a60: 72 69 6f 72 20 74 6f 20 6c 61 75 6e 63 68 3f 22 rior to launch?" 1a70: 29 0a 20 20 20 20 28 64 69 73 70 6c 61 79 20 28 ). (display ( 1a80: 63 6f 6e 63 20 22 45 6e 74 65 72 20 73 70 61 63 conc "Enter spac 1a90: 65 20 64 65 6c 69 6d 69 74 65 64 20 6c 69 73 74 e delimited list 1aa0: 20 6f 66 20 74 65 73 74 73 20 77 68 69 63 68 20 of tests which 1ab0: 22 20 74 65 73 74 6e 61 6d 65 20 22 20 6d 75 73 " testname " mus 1ac0: 74 20 77 61 69 74 20 66 6f 72 3a 20 22 29 29 0a t wait for: ")). 1ad0: 20 20 20 20 28 73 65 74 21 20 77 61 69 74 6f 6e (set! waiton 1ae0: 20 28 72 65 61 64 2d 6c 69 6e 65 29 29 0a 0a 20 (read-line)).. 1af0: 20 20 20 28 70 72 69 6e 74 20 22 3d 3d 3d 3d 3d (print "===== 1b00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 5c 6e 44 =============\nD 1b10: 6f 20 79 6f 75 20 77 69 73 68 20 74 6f 20 70 72 o you wish to pr 1b20: 69 6f 72 69 74 69 7a 65 20 74 68 65 20 72 75 6e ioritize the run 1b30: 6e 69 6e 67 20 6f 66 20 74 68 69 73 20 74 65 73 ning of this tes 1b40: 74 20 6f 76 65 72 20 6f 74 68 65 72 20 74 65 73 t over other tes 1b50: 74 73 3f 20 49 66 20 73 6f 22 29 0a 20 20 20 20 ts? If so"). 1b60: 28 70 72 69 6e 74 20 22 65 6e 74 65 72 20 61 20 (print "enter a 1b70: 6e 75 6d 62 65 72 20 67 72 65 61 74 65 72 20 74 number greater t 1b80: 68 61 6e 20 7a 65 72 6f 20 68 65 72 65 22 29 0a han zero here"). 1b90: 20 20 20 20 28 64 69 73 70 6c 61 79 20 22 45 6e (display "En 1ba0: 74 65 72 20 61 20 70 72 69 6f 72 69 74 79 20 6f ter a priority o 1bb0: 66 20 30 20 28 64 65 66 61 75 6c 74 29 20 6f 72 f 0 (default) or 1bc0: 20 68 69 67 68 65 72 3a 20 22 29 0a 20 20 20 20 higher: "). 1bd0: 28 73 65 74 21 20 70 72 69 6f 72 69 74 79 20 28 (set! priority ( 1be0: 72 65 61 64 2d 6c 69 6e 65 29 29 0a 0a 20 20 20 read-line)).. 1bf0: 20 3b 3b 20 47 65 74 20 74 68 65 20 73 74 65 70 ;; Get the step 1c00: 73 0a 20 20 20 20 28 70 72 69 6e 74 20 22 3d 3d s. (print "== 1c10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 1c20: 5c 6e 4e 6f 77 20 74 6f 20 65 6e 74 65 72 20 74 \nNow to enter t 1c30: 68 65 20 6f 6e 65 20 6f 72 20 6d 6f 72 65 20 73 he one or more s 1c40: 74 65 70 73 20 74 68 61 74 20 6d 61 6b 65 20 75 teps that make u 1c50: 70 20 79 6f 75 72 20 74 65 73 74 2c 20 6e 6f 74 p your test, not 1c60: 65 3b 20 79 6f 75 20 63 61 6e 20 61 64 64 20 6d e; you can add m 1c70: 6f 72 65 20 6c 61 74 65 72 22 29 0a 20 20 20 20 ore later"). 1c80: 28 70 72 69 6e 74 20 22 48 69 6e 74 3b 20 75 73 (print "Hint; us 1c90: 65 20 2e 73 68 20 65 78 74 65 6e 73 69 6f 6e 20 e .sh extension 1ca0: 6f 6e 20 74 68 65 20 73 63 72 69 70 74 20 6e 61 on the script na 1cb0: 6d 65 73 20 61 6e 64 20 77 65 27 6c 6c 20 63 72 mes and we'll cr 1cc0: 65 61 74 65 20 70 6c 61 63 65 68 6f 6c 64 65 72 eate placeholder 1cd0: 20 73 63 72 69 70 74 73 2e 22 0a 0a 20 20 20 20 scripts.".. 1ce0: 28 6c 65 74 20 28 28 73 74 65 70 6e 61 6d 65 20 (let ((stepname 1cf0: 20 20 23 66 29 0a 09 20 20 28 73 63 72 69 70 74 #f).. (script 1d00: 6e 61 6d 65 20 23 66 29 29 0a 20 20 20 20 20 20 name #f)). 1d10: 28 6c 65 74 20 6c 6f 6f 70 20 28 28 64 6f 6e 65 (let loop ((done 1d20: 20 23 66 29 29 0a 09 28 64 69 73 70 6c 61 79 20 #f))..(display 1d30: 22 45 6e 74 65 72 20 74 68 65 20 6e 61 6d 65 20 "Enter the name 1d40: 66 6f 72 20 74 68 69 73 20 73 74 65 70 20 28 62 for this step (b 1d50: 6c 61 6e 6b 20 74 6f 20 73 74 6f 70 29 3a 20 22 lank to stop): " 1d60: 29 0a 09 28 73 65 74 21 20 73 74 65 70 6e 61 6d )..(set! stepnam 1d70: 65 20 28 72 65 61 64 2d 6c 69 6e 65 29 29 0a 09 e (read-line)).. 1d80: 28 69 66 20 28 6e 6f 74 20 28 65 71 75 61 6c 3f (if (not (equal? 1d90: 20 73 74 65 70 6e 61 6d 65 20 22 22 29 29 0a 09 stepname "")).. 1da0: 20 20 20 20 28 62 65 67 69 6e 0a 09 20 20 20 20 (begin.. 1db0: 20 20 28 64 69 73 70 6c 61 79 20 22 45 6e 74 65 (display "Ente 1dc0: 72 20 74 68 65 20 73 63 72 69 70 74 20 6f 72 20 r the script or 1dd0: 70 72 6f 67 61 6d 20 74 6f 20 72 75 6e 3a 20 22 progam to run: " 1de0: 29 0a 09 20 20 20 20 20 20 28 73 65 74 21 20 73 ).. (set! s 1df0: 63 72 69 70 74 6e 61 6d 65 20 28 72 65 61 64 2d criptname (read- 1e00: 6c 69 6e 65 29 29 0a 09 20 20 20 20 20 20 28 73 line)).. (s 1e10: 65 74 21 20 73 74 65 70 73 20 28 61 70 70 65 6e et! steps (appen 1e20: 64 20 73 74 65 70 73 20 28 6c 69 73 74 20 28 6c d steps (list (l 1e30: 69 73 74 20 73 74 65 70 6e 61 6d 65 20 73 63 72 ist stepname scr 1e40: 69 70 74 6e 61 6d 65 29 29 29 29 29 29 0a 09 28 iptname))))))..( 1e50: 69 66 20 28 6e 6f 74 20 28 65 71 75 61 6c 3f 20 if (not (equal? 1e60: 73 74 65 70 6e 61 6d 65 20 22 22 29 29 0a 09 20 stepname "")).. 1e70: 20 20 20 28 6c 6f 6f 70 20 23 66 29 29 29 29 0a (loop #f)))). 1e80: 0a 20 20 20 20 3b 3b 20 47 65 74 20 74 68 65 20 . ;; Get the 1e90: 69 74 65 6d 73 0a 20 20 20 20 28 70 72 69 6e 74 items. (print 1ea0: 20 22 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d "============== 1eb0: 3d 3d 3d 3d 5c 6e 4e 65 78 74 20 77 65 20 6e 65 ====\nNext we ne 1ec0: 65 64 20 74 6f 20 67 65 74 20 74 68 65 20 76 61 ed to get the va 1ed0: 72 69 61 62 6c 65 73 20 61 6e 64 20 76 61 6c 75 riables and valu 1ee0: 65 73 20 79 6f 75 20 77 69 73 68 20 74 6f 20 69 es you wish to i 1ef0: 74 65 72 61 74 65 20 74 68 69 73 20 74 65 73 74 terate this test 1f00: 20 6f 76 65 72 20 28 62 6c 61 6e 6b 20 66 6f 72 over (blank for 1f10: 20 6e 6f 6e 65 29 22 29 0a 20 20 20 20 28 6c 65 none)"). (le 1f20: 74 20 28 28 76 61 72 6e 61 6d 65 20 23 66 29 0a t ((varname #f). 1f30: 09 20 20 28 76 61 6c 75 65 73 20 20 23 66 29 29 . (values #f)) 1f40: 0a 20 20 20 20 20 20 28 6c 65 74 20 6c 6f 6f 70 . (let loop 1f50: 20 28 28 64 6f 6e 65 20 23 66 29 29 0a 09 28 64 ((done #f))..(d 1f60: 69 73 70 6c 61 79 20 22 45 6e 74 65 72 20 74 68 isplay "Enter th 1f70: 65 20 76 61 72 69 61 62 6c 65 20 6e 61 6d 65 3a e variable name: 1f80: 20 22 29 0a 09 28 73 65 74 21 20 76 61 72 6e 61 ")..(set! varna 1f90: 6d 65 20 28 72 65 61 64 2d 6c 69 6e 65 29 29 0a me (read-line)). 1fa0: 09 28 69 66 20 28 6e 6f 74 20 28 65 71 75 61 6c .(if (not (equal 1fb0: 3f 20 76 61 72 6e 61 6d 65 20 22 22 29 29 0a 09 ? varname "")).. 1fc0: 20 20 20 20 28 62 65 67 69 6e 0a 09 20 20 20 20 (begin.. 1fd0: 20 20 28 64 69 73 70 6c 61 79 20 28 63 6f 6e 63 (display (conc 1fe0: 20 22 45 6e 74 65 72 20 74 68 65 20 73 70 61 63 "Enter the spac 1ff0: 65 20 73 65 70 61 72 61 74 65 64 20 6c 69 73 74 e separated list 2000: 20 6f 66 20 76 61 6c 75 65 73 20 66 6f 72 20 22 of values for " 2010: 20 76 61 72 6e 61 6d 65 20 22 3a 20 22 29 29 0a varname ": ")). 2020: 09 20 20 20 20 20 20 28 73 65 74 21 20 76 61 6c . (set! val 2030: 75 65 73 20 28 72 65 61 64 2d 6c 69 6e 65 29 29 ues (read-line)) 2040: 0a 09 20 20 20 20 20 20 28 73 65 74 21 20 69 74 .. (set! it 2050: 65 6d 73 20 28 61 70 70 65 6e 64 20 69 74 65 6d ems (append item 2060: 73 20 28 6c 69 73 74 20 28 63 6f 6e 63 20 76 61 s (list (conc va 2070: 72 6e 61 6d 65 20 22 20 22 20 76 61 6c 75 65 73 rname " " values 2080: 29 29 29 29 29 29 0a 09 28 69 66 20 28 6e 6f 74 ))))))..(if (not 2090: 20 28 65 71 75 61 6c 3f 20 76 61 72 6e 61 6d 65 (equal? varname 20a0: 20 22 22 29 29 0a 09 20 20 20 20 28 6c 6f 6f 70 "")).. (loop 20b0: 20 23 66 29 29 29 29 0a 0a 20 20 20 20 3b 3b 20 #f)))).. ;; 20c0: 4e 6f 77 20 63 72 65 61 74 65 20 74 68 65 20 74 Now create the t 20d0: 65 73 74 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 est. (cond. 20e0: 20 20 20 28 28 66 69 6c 65 2d 65 78 69 73 74 73 ((file-exists 20f0: 3f 20 22 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 ? "megatest.conf 2100: 69 67 22 29 20 20 20 20 20 20 20 20 20 28 73 65 ig") (se 2110: 74 21 20 72 65 6c 2d 70 61 74 68 20 22 2e 2f 22 t! rel-path "./" 2120: 29 29 0a 20 20 20 20 20 28 28 66 69 6c 65 2d 65 )). ((file-e 2130: 78 69 73 74 73 3f 20 22 2e 2e 2f 6d 65 67 61 74 xists? "../megat 2140: 65 73 74 2e 63 6f 6e 66 69 67 22 29 20 20 20 20 est.config") 2150: 20 20 28 73 65 74 21 20 72 65 6c 2d 70 61 74 68 (set! rel-path 2160: 20 22 2e 2e 2f 22 29 29 0a 20 20 20 20 20 28 28 "../")). (( 2170: 66 69 6c 65 2d 65 78 69 73 74 73 3f 20 22 2e 2e file-exists? ".. 2180: 2f 2e 2e 2f 6d 65 67 61 74 65 73 74 2e 63 6f 6e /../megatest.con 2190: 66 69 67 22 29 20 20 20 28 73 65 74 21 20 72 65 fig") (set! re 21a0: 6c 2d 70 61 74 68 20 22 2e 2e 2f 2e 2e 2f 22 29 l-path "../../") 21b0: 29 0a 20 20 20 20 20 28 28 66 69 6c 65 2d 65 78 ). ((file-ex 21c0: 69 73 74 73 3f 20 22 2e 2e 2f 2e 2e 2f 2e 2e 2f ists? "../../../ 21d0: 6d 65 67 61 74 65 73 74 2e 63 6f 6e 66 69 67 22 megatest.config" 21e0: 29 28 73 65 74 21 20 72 65 6c 2d 70 61 74 68 20 )(set! rel-path 21f0: 22 2e 2e 2f 2e 2e 2f 2e 2e 2f 22 29 29 29 20 3b "../../../"))) ; 2200: 3b 20 67 6f 6f 64 20 65 6e 6f 75 67 68 20 64 61 ; good enough da 2210: 6e 67 20 69 74 2e 0a 20 20 20 20 28 69 66 20 28 ng it.. (if ( 2220: 6e 6f 74 20 72 65 6c 2d 70 61 74 68 29 0a 09 28 not rel-path)..( 2230: 62 65 67 69 6e 0a 09 20 20 28 70 72 69 6e 74 20 begin.. (print 2240: 22 45 52 52 4f 52 3a 20 59 6f 75 20 6d 75 73 74 "ERROR: You must 2250: 20 72 75 6e 20 74 68 69 73 20 63 6f 6d 6d 61 6e run this comman 2260: 64 20 69 6e 20 61 20 6d 65 67 61 74 65 73 74 20 d in a megatest 2270: 61 72 65 61 20 75 6e 64 65 72 20 77 68 65 72 65 area under where 2280: 20 74 68 65 20 6d 65 67 61 74 65 73 74 2e 63 6f the megatest.co 2290: 6e 66 69 67 20 66 69 6c 65 20 65 78 69 73 74 73 nfig file exists 22a0: 2e 22 29 0a 09 20 20 28 65 78 69 74 20 31 29 29 .").. (exit 1)) 22b0: 0a 09 28 6c 65 74 20 28 28 74 65 73 74 64 69 72 ..(let ((testdir 22c0: 20 28 63 6f 6e 63 20 72 65 6c 2d 70 61 74 68 20 (conc rel-path 22d0: 22 74 65 73 74 73 2f 22 20 74 65 73 74 6e 61 6d "tests/" testnam 22e0: 65 29 29 29 0a 09 20 20 28 63 72 65 61 74 65 2d e))).. (create- 22f0: 64 69 72 65 63 74 6f 72 79 20 74 65 73 74 64 69 directory testdi 2300: 72 20 23 74 29 0a 09 20 20 28 77 69 74 68 2d 6f r #t).. (with-o 2310: 75 74 70 75 74 2d 74 6f 2d 66 69 6c 65 20 28 63 utput-to-file (c 2320: 6f 6e 63 20 74 65 73 74 64 69 72 20 22 2f 74 65 onc testdir "/te 2330: 73 74 63 6f 6e 66 69 67 22 29 0a 09 20 20 20 20 stconfig").. 2340: 28 6c 61 6d 62 64 61 20 28 29 0a 09 20 20 20 20 (lambda ().. 2350: 20 20 28 70 72 69 6e 74 20 22 23 20 41 64 64 20 (print "# Add 2360: 61 64 64 69 74 69 6f 6e 61 6c 20 73 74 65 70 73 additional steps 2370: 20 68 65 72 65 2e 20 46 6f 72 6d 61 74 20 69 73 here. Format is 2380: 20 5c 22 73 74 65 70 6e 61 6d 65 20 73 63 72 69 \"stepname scri 2390: 70 74 5c 22 5c 6e 5b 65 7a 73 74 65 70 73 5d 22 pt\"\n[ezsteps]" 23a0: 29 0a 09 20 20 20 20 20 20 28 6d 61 70 20 28 6c ).. (map (l 23b0: 61 6d 62 64 61 20 28 73 74 70 29 28 70 72 69 6e ambda (stp)(prin 23c0: 74 20 28 73 74 72 69 6e 67 2d 69 6e 74 65 72 73 t (string-inters 23d0: 70 65 72 73 65 20 73 74 70 20 22 20 22 29 29 29 perse stp " "))) 23e0: 20 73 74 65 70 73 29 0a 09 20 20 20 20 20 20 28 steps).. ( 23f0: 70 72 69 6e 74 20 22 22 29 0a 09 20 20 20 20 20 print "").. 2400: 20 28 70 72 69 6e 74 20 22 23 20 54 65 73 74 20 (print "# Test 2410: 72 65 71 75 69 72 65 6d 65 6e 74 73 20 61 72 65 requirements are 2420: 20 73 70 65 63 69 66 69 65 64 20 68 65 72 65 5c specified here\ 2430: 6e 5b 72 65 71 75 69 72 65 6d 65 6e 74 73 5d 22 n[requirements]" 2440: 29 0a 09 20 20 20 20 20 20 28 70 72 69 6e 74 20 ).. (print 2450: 22 77 61 69 74 6f 6e 20 22 20 77 61 69 74 6f 6e "waiton " waiton 2460: 29 0a 09 20 20 20 20 20 20 28 70 72 69 6e 74 20 ).. (print 2470: 22 70 72 69 6f 72 69 74 79 20 22 20 70 72 69 6f "priority " prio 2480: 72 69 74 79 20 22 5c 6e 22 29 0a 09 20 20 20 20 rity "\n").. 2490: 20 20 28 70 72 69 6e 74 20 22 23 20 49 74 65 72 (print "# Iter 24a0: 61 74 69 6f 6e 20 66 6f 72 20 79 6f 75 72 20 74 ation for your t 24b0: 65 73 74 73 20 61 72 65 20 63 6f 6e 74 72 6f 6c ests are control 24c0: 6c 65 64 20 62 79 20 74 68 65 20 69 74 65 6d 73 led by the items 24d0: 20 73 65 63 74 69 6f 6e 5c 6e 5b 69 74 65 6d 73 section\n[items 24e0: 5d 22 29 0a 09 20 20 20 20 20 20 28 6d 61 70 20 ]").. (map 24f0: 70 72 69 6e 74 20 69 74 65 6d 73 29 0a 09 20 20 print items).. 2500: 20 20 20 20 28 70 72 69 6e 74 20 22 22 29 0a 09 (print "").. 2510: 20 20 20 20 20 20 28 70 72 69 6e 74 20 22 23 20 (print "# 2520: 74 65 73 74 5f 6d 65 74 61 20 69 73 20 61 20 73 test_meta is a s 2530: 65 63 74 69 6f 6e 20 66 6f 72 20 73 74 6f 72 69 ection for stori 2540: 6e 67 20 61 64 64 69 74 69 6f 6e 61 6c 20 64 61 ng additional da 2550: 74 61 20 6f 6e 20 79 6f 75 72 20 74 65 73 74 5c ta on your test\ 2560: 6e 5b 74 65 73 74 5f 6d 65 74 61 5d 22 29 0a 09 n[test_meta]").. 2570: 20 20 20 20 20 20 28 70 72 69 6e 74 20 22 61 75 (print "au 2580: 74 68 6f 72 20 22 20 28 67 65 74 2d 65 6e 76 69 thor " (get-envi 2590: 72 6f 6e 6d 65 6e 74 2d 76 61 72 69 61 62 6c 65 ronment-variable 25a0: 20 22 55 53 45 52 22 29 29 0a 09 20 20 20 20 20 "USER")).. 25b0: 20 28 70 72 69 6e 74 20 22 6f 77 6e 65 72 20 20 (print "owner 25c0: 22 20 28 67 65 74 2d 65 6e 76 69 72 6f 6e 6d 65 " (get-environme 25d0: 6e 74 2d 76 61 72 69 61 62 6c 65 20 22 55 53 45 nt-variable "USE 25e0: 52 22 29 29 0a 09 20 20 20 20 20 20 28 70 72 69 R")).. (pri 25f0: 6e 74 20 22 64 65 73 63 72 69 70 74 69 6f 6e 20 nt "description 2600: 22 20 64 65 73 63 72 69 70 74 69 6f 6e 29 0a 09 " description).. 2610: 20 20 20 20 20 20 28 70 72 69 6e 74 20 22 74 61 (print "ta 2620: 67 73 20 74 61 67 6f 6e 65 2c 74 61 67 74 77 6f gs tagone,tagtwo 2630: 22 29 0a 09 20 20 20 20 20 20 28 70 72 69 6e 74 ").. (print 2640: 20 22 72 65 76 69 65 77 65 64 20 6e 65 76 65 72 "reviewed never 2650: 22 29 29 29 0a 09 20 20 3b 3b 20 4e 6f 77 20 63 "))).. ;; Now c 2660: 72 65 61 74 65 20 73 68 65 6c 6c 20 73 63 72 69 reate shell scri 2670: 70 74 73 20 28 69 66 20 65 78 74 65 6e 73 69 6f pts (if extensio 2680: 6e 20 69 73 20 2e 73 68 29 20 61 6e 64 20 6c 6f n is .sh) and lo 2690: 67 70 72 6f 20 66 69 6c 65 73 0a 09 20 20 28 66 gpro files.. (f 26a0: 6f 72 2d 65 61 63 68 20 28 6c 61 6d 62 64 61 20 or-each (lambda 26b0: 28 73 74 70 29 0a 09 09 20 20 20 20 20 20 28 6c (stp)... (l 26c0: 65 74 20 28 28 73 74 65 70 6e 61 6d 65 20 28 63 et ((stepname (c 26d0: 61 72 20 73 74 70 29 29 0a 09 09 09 20 20 20 20 ar stp)).... 26e0: 28 73 63 72 69 70 74 20 20 20 28 63 61 64 72 20 (script (cadr 26f0: 73 74 70 29 29 29 0a 09 09 09 28 77 69 74 68 2d stp)))....(with- 2700: 6f 75 74 70 75 74 2d 74 6f 2d 66 69 6c 65 20 28 output-to-file ( 2710: 63 6f 6e 63 20 74 65 73 74 64 69 72 20 22 2f 22 conc testdir "/" 2720: 20 73 74 65 70 6e 61 6d 65 20 22 2e 6c 6f 67 70 stepname ".logp 2730: 72 6f 22 29 0a 09 09 09 20 20 28 6c 61 6d 62 64 ro").... (lambd 2740: 61 20 28 29 0a 09 09 09 20 20 20 20 28 70 72 69 a ().... (pri 2750: 6e 74 20 67 65 6e 65 78 61 6d 70 6c 65 3a 65 78 nt genexample:ex 2760: 61 6d 70 6c 65 2d 6c 6f 67 70 72 6f 29 29 29 0a ample-logpro))). 2770: 09 09 09 28 77 69 74 68 2d 6f 75 74 70 75 74 2d ...(with-output- 2780: 74 6f 2d 66 69 6c 65 20 28 63 6f 6e 63 20 74 65 to-file (conc te 2790: 73 74 64 69 72 20 22 2f 22 20 73 63 72 69 70 74 stdir "/" script 27a0: 20 22 2e 73 68 22 29 0a 09 09 09 20 20 28 6c 61 ".sh").... (la 27b0: 6d 62 64 61 20 28 29 0a 09 09 09 20 20 20 20 28 mbda ().... ( 27c0: 70 72 69 6e 74 20 67 65 6e 65 78 61 6d 70 6c 65 print genexample 27d0: 3a 65 78 61 6d 70 6c 65 2d 73 63 72 69 70 74 29 :example-script) 27e0: 29 29 0a 09 09 09 28 73 79 73 74 65 6d 20 28 63 ))....(system (c 27f0: 6f 6e 63 20 22 63 68 6d 6f 64 20 75 67 2b 72 20 onc "chmod ug+r 2800: 22 20 28 63 6f 6e 63 20 74 65 73 74 64 69 72 20 " (conc testdir 2810: 22 2f 22 20 73 63 72 69 70 74 20 22 2e 73 68 22 "/" script ".sh" 2820: 29 29 29 29 29 0a 09 09 20 20 20 20 73 74 65 70 )))))... step 2830: 73 29 29 29 29 29 29 0a 09 20 20 3b 3b 20 0a s)))))).. ;; .