Index: trunk/psphot/src/psphotModelTest.c
===================================================================
--- trunk/psphot/src/psphotModelTest.c	(revision 6056)
+++ trunk/psphot/src/psphotModelTest.c	(revision 6311)
@@ -2,5 +2,5 @@
 # include "psEllipse.h"
 
-bool psphotModelTest (pmReadout *readout, psMetadata *config) {
+bool psphotModelTest (pmReadout *readout, psMetadata *arguments, psMetadata *recipe) {
 
     bool status;
@@ -14,8 +14,8 @@
 
     // run model fitting tests on a single source
-    if (!psMetadataLookupBool (&status, config, "TEST_FIT")) return false;
+    if (!psMetadataLookupBool (&status, arguments, "TEST_FIT")) return false;
 
     // what fitting mode to use?
-    char *psfModeWord = psMetadataLookupPtr (&status, config, "TEST_FIT_MODE");
+    char *psfModeWord = psMetadataLookupPtr (&status, arguments, "TEST_FIT_MODE");
     if (!status) {
 	psfModeWord = psStringCopy ("EXT");
@@ -25,5 +25,5 @@
     // in psfMode, psf sets the model type
     if (psfMode) {
-	char *psfFile = psMetadataLookupPtr (&status, config, "PSF_INPUT_FILE");
+	char *psfFile = psMetadataLookupPtr (&status, arguments, "PSF_INPUT_FILE");
 	if (!status) psAbort ("psphotModelTest", "PSF_INPUT_FILE not supplied");
 	psMetadata *psfData = psMetadataConfigParse (NULL, &Nfail, psfFile, FALSE);
@@ -32,12 +32,20 @@
     } else {
 	// find the model: supplied by user or first in the PSF_MODEL list
-	char *modelName  = psMetadataLookupPtr (&status, config, "TEST_FIT_MODEL");
+	char *modelName  = psMetadataLookupPtr (&status, arguments, "TEST_FIT_MODEL");
 	if (modelName == NULL) {
 	    // get the list pointers for the PSF_MODEL entries
-	    psMetadataItem *mdi = psMetadataLookup (config, "PSF_MODEL");
-	    if (mdi == NULL) psAbort ("psphotChoosePSF", "missing PSF_MODEL selection");
+
+	    psList *list = NULL;
+	    psMetadataItem *mdi = psMetadataLookup (recipe, "PSF_MODEL");
+	    if (mdi == NULL) psAbort ("psphotModelTest", "missing PSF_MODEL selection");
+	    if (mdi->type == PS_DATA_STRING) {
+		list = psListAlloc(NULL);
+		psListAdd (list, PS_LIST_HEAD, mdi);
+	    } else {
+		if (mdi->type != PS_DATA_METADATA_MULTI) psAbort ("psphotChoosePSF", "missing PSF_MODEL selection");
+		list = psMemIncrRefCounter(mdi->data.list);
+	    }
 
 	    // take the first list element
-	    psList *list = (psList *) mdi->data.list;
 	    item = psListGet (list, PS_LIST_HEAD);
 	    modelName = item->data.V;
@@ -48,27 +56,27 @@
 
     // find the fitting parameters (try test values first)
-    float INNER = psMetadataLookupF32 (&status, config, "TEST_FIT_INNER_RADIUS");
+    float INNER = psMetadataLookupF32 (&status, arguments, "TEST_FIT_INNER_RADIUS");
     if (!status) {
-	INNER = psMetadataLookupF32 (&status, config, "SKY_INNER_RADIUS");
+	INNER = psMetadataLookupF32 (&status, recipe, "SKY_INNER_RADIUS");
     }
 
-    float OUTER = psMetadataLookupF32 (&status, config, "TEST_FIT_OUTER_RADIUS");
+    float OUTER = psMetadataLookupF32 (&status, arguments, "TEST_FIT_OUTER_RADIUS");
     if (!status) {
-	OUTER = psMetadataLookupF32 (&status, config, "SKY_OUTER_RADIUS");
+	OUTER = psMetadataLookupF32 (&status, recipe, "SKY_OUTER_RADIUS");
     }
 
-    float RADIUS = psMetadataLookupF32 (&status, config, "TEST_FIT_RADIUS");
+    float RADIUS = psMetadataLookupF32 (&status, arguments, "TEST_FIT_RADIUS");
     if (!status) {
-	RADIUS = psMetadataLookupF32 (&status, config, "PSF_FIT_RADIUS");
+	RADIUS = psMetadataLookupF32 (&status, recipe, "PSF_FIT_RADIUS");
     }
 
-    float mRADIUS = psMetadataLookupF32 (&status, config, "TEST_MOMENTS_RADIUS");
+    float mRADIUS = psMetadataLookupF32 (&status, arguments, "TEST_MOMENTS_RADIUS");
     if (!status) {
-	mRADIUS = psMetadataLookupF32 (&status, config, "PSF_MOMENTS_RADIUS");
+	mRADIUS = psMetadataLookupF32 (&status, recipe, "PSF_MOMENTS_RADIUS");
     }
 
     // define the source of interest
-    float xObj     = psMetadataLookupF32 (&status, config, "TEST_FIT_X");
-    float yObj     = psMetadataLookupF32 (&status, config, "TEST_FIT_Y");
+    float xObj     = psMetadataLookupF32 (&status, arguments, "TEST_FIT_X");
+    float yObj     = psMetadataLookupF32 (&status, arguments, "TEST_FIT_Y");
 
     // construct the source structures
@@ -111,5 +119,5 @@
 	}
 	sprintf (name, "TEST_FIT_PAR%d", i);
-	value = psMetadataLookupF32 (&status, config, name);
+	value = psMetadataLookupF32 (&status, arguments, name);
 	if (status) {
 	    params[i] = value;
@@ -145,5 +153,5 @@
     psImageKeepCircle (source->mask, xObj, yObj, RADIUS, "OR", PSPHOT_MASK_MARKED);
 
-    char *fitset = psMetadataLookupPtr (&status, config, "TEST_FIT_SET");
+    char *fitset = psMetadataLookupPtr (&status, arguments, "TEST_FIT_SET");
     if (status) {
 	status = psphotFitSet (source, model, fitset, psfMode);
