You should have the whole development environment set up as described on our wiki. Specifically, these are required: - WP-CLI (wp --info works in console) - NPM packages installed in - Gulp (gulp -v works in console) - test-config.yml file created in versionpress/tests Currently, WpAutomation is a set of static functions as of v1; other options will be considered for v2, see WP-56. Note: Currently, the intention is to add supported tasks as public methods to this class. If this gets unwieldy it will probably be split into multiple files / classes.
 /**
  * @test
  */
 public function vpconfigDoesntAllowDirectAccess()
 {
     $pluginsDir = self::$wpAutomation->getPluginsDir();
     $relativePathToPluginsDir = PathUtils::getRelativePath(self::$wpAutomation->getWebRoot(), $pluginsDir);
     $url = self::$testConfig->testSite->url . '/' . $relativePathToPluginsDir . "/versionpress/vpconfig.yml";
     $statusCode = HttpStatusCodeUtil::getStatusCode($url);
     $this->assertTrue($statusCode === 403 || $statusCode === 404, "Wrong HTTP status code ({$statusCode})");
 }
 /**
  * @test
  */
 public function runAutomation()
 {
     $testConfig = TestConfig::createDefaultConfig();
     $wpAutomation = new WpAutomation($testConfig->testSite, $testConfig->wpCliVersion);
     $wpAutomation->setUpSite();
     $wpAutomation->copyVersionPressFiles();
     $wpAutomation->activateVersionPress();
     $wpAutomation->runWpCliCommand('vp', 'config', ['VP_PROJECT_ROOT', '.']);
 }
 /**
  * Check if site is set up and VersionPress fully activated, and if not, do so. The $force
  * parametr may force this.
  *
  * @param bool $force Force all the automation actions to be taken regardless of the site state
  */
 public static function setUpSite($force)
 {
     self::staticInitialization();
     if ($force || !self::$wpAutomation->isSiteSetUp()) {
         self::$wpAutomation->setUpSite();
     }
     if ($force || !self::$wpAutomation->isVersionPressInitialized()) {
         self::$wpAutomation->copyVersionPressFiles();
         self::$wpAutomation->initializeVersionPress();
     }
 }
Example #4
0
 /**
  * Defines global constants, container and wpdb dynamic mapping of value references.
  * It's not pretty, but makes the mapping functions very flexible (they can have various dependecies).
  */
 private static function defineGlobalVariables()
 {
     global $versionPressContainer, $wpdb, $wp_taxonomies;
     defined('VERSIONPRESS_PLUGIN_DIR') || define('VERSIONPRESS_PLUGIN_DIR', self::$testConfig->testSite->path . '/wp-content/plugins/versionpress');
     defined('VP_VPDB_DIR') || define('VP_VPDB_DIR', self::$testConfig->testSite->path . '/wp-content/vpdb');
     $versionPressContainer = DIContainer::getConfiguredInstance();
     $wpdb = self::$wpdb;
     $rawTaxonomies = self::$wpAutomation->runWpCliCommand('taxonomy', 'list', ['format' => 'json', 'fields' => 'name']);
     $taxonomies = array_column(json_decode($rawTaxonomies, true), 'name');
     $wp_taxonomies = array_combine($taxonomies, $taxonomies);
 }
 private static function setUpSite()
 {
     if (!self::$wpAutomation->isSiteSetUp()) {
         self::$wpAutomation->setUpSite();
     }
     if (!self::$wpAutomation->isVersionPressInitialized()) {
         self::$wpAutomation->copyVersionPressFiles();
         self::$wpAutomation->initializeVersionPress();
     }
 }
 /**
  * @param WpAutomation $wpAutomation
  */
 private function prepareSite($wpAutomation)
 {
     $wpAutomation->setUpSite();
     $wpAutomation->copyVersionPressFiles();
     $wpAutomation->disableDebugger();
     $wpAutomation->activateVersionPress();
     $wpAutomation->initializeVersionPress();
 }