When called with a VIEWER-INFO that does not contain a test, ‘mailcap-viewer-passes-test’ erroneously returns nil if it had previously been called with a VIEWER-INFO whose test was explicitly set to nil. As a consequence ‘mailcap-mime-info’ (used e.g. by ‘gnus-mime-view-part-externally’) may return the wrong viewer. The reason is that ‘mailcap-viewer-passes-test’ adds tests that are explicitly nil (i.e. (test . nil)) to the cache as (nil nil) (first the test, second the result) and checks for the non-existence of a test only after it has tried to find the test result in the cache. The test variable for a VIEWER-INFO without a test is nil, and, therefore, the assoc lookup for nil done on the cache yields (nil nil) and, hence, nil (the cadr) as the test result. Moving the check for the non-existence of a test before the cache lookup fixes the issue; this is what the attached patch does. In the log message the bug number (Bug#) needs to be filled in.