//tokenize 32 Testing | noop $findfile($mircdir,*,1,echo -a $1-)
Echos the file path as expected
//tokenize 32 Testing | noop $findfile($mircdir,*,1,$iif($true,echo -a $1-,))
Echos Testing instead of the file path
Indeed. The actual problem is that whenever the [command] parameter of $findfile starts with an identifier/variable, mirc evaluates that parameter an extra time:
//var %a = ec $!+ ho | tokenize 32 Testing $!version | noop $findfile($mircdir,*,1,%a $1-)
echoes "Testing 6.31", indicating that %a and $1- were 'pre-evaluated' once, so that $findfile executes the result of that first evaluation (and as it does, it (re)evaluates the contents like normal).
This also poses a security risk, in cases where $findfile is used like that inside an on TEXT event or any other place where $1- contains unknown content.