'Displays information about cron definitions.
Args:
now: used for testing.
output: Used for testing.'

def CronInfo(self, now=None, output=sys.stdout):

    if self.args:
        self.parser.error('Expected    a    single    <directory>    argument.')
    if (now is None):
        now = datetime.datetime.utcnow()
    cron_yaml = self._ParseCronYaml(self.basepath)
    if (cron_yaml and cron_yaml.cron):
        for entry in cron_yaml.cron:
            description = entry.description
            if (not description):
                description = '<no    description>'
            if (not entry.timezone):
                entry.timezone = 'UTC'
            print >>output, ('\n%s:\nURL:    %s\nSchedule:    %s    (%s)' % (description, entry.url, entry.schedule, entry.timezone))
            if (entry.timezone != 'UTC'):
                print >>output, "Note:    Schedules    with    timezones    won't    be    calculated    correctly    here"
            schedule = groctimespecification.GrocTimeSpecification(entry.schedule)
            matches = schedule.GetMatches(now, self.options.num_runs)
            for match in matches:
                print >>output, ('%s,    %s    from    now' % (match.strftime('%Y-%m-%d    %H:%M:%SZ'), (match - now)))
