/**
  * Test checking for existing versions.
  *
  * @since  0.1.0
  *
  * @covers PHPReleases::exists
  */
 public function testExists()
 {
     $releases = new PHPReleases();
     $this->assertTrue($releases->exists('5.0.0'));
     $this->assertTrue($releases->exists('7.0.0'));
     $this->assertFalse($releases->exists('6.0.0'));
 }
 /**
  * Update the stored database.
  *
  * @since 0.1.0
  *
  * @param Event $event The event that has called the update method.
  */
 public static function update(Event $event)
 {
     $dbFilename = PHPReleases::getLocation();
     self::maybeCreateDBFolder(dirname($dbFilename));
     $io = $event->getIO();
     $io->write('Fetching change logs from official PHP website...', false);
     $io->write(' PHP5...', false);
     $php5 = self::downloadFile(self::PHP_5_RELEASES);
     $io->write(' PHP7...', false);
     $php7 = self::downloadFile(self::PHP_7_RELEASES);
     $io->write(' done!', true);
     $releases = array();
     $io->write('Parsing change logs to extract versions...', false);
     $io->write(' PHP5...', false);
     $php5Releases = self::parseReleases($php5);
     $io->write('(' . count($php5Releases) . ' releases)', false);
     $releases = array_merge($releases, $php5Releases);
     $io->write(' PHP7...', false);
     $php7Releases = self::parseReleases($php7);
     $io->write('(' . count($php7Releases) . ' releases)', false);
     $releases = array_merge($releases, $php7Releases);
     $io->write(' done!', true);
     ksort($releases, SORT_NATURAL);
     self::generateConfig($releases, $dbFilename);
     $io->write('The PHP Releases database has been updated.', true);
 }
 /**
  * Get a version lesser or equal than the milestone.
  *
  * @since 0.2.4
  *
  * @param string $milestone A version milestone that is used to define the requirement.
  *
  * @return string Version number that meets the requirement.
  */
 protected function getLesserEqualVersion($milestone)
 {
     if (version_compare($this->version->getVersion(), $milestone, '<=')) {
         return $this->version->getVersion();
     }
     $data = array_reverse($this->releases->getAll());
     foreach ($data as $version => $date) {
         if (version_compare($version, $milestone, '<=')) {
             return $version;
         }
     }
     throw new RuntimeException('Could not satisfy version requirements.');
 }