Index: configf.scm ================================================================== --- configf.scm +++ configf.scm @@ -117,13 +117,13 @@ ;; read a config file, returns hash table of alists ;; adds to ht if given (must be #f otherwise) ;; envion-patt is a regex spec that identifies sections that will be eval'd ;; in the environment on the fly - -(define (read-config path ht allow-system #!key (environ-patt #f)(curr-section #f)) - (debug:print 4 "INFO: read-config " path " allow-system " allow-system " environ-patt " environ-patt " curr-section: " curr-section) +;; sections: #f => get all, else list of sections to gather +(define (read-config path ht allow-system #!key (environ-patt #f)(curr-section #f)(sections #f)) + (debug:print 4 "INFO: read-config " path " allow-system " allow-system " environ-patt " environ-patt " curr-section: " curr-section " sections: " sections) (if (not (file-exists? path)) (begin (debug:print 4 "INFO: read-config - file not found " path " current path: " (current-directory)) (if (not ht)(make-hash-table) ht)) (let ((inp (open-input-file path)) @@ -133,22 +133,28 @@ (var-flag #f);; turn on for key-var-pr and cont-ln-rx, turn off elsewhere (lead #f)) (if (eof-object? inl) (begin (close-input-port inp) + (hash-table-delete! res "") ;; we are using "" as a dumping ground and must remove it before returning the ht res) (regex-case inl (configf:comment-rx _ (loop (configf:read-line inp res) curr-section-name #f #f)) (configf:blank-l-rx _ (loop (configf:read-line inp res) curr-section-name #f #f)) (configf:include-rx ( x include-file ) (let ((curr-dir (current-directory)) (conf-dir (pathname-directory path))) (if conf-dir (change-directory conf-dir)) - (read-config include-file res allow-system environ-patt: environ-patt curr-section: curr-section-name) + (read-config include-file res allow-system environ-patt: environ-patt curr-section: curr-section-name sections: sections) (change-directory curr-dir) (loop (configf:read-line inp res) curr-section-name #f #f))) - (configf:section-rx ( x section-name ) (loop (configf:read-line inp res) section-name #f #f)) + (configf:section-rx ( x section-name ) (loop (configf:read-line inp res) + ;; if we have the sections list then force all settings into "" and delete it later? + (if (or (not sections) + (member section-name sections)) + section-name "") ;; stick everything into "" + #f #f)) (configf:key-sys-pr ( x key cmd ) (if allow-system (let ((alist (hash-table-ref/default res curr-section-name '())) (val-proc (lambda () (let* ((cmdres (cmd-run->list cmd)) (status (cadr cmdres)) Index: megatest-version.scm ================================================================== --- megatest-version.scm +++ megatest-version.scm @@ -1,7 +1,7 @@ ;; Always use two digit decimal ;; 1.01, 1.02...1.10,1.11 ... 1.99,2.00.. (declare (unit megatest-version)) -(define megatest-version 1.42) +(define megatest-version 1.43) Index: runconfig.scm ================================================================== --- runconfig.scm +++ runconfig.scm @@ -16,11 +16,11 @@ (let* ((keys (rdb:get-keys db)) (keyvals (rdb:get-key-vals db run-id)) (thekey (string-intersperse (map (lambda (x)(if x x "-na-")) keyvals) "/")) ;; Why was system disallowed in the reading of the runconfigs file? ;; NOTE: Should be setting env vars based on (target|default) - (confdat (read-config fname #f #t environ-patt: environ-patt)) + (confdat (read-config fname #f #t environ-patt: environ-patt sections: (list "default" thekey))) (whatfound (make-hash-table)) (sections (list "default" thekey))) (if (not *target*)(set! *target* thekey)) ;; may save a db access or two but repeats db:get-target code (debug:print 4 "Using key=\"" thekey "\"") Index: tests/common_runconfigs.config ================================================================== --- tests/common_runconfigs.config +++ tests/common_runconfigs.config @@ -7,9 +7,11 @@ [/tmp/mrwellan/env/ubuntu/afs] BOGOUS Bob [default/ubuntu/nfs] CURRENT /blah +ALT_VAR we should not see this one [ubuntu/nfs/none] CURRENT /tmp/nada +UNIQUEVAR this one should be set ADDED tests/tests/test_mt_vars/altvarnotset.sh Index: tests/tests/test_mt_vars/altvarnotset.sh ================================================================== --- /dev/null +++ tests/tests/test_mt_vars/altvarnotset.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +! grep ALT_VAR megatest.sh Index: tests/tests/test_mt_vars/testconfig ================================================================== --- tests/tests/test_mt_vars/testconfig +++ tests/tests/test_mt_vars/testconfig @@ -7,10 +7,13 @@ currentisblah currentisblah.sh # $BOGOUS should NOT be set bogousnotset bogousnotset.sh +# ALT_VAR should NOT be set +altvarnotset altvarnotset.sh + [requirements] waiton runfirst priority 0 [items]