public static function matchFile($file, $actual, $description = NULL)
{
self::$counter++;
$pattern = @file_get_contents($file);
// @ is escalated to exception
if ($pattern === FALSE) {
throw new \Exception("Unable to read file '{$file}'.");
} elseif (!is_scalar($actual)) {
self::fail(self::describe('%1 should match %2', $description), $actual, $pattern);
} elseif (!self::isMatching($pattern, $actual)) {
list($pattern, $actual) = self::expandMatchingPatterns($pattern, $actual);
self::fail(self::describe('%1 should match %2', $description), $actual, $pattern);
}
}