From 47ac20f1dab92a0e33e6ce71b569d83eee4f79dc Mon Sep 17 00:00:00 2001 From: Ippei Sumida Date: Thu, 8 Dec 2016 15:29:54 +0900 Subject: [PATCH 01/12] Add function i_activate_the_plugin. #6 --- src/Context/WordPressContext.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Context/WordPressContext.php b/src/Context/WordPressContext.php index e2c9c36..5114ceb 100644 --- a/src/Context/WordPressContext.php +++ b/src/Context/WordPressContext.php @@ -105,6 +105,19 @@ public function the_plugin_should_not_be( $slug, $expect ) } } + /** + * Activate plugin + * + * @then /^I activate the "(?P[^"]*)" plugin$/ + */ + public function i_activate_the_plugin($slug) { + $session = $this->getSession(); + $session->visit( $this->locatePath( $this->get_admin_url() . '/plugins.php' ) ); + $page = $session->getPage(); + $page->checkField('[@data-slug="' . $slug . '"] > th > input"'); + $page->pressButton('#doaction'); + } + /** * Check the theme is activated * Example: Given the "twentysixteen" theme should be activated From d2248c27b1e5f4395a0a058884d803e86c6cdf65 Mon Sep 17 00:00:00 2001 From: Ippei Sumida Date: Thu, 8 Dec 2016 15:30:05 +0900 Subject: [PATCH 02/12] Add test. #6 --- features/plugins.feature | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/features/plugins.feature b/features/plugins.feature index f14077b..d668269 100644 --- a/features/plugins.feature +++ b/features/plugins.feature @@ -44,3 +44,11 @@ Feature: Get statuses of plugins | akismet | | hello-dolly | + Scenario Outline: I activate plugin. + When I login as the "administrator" role + Then I activate the "" plugin + + Examples: + | slug | + | akismet | + | hello-dolly | From 8ead229e173408d47504ad73aa9e759f21a15ac0 Mon Sep 17 00:00:00 2001 From: Ippei Sumida Date: Wed, 21 Dec 2016 08:43:03 +0900 Subject: [PATCH 03/12] bugfix --- src/Context/WordPressContext.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Context/WordPressContext.php b/src/Context/WordPressContext.php index 5114ceb..314ef04 100644 --- a/src/Context/WordPressContext.php +++ b/src/Context/WordPressContext.php @@ -114,8 +114,11 @@ public function i_activate_the_plugin($slug) { $session = $this->getSession(); $session->visit( $this->locatePath( $this->get_admin_url() . '/plugins.php' ) ); $page = $session->getPage(); - $page->checkField('[@data-slug="' . $slug . '"] > th > input"'); - $page->pressButton('#doaction'); + $optionElement = $page->find('css', '[data-slug="' . $slug . '"] > th > input'); + $optionElement->click(); + $selectElement = $page->find('css', '#bulk-action-selector-top'); + $selectElement->selectOption('activate-selected'); + $page->find('css', '#doaction')->click(); } /** From d6ddd4fa8b05007d2c9d444b951c1c904b7e84e3 Mon Sep 17 00:00:00 2001 From: Ippei Sumida Date: Wed, 21 Dec 2016 08:52:34 +0900 Subject: [PATCH 04/12] use bottom element. --- src/Context/WordPressContext.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Context/WordPressContext.php b/src/Context/WordPressContext.php index 314ef04..b67cfb8 100644 --- a/src/Context/WordPressContext.php +++ b/src/Context/WordPressContext.php @@ -116,9 +116,9 @@ public function i_activate_the_plugin($slug) { $page = $session->getPage(); $optionElement = $page->find('css', '[data-slug="' . $slug . '"] > th > input'); $optionElement->click(); - $selectElement = $page->find('css', '#bulk-action-selector-top'); + $selectElement = $page->find('css', '#bulk-action-selector-bottom'); $selectElement->selectOption('activate-selected'); - $page->find('css', '#doaction')->click(); + $page->find('css', '#doaction2')->click(); } /** From 806e827c31e1b84690525b64af07711d4847aba7 Mon Sep 17 00:00:00 2001 From: Ippei Sumida Date: Sun, 25 Dec 2016 18:16:21 +0900 Subject: [PATCH 05/12] Add checking the plugin is activated, after activation. #6 --- src/Context/WordPressContext.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Context/WordPressContext.php b/src/Context/WordPressContext.php index b67cfb8..02e7209 100644 --- a/src/Context/WordPressContext.php +++ b/src/Context/WordPressContext.php @@ -119,6 +119,10 @@ public function i_activate_the_plugin($slug) { $selectElement = $page->find('css', '#bulk-action-selector-bottom'); $selectElement->selectOption('activate-selected'); $page->find('css', '#doaction2')->click(); + + // check the plugin is activated. + $this->the_plugin_should_be($slug, 'activated'); + } /** From 6e1e5a3d787296bce29b02ba2517c002c2e69699 Mon Sep 17 00:00:00 2001 From: miya0001 Date: Mon, 26 Dec 2016 23:33:19 +0900 Subject: [PATCH 06/12] activate and deactivate plugin --- features/plugins.feature | 74 +++++------------- src/Context/RawWordPressContext.php | 98 +++++++++++++++++++++++- src/Context/WordPressContext.php | 115 +++++++++++++++++++--------- 3 files changed, 194 insertions(+), 93 deletions(-) diff --git a/features/plugins.feature b/features/plugins.feature index a2ca777..c93a3f2 100644 --- a/features/plugins.feature +++ b/features/plugins.feature @@ -9,49 +9,33 @@ Feature: Get statuses of plugins | hello-dolly | inactive | | wordpress-importer | active | - Scenario Outline: Plugin should be installed. + Scenario: Plugin should be installed. When I login as the "administrator" role - Then the "" plugin should be installed + Then the "akismet" plugin should be installed - Examples: - | slug | - | akismet | - | hello-dolly | - | wordpress-importer | - - Scenario Outline: Plugins should be activated. + Scenario: Plugins should be activated. When I login as the "administrator" role - Then the "" plugin should be activated - - Examples: - | slug | - | wordpress-importer | + Then the "wordpress-importer" plugin should be activated Scenario: Plugin should not be installed. When I login as the "administrator" role Then the "my-plugin" plugin should not be installed - Scenario Outline: Plugins should not be activated. + Scenario: Plugins should not be activated. When I login as the "administrator" role - Then the "" plugin should not be activated + Then the "hello-dolly" plugin should not be activated - Examples: - | slug | - | akismet | - | hello-dolly | - - Scenario Outline: I activate plugin. + Scenario: I activate plugin. When I login as the "administrator" role - Then I activate the "" plugin + Then I activate the "hello-dolly" plugin - Examples: - | slug | - | akismet | - | hello-dolly | + Scenario: I deactivate plugin. + When I login as the "administrator" role + Then I deactivate the "hello-dolly" plugin @mink:goutte Scenario: Get plugins with goutte driver @@ -64,26 +48,16 @@ Feature: Get statuses of plugins | wordpress-importer | active | @mink:goutte - Scenario Outline: Plugin should be installed with goutte driver + Scenario: Plugin should be installed. When I login as the "administrator" role - Then the "" plugin should be installed - - Examples: - | slug | - | akismet | - | hello-dolly | - | wordpress-importer | + Then the "akismet" plugin should be installed @mink:goutte - Scenario Outline: Plugins should be activated. + Scenario: Plugins should be activated. When I login as the "administrator" role - Then the "" plugin should be activated - - Examples: - | slug | - | wordpress-importer | + Then the "wordpress-importer" plugin should be activated @mink:goutte Scenario: Plugin should not be installed. @@ -92,22 +66,12 @@ Feature: Get statuses of plugins Then the "my-plugin" plugin should not be installed @mink:goutte - Scenario Outline: Plugins should not be activated. + Scenario: Plugins should not be activated. When I login as the "administrator" role - Then the "" plugin should not be activated - - Examples: - | slug | - | akismet | - | hello-dolly | + Then the "hello-dolly" plugin should not be activated @mink:goutte - Scenario Outline: I activate plugin. + Scenario: I activate plugin. When I login as the "administrator" role - Then I activate the "" plugin - - Examples: - | slug | - | akismet | - | hello-dolly | + Then I activate the "hello-dolly" plugin diff --git a/src/Context/RawWordPressContext.php b/src/Context/RawWordPressContext.php index 38eb4fb..30ad4a6 100644 --- a/src/Context/RawWordPressContext.php +++ b/src/Context/RawWordPressContext.php @@ -159,7 +159,7 @@ protected function is_current_url( $url ) protected function logout() { if ( ! $this->is_logged_in() ) { - return; // user isn't login. + return false; // user isn't login. } $page = $this->getSession()->getPage(); @@ -213,7 +213,6 @@ protected function is_logged_in() protected function wait_the_element( $selector ) { $page = $this->getSession()->getPage(); - $element = $page->find( 'css', $selector ); for ( $i = 0; $i < $this->timeout; $i++ ) { try { @@ -269,6 +268,101 @@ protected function get_plugins() return $plugins; } + /** + * Check the plugin is activated. + * + * @param string $slug The slug of the plugin. + * @return bool Return true if plugin is activated. + * @throws \Exception + */ + public function is_plugin_activated( $slug ) + { + $element = $this->search_plugin( $slug ); + if ( ! $element ) { + throw new \Exception( sprintf( + "The %s plugin is not installed.", + $slug + ) ); + } + $classes = preg_split( '/\s+/', trim( $element->getAttribute( "class" ) ) ); + if ( in_array( 'active', $classes ) ) { + return true; + } else { + return false; + } + } + + /** + * Check the plugin is installed. + * + * @param string $slug The slug of the plugin. + * @return bool Return true if plugin is installed. + * @throws \Exception + */ + public function is_plugin_installed( $slug ) + { + $element = $this->search_plugin( $slug ); + if ( count( $element ) ) { + return true; + } else { + return false; + } + } + + /** + * Activate the plugin. + * + * @param string $slug The slug of the plugin. + * @throws \Exception + */ + public function activate_plugin( $slug ) + { + $element = $this->search_plugin( $slug ); + if ( ! $element ) { + throw new \Exception( sprintf( + "The %s plugin is not installed.", + $slug + ) ); + } + $edit = $element->find( 'css', '.activate a' ); + $edit->click(); + sleep( 1 ); + } + + /** + * Deactivate the plugin. + * + * @param string $slug The slug of the plugin. + * @throws \Exception + */ + public function deactivate_plugin( $slug ) + { + $element = $this->search_plugin( $slug ); + if ( ! $element ) { + throw new \Exception( sprintf( + "The %s plugin is not installed.", + $slug + ) ); + } + $edit = $element->find( 'css', '.deactivate a' ); + $edit->click(); + sleep( 1 ); + } + + /** + * Search plugin in the plugins.php + * + * @param string $slug The slug of the plugin. + * @return object An object of the dom element of plugin row. + */ + public function search_plugin( $slug ) + { + $session = $this->getSession(); + $path = $this->get_admin_url() . '/plugins.php?s=' . urlencode( $slug ); + $session->visit( $this->locatePath( $path ) ); + return $session->getPage()->find( 'css', 'tr[data-slug="' . $slug . '"]' ); + } + /** * Get the current theme * diff --git a/src/Context/WordPressContext.php b/src/Context/WordPressContext.php index 9c9dd7f..46a27ac 100644 --- a/src/Context/WordPressContext.php +++ b/src/Context/WordPressContext.php @@ -3,10 +3,12 @@ namespace VCCW\Behat\Mink\WordPressExtension\Context; use Behat\Behat\Tester\Exception\PendingException; -use Behat\Gherkin\Node\PyStringNode, - Behat\Gherkin\Node\TableNode; + +use Behat\Gherkin\Node\PyStringNode; +use Behat\Gherkin\Node\TableNode; use Behat\Behat\Hook\Scope\AfterStepScope; + /** * Features context. */ @@ -89,20 +91,29 @@ public function the_http_headers_should_be( TableNode $table ) */ public function the_plugins_should_be( TableNode $table ) { - $plugins = $this->get_plugins(); - foreach ( $table->getHash() as $row ) { - if ( ! empty( $plugins[ $row['slug'] ] ) ) { - $status = $plugins[ $row['slug'] ]['status']; - $this->assertSame( $row['status'], $status, sprintf( - "The %s plugin is installed, but it is not %s.", - $row['slug'], - $row['status'] - ) ); - } else { + $slug = $row['slug']; + $expect = $row['status']; + if ( ! $this->is_plugin_installed( $slug ) ) { throw new \Exception( sprintf( "The %s plugin is not installed.", - $row['slug'] + $slug + ) ); + } + if ( "active" === $expect && ! $this->is_plugin_activated( $slug ) ) { + throw new \Exception( sprintf( + "The %s plugin should be activated, but not activated.", + $slug + ) ); + } elseif ( "inactive" === $expect && $this->is_plugin_activated( $slug ) ) { + throw new \Exception( sprintf( + "The %s plugin should not be activated, but activated.", + $slug + ) ); + } elseif ( "active" !== $expect && "inactive" !== $expect ) { + throw new \Exception( sprintf( + "Incorrect status: %s", + $expect ) ); } } @@ -110,24 +121,22 @@ public function the_plugins_should_be( TableNode $table ) /** * Check status of plugins. + * Example: Then "akismet" plugin should be activated * * @then /^the "(?P[^"]*)" plugin should be (?P(installed|activated))$/ */ public function the_plugin_should_be( $slug, $expect ) { - $plugins = $this->get_plugins(); - - if ( empty( $plugins[ $slug ] ) ) { + if ( ! $this->is_plugin_installed( $slug ) ) { throw new \Exception( sprintf( "The %s plugin is not installed.", $slug ) ); } - if ( "activated" === $expect ) { - $status = $plugins[ $slug ]['status']; - $this->assertSame( "active", $status, sprintf( - "The %s plugin is installed, but it is not activated.", + if ( "activated" === $expect && ! $this->is_plugin_activated( $slug ) ) { + throw new \Exception( sprintf( + "The %s plugin should be activated, but not activated.", $slug ) ); } @@ -135,6 +144,7 @@ public function the_plugin_should_be( $slug, $expect ) /** * Check status of plugins. + * Example: Then "akismet" plugin should not be activated * * @then /^the "(?P[^"]*)" plugin should not be (?P(installed|activated))$/ */ @@ -142,16 +152,15 @@ public function the_plugin_should_not_be( $slug, $expect ) { $plugins = $this->get_plugins(); - if ( "installed" === $expect && ! empty( $plugins[ $slug ] ) ) { + if ( "installed" === $expect && $this->is_plugin_installed( $slug ) ) { throw new \Exception( sprintf( "The %s plugin should not be installed, but installed.", $slug ) ); } - if ( "activated" === $expect ) { - $status = $plugins[ $slug ]['status']; - $this->assertTrue( ( "active" !== $status ), sprintf( + if ( "activated" === $expect && $this->is_plugin_activated( $slug ) ) { + throw new \Exception( sprintf( "The %s plugin should not be activated, but activated.", $slug ) ); @@ -160,22 +169,56 @@ public function the_plugin_should_not_be( $slug, $expect ) /** * Activate plugin + * Example: When I activate the "hello-dolly" plugin * - * @then /^I activate the "(?P[^"]*)" plugin$/ + * @when /^I activate the "(?P[^"]*)" plugin$/ */ - public function i_activate_the_plugin($slug) { - $session = $this->getSession(); - $session->visit( $this->locatePath( $this->get_admin_url() . '/plugins.php' ) ); - $page = $session->getPage(); - $optionElement = $page->find('css', '[data-slug="' . $slug . '"] > th > input'); - $optionElement->click(); - $selectElement = $page->find('css', '#bulk-action-selector-bottom'); - $selectElement->selectOption('activate-selected'); - $page->find('css', '#doaction2')->click(); + public function i_activate_the_plugin( $slug ) { + if ( ! $this->is_plugin_installed( $slug ) ) { + throw new \Exception( sprintf( + "The %s plugin is not installed.", + $slug + ) ); + } - // check the plugin is activated. - $this->the_plugin_should_be($slug, 'activated'); + if ( $this->is_plugin_activated( $slug ) ) { + $this->deactivate_plugin( $slug ); + } + $this->activate_plugin( $slug ); + + if ( ! $this->is_plugin_activated( $slug ) ) { + throw new \Exception( sprintf( + "The %s plugin should be activated, but not activated.", + $slug + ) ); + } + } + + /** + * Deactivate plugin + * Example: When I deactivate the "hello-dolly" plugin + * + * @then /^I deactivate the "(?P[^"]*)" plugin$/ + */ + public function i_deactivate_the_plugin( $slug ) { + if ( ! $this->is_plugin_installed( $slug ) ) { + throw new \Exception( sprintf( + "The %s plugin is not installed.", + $slug + ) ); + } + + if ( $this->is_plugin_activated( $slug ) ) { + $this->deactivate_plugin( $slug ); + } + + if ( $this->is_plugin_activated( $slug ) ) { + throw new \Exception( sprintf( + "The %s plugin should not be activated, but activated.", + $slug + ) ); + } } /** From 2596536e41edd467b389e7489ff7fb771bb4b1bc Mon Sep 17 00:00:00 2001 From: miya0001 Date: Tue, 27 Dec 2016 17:47:27 +0900 Subject: [PATCH 07/12] remove unused function --- src/Context/RawWordPressContext.php | 38 ----------------------------- src/Context/WordPressContext.php | 2 -- 2 files changed, 40 deletions(-) diff --git a/src/Context/RawWordPressContext.php b/src/Context/RawWordPressContext.php index 30ad4a6..7bda935 100644 --- a/src/Context/RawWordPressContext.php +++ b/src/Context/RawWordPressContext.php @@ -230,44 +230,6 @@ protected function wait_the_element( $selector ) throw new \Exception( "No html element found for the selector ('$selector')" ); } - /** - * Get the current theme - * - * @return string The slug of the current theme. - * @throws \Exception - */ - protected function get_plugins() - { - if ( ! $this->is_logged_in() ) { - throw new \Exception( "You are not logged in" ); - } - - $session = $this->getSession(); - $session->visit( $this->locatePath( $this->get_admin_url() . '/plugins.php' ) ); - $page = $session->getPage(); - $e = $page->findAll( 'css', "#the-list tr" ); - if ( ! count( $e ) ) { - throw new \Exception( "Maybe you don't have permission to get plugins." ); - } - - $plugins = array(); - foreach ( $e as $plugin ) { - $slug = $plugin->getAttribute( "data-slug" ); - $classes = preg_split( "/\s+/", $plugin->getAttribute( "class" ) ); - if ( in_array( "active", $classes ) ) { - $status = "active"; - } else { - $status = "inactive"; - } - - $plugins[ $slug ] = array( - "status" => $status, - ); - } - - return $plugins; - } - /** * Check the plugin is activated. * diff --git a/src/Context/WordPressContext.php b/src/Context/WordPressContext.php index 46a27ac..b2ca2e7 100644 --- a/src/Context/WordPressContext.php +++ b/src/Context/WordPressContext.php @@ -150,8 +150,6 @@ public function the_plugin_should_be( $slug, $expect ) */ public function the_plugin_should_not_be( $slug, $expect ) { - $plugins = $this->get_plugins(); - if ( "installed" === $expect && $this->is_plugin_installed( $slug ) ) { throw new \Exception( sprintf( "The %s plugin should not be installed, but installed.", From 1810b3baeadb7e30d8f4025892a5cbd6e582291c Mon Sep 17 00:00:00 2001 From: miya0001 Date: Tue, 27 Dec 2016 22:58:28 +0900 Subject: [PATCH 08/12] add some spec tests --- bin/{run-tests.js => run-behat.js} | 0 bin/run-phpspec.js | 26 +++++++++ features/plugins.feature | 73 +++++------------------- package.json | 4 +- spec/Context/RawWordPressContextSpec.php | 73 ++++++++++++++++++++++-- spec/Context/WordPressContextSpec.php | 29 +++++++++- src/Context/RawWordPressContext.php | 16 +++--- src/Context/WordPressContext.php | 13 +++-- 8 files changed, 154 insertions(+), 80 deletions(-) rename bin/{run-tests.js => run-behat.js} (100%) create mode 100644 bin/run-phpspec.js diff --git a/bin/run-tests.js b/bin/run-behat.js similarity index 100% rename from bin/run-tests.js rename to bin/run-behat.js diff --git a/bin/run-phpspec.js b/bin/run-phpspec.js new file mode 100644 index 0000000..1dd74ca --- /dev/null +++ b/bin/run-phpspec.js @@ -0,0 +1,26 @@ +const phantomjs = require( 'phantomjs-prebuilt' ) +const spawn = require( 'child_process' ).spawn + +const argv = process.argv +argv.shift() +argv.shift() + +args = [ + 'php', + '-d', + 'memory_limit=-1', + 'vendor/bin/phpspec', + 'run' +] + +phantomjs.run( + '--webdriver=4444', + '--ignore-ssl-errors=yes', + '--cookies-file=/tmp/webdriver_cookie.txt' +).then( program => { + const behat = spawn( '/usr/bin/env', args.concat( argv ), { stdio: "inherit" } ) + behat.on( 'exit', ( code ) => { + program.kill() + process.exit( code ); + } ) +} ) diff --git a/features/plugins.feature b/features/plugins.feature index c93a3f2..37171ef 100644 --- a/features/plugins.feature +++ b/features/plugins.feature @@ -1,41 +1,18 @@ Feature: Get statuses of plugins - Scenario: Get plugins + Scenario: Tests for plugins When I login as the "administrator" role Then the plugins should be: | slug | status | | akismet | inactive | - | hello-dolly | inactive | | wordpress-importer | active | - - Scenario: Plugin should be installed. - - When I login as the "administrator" role - Then the "akismet" plugin should be installed - - Scenario: Plugins should be activated. - - When I login as the "administrator" role - Then the "wordpress-importer" plugin should be activated - - Scenario: Plugin should not be installed. - - When I login as the "administrator" role - Then the "my-plugin" plugin should not be installed - - Scenario: Plugins should not be activated. - - When I login as the "administrator" role - Then the "hello-dolly" plugin should not be activated - - Scenario: I activate plugin. - When I login as the "administrator" role - Then I activate the "hello-dolly" plugin - - Scenario: I deactivate plugin. - When I login as the "administrator" role - Then I deactivate the "hello-dolly" plugin + And the "akismet" plugin should be installed + And the "wordpress-importer" plugin should be activated + And the "my-plugin" plugin should not be installed + And the "akismet" plugin should not be activated + And I activate the "hello-dolly" plugin + And I deactivate the "hello-dolly" plugin @mink:goutte Scenario: Get plugins with goutte driver @@ -43,35 +20,11 @@ Feature: Get statuses of plugins When I login as the "administrator" role Then the plugins should be: | slug | status | - | akismet | inactive | | hello-dolly | inactive | | wordpress-importer | active | - - @mink:goutte - Scenario: Plugin should be installed. - - When I login as the "administrator" role - Then the "akismet" plugin should be installed - - @mink:goutte - Scenario: Plugins should be activated. - - When I login as the "administrator" role - Then the "wordpress-importer" plugin should be activated - - @mink:goutte - Scenario: Plugin should not be installed. - - When I login as the "administrator" role - Then the "my-plugin" plugin should not be installed - - @mink:goutte - Scenario: Plugins should not be activated. - - When I login as the "administrator" role - Then the "hello-dolly" plugin should not be activated - - @mink:goutte - Scenario: I activate plugin. - When I login as the "administrator" role - Then I activate the "hello-dolly" plugin + And the "akismet" plugin should be installed + And the "wordpress-importer" plugin should be activated + And the "my-plugin" plugin should not be installed + And the "akismet" plugin should not be activated + And I activate the "hello-dolly" plugin + And I deactivate the "hello-dolly" plugin diff --git a/package.json b/package.json index 66b6ad9..6938ce8 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,8 @@ "scripts": { "install-wp": "curl https://raw.githubusercontent.com/vccw-team/install-wp/master/install-wp.sh | /usr/bin/env bash", "wp": "curl https://raw.githubusercontent.com/vccw-team/install-wp/master/run-wp.sh | /usr/bin/env bash", - "phpspec": "vendor/bin/phpspec run", - "behat": "/usr/bin/env node bin/run-tests.js", + "phpspec": "/usr/bin/env node bin/run-phpspec.js", + "behat": "/usr/bin/env node bin/run-behat.js", "test": "npm run phpspec && npm run behat" }, "devDependencies": { diff --git a/spec/Context/RawWordPressContextSpec.php b/spec/Context/RawWordPressContextSpec.php index 6ad5af6..f790bc2 100644 --- a/spec/Context/RawWordPressContextSpec.php +++ b/spec/Context/RawWordPressContextSpec.php @@ -4,14 +4,20 @@ use PhpSpec\ObjectBehavior; +use Behat\Mink\Mink, + Behat\Mink\Session, + Behat\Mink\Driver\GoutteDriver, + Behat\Mink\Driver\Goutte\Client as GoutteClient, + Behat\Mink\Driver\Selenium2Driver; + class RawWordPressContextSpec extends ObjectBehavior { - function it_is_raw_wordpress_aware() + public function it_is_raw_wordpress_aware() { $this->shouldHaveType( 'VCCW\Behat\Mink\WordPressExtension\Context\RawWordPressContext' ); } - function it_can_set_and_get_parameters() + public function it_can_set_and_get_parameters() { $params = json_decode( '{ "roles": { @@ -28,7 +34,7 @@ function it_can_set_and_get_parameters() } - function it_can_replace_var() + public function it_can_replace_var() { // variable should be converted. $this->set_variables( 'FOO', 'hello' ); @@ -41,7 +47,7 @@ function it_can_replace_var() $this->replace_variables( '{HELLO}' )->shouldReturn( '{HELLO}' ); } - function it_can_get_admin_url() + public function it_can_get_admin_url() { $params = json_decode( '{ "roles": { @@ -56,4 +62,63 @@ function it_can_get_admin_url() $this->set_params( $params ); $this->get_admin_url()->shouldReturn( '/wp-admin' ); } + + public function it_should_get_status() + { + $this->init_mink( 'goutte' ); + $session = $this->getSession(); + + $session->visit( 'http://127.0.0.1:8080/' ); + $this->get_http_status()->shouldReturn( 200 ); + + $session->visit( 'http://127.0.0.1:8080/the-page-not-found' ); + $this->get_http_status()->shouldReturn( 404 ); + } + + public function it_should_get_headers() + { + $this->init_mink( 'goutte' ); + $session = $this->getSession(); + + $session->visit( 'http://127.0.0.1:8080/' ); + $this->get_http_headers()->shouldHaveKeyWithValue( + 'Content-Type', + array( 'text/html; charset=UTF-8' ) + ); + + $session->visit( 'http://127.0.0.1:8080/the-page-not-found' ); + $this->get_http_headers()->shouldHaveKeyWithValue( + 'Content-Type', + array( 'text/html; charset=UTF-8' ) + ); + } + + public function it_can_login_with_goutte() + { + $this->init_mink( 'goutte' ); + $session = $this->getSession(); + + $this->login( 'admin', 'admin' )->shouldReturn( true ); + $this->login( 'admin', 'xxxx' )->shouldReturn( false ); + } + + public function it_can_login_with_selenium2() + { + $this->init_mink( 'selenium2' ); + $session = $this->getSession(); + + $this->login( 'admin', 'admin' )->shouldReturn( true ); + $this->login( 'admin', 'xxxx' )->shouldReturn( false ); + } + + private function init_mink( $driver ) + { + $mink = new Mink( array( + 'goutte' => new Session( new GoutteDriver( new GoutteClient() ) ), + 'selenium2' => new Session( new Selenium2Driver() ), + ) ); + $mink->setDefaultSessionName( $driver ); + $this->setMink( $mink ); + $this->setMinkParameter( 'base_url', 'http://127.0.0.1:8080' ); + } } diff --git a/spec/Context/WordPressContextSpec.php b/spec/Context/WordPressContextSpec.php index 5880360..df110c6 100644 --- a/spec/Context/WordPressContextSpec.php +++ b/spec/Context/WordPressContextSpec.php @@ -3,7 +3,12 @@ namespace spec\VCCW\Behat\Mink\WordPressExtension\Context; use PhpSpec\ObjectBehavior; -use Prophecy\Argument; + +use Behat\Mink\Mink, + Behat\Mink\Session, + Behat\Mink\Driver\GoutteDriver, + Behat\Mink\Driver\Goutte\Client as GoutteClient, + Behat\Mink\Driver\Selenium2Driver; class WordPressContextSpec extends ObjectBehavior { @@ -11,4 +16,26 @@ function it_is_wordpress_aware() { $this->shouldHaveType( 'VCCW\Behat\Mink\WordPressExtension\Context\RawWordPressContext' ); } + + public function it_should_check_status() + { + $this->init_mink( 'goutte' ); + $session = $this->getSession(); + + $session->visit( 'http://127.0.0.1:8080/' ); + $this->shouldThrow( new \Exception( 'The HTTP status is 200, but it should be 404' ) )->during( + 'the_http_status_should_be', + array( 404 ) + ); + } + + private function init_mink( $driver ) + { + $mink = new Mink( array( + 'goutte' => new Session( new GoutteDriver( new GoutteClient() ) ), + 'selenium2' => new Session( new Selenium2Driver() ), + ) ); + $mink->setDefaultSessionName( $driver ); + $this->setMink( $mink ); + } } diff --git a/src/Context/RawWordPressContext.php b/src/Context/RawWordPressContext.php index 7bda935..0128873 100644 --- a/src/Context/RawWordPressContext.php +++ b/src/Context/RawWordPressContext.php @@ -64,7 +64,7 @@ public function get_variables( $key ) * * @return int HTTP status code. */ - protected function get_http_status() + public function get_http_status() { $session = $this->getSession(); return intval( $session->getStatusCode() ); @@ -75,7 +75,7 @@ protected function get_http_status() * * @return array HTTP response headers. */ - protected function get_http_headers() + public function get_http_headers() { $session = $this->getSession(); return $session->getResponseHeaders(); @@ -87,7 +87,7 @@ protected function get_http_headers() * @param string $url The URL. * @return string The contents. */ - protected function get_contents( $url ) + public function get_contents( $url ) { $this->getSession()->visit( $url ); return $this->getSession()->getPage()->getText(); @@ -101,7 +101,7 @@ protected function get_contents( $url ) * @return bool * @throws \Exception If the page returns something wrong. */ - protected function login( $user, $password ) + public function login( $user, $password ) { $this->getSession()->visit( $this->locatePath( '/wp-login.php' ) ); $this->wait_the_element( "#loginform" ); @@ -138,7 +138,7 @@ protected function login( $user, $password ) * @return bool Return true when I am at `$url`. * @throws \Exception If the page returns something wrong. */ - protected function is_current_url( $url ) + public function is_current_url( $url ) { $current_url = $this->getSession()->getCurrentUrl(); @@ -156,7 +156,7 @@ protected function is_current_url( $url ) * @return bool * @throws \Exception If the page returns something wrong. */ - protected function logout() + public function logout() { if ( ! $this->is_logged_in() ) { return false; // user isn't login. @@ -191,7 +191,7 @@ protected function logout() * @return boolean * Returns TRUE if a user is logged in for this session. */ - protected function is_logged_in() + public function is_logged_in() { $page = $this->getSession()->getPage(); if ( $page->find( "css", ".logged-in" ) ) { @@ -210,7 +210,7 @@ protected function is_logged_in() * @return bool * @throws \Exception If the page returns something wrong. */ - protected function wait_the_element( $selector ) + public function wait_the_element( $selector ) { $page = $this->getSession()->getPage(); diff --git a/src/Context/WordPressContext.php b/src/Context/WordPressContext.php index b2ca2e7..7064913 100644 --- a/src/Context/WordPressContext.php +++ b/src/Context/WordPressContext.php @@ -30,16 +30,19 @@ public function save_env_as_var( $env, $var ) * Example: the HTTP status should be 400 * * @param string $expect The HTTP status code. + * @throws \Exception * @then /^the HTTP status should be (?P[0-9]+)$/ */ public function the_http_status_should_be( $expect ) { $status = $this->get_http_status(); - $this->assertSame( $status, intval( $expect ), sprintf( - 'The HTTP status is %1$s, but it should be %2$s', - $status, - $expect - ) ); + if ( intval( $expect ) !== $status ) { + throw new \Exception(sprintf( + 'The HTTP status is %1$s, but it should be %2$s', + $status, + $expect + )); + } } /** From b889fd672b1d4f01e2abd64bae76f8fdb22757aa Mon Sep 17 00:00:00 2001 From: miya0001 Date: Tue, 27 Dec 2016 22:59:54 +0900 Subject: [PATCH 09/12] remove empty line --- spec/Context/RawWordPressContextSpec.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spec/Context/RawWordPressContextSpec.php b/spec/Context/RawWordPressContextSpec.php index f790bc2..14aeacb 100644 --- a/spec/Context/RawWordPressContextSpec.php +++ b/spec/Context/RawWordPressContextSpec.php @@ -32,8 +32,7 @@ public function it_can_set_and_get_parameters() $this->set_params( $params ); $this->get_params()->shouldReturn( $params ); } - - + public function it_can_replace_var() { // variable should be converted. From 1a5aeb606c2523f10147d2ef8bd3343bc8c0a11f Mon Sep 17 00:00:00 2001 From: miya0001 Date: Fri, 30 Dec 2016 20:08:31 +0900 Subject: [PATCH 10/12] remove phpunit from dependencies --- .envrc | 2 +- .travis.yml | 4 +- composer.json | 1 - composer.lock | 2326 ++++++++-------------- spec/Context/RawWordPressContextSpec.php | 41 +- src/Context/RawWordPressContext.php | 40 - src/Context/WordPressContext.php | 27 +- 7 files changed, 880 insertions(+), 1561 deletions(-) diff --git a/.envrc b/.envrc index a1ee1c0..f912f22 100644 --- a/.envrc +++ b/.envrc @@ -1,3 +1,3 @@ export WP_VERSION=latest -export WP_THEME=twentysixteen +export WP_THEME=twentyseventeen export WP_PATH=/tmp/wp-tests diff --git a/.travis.yml b/.travis.yml index 57e9082..55987bd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,8 +6,8 @@ php: env: matrix: - - WP_VERSION=nightly WP_THEME=twentysixteen - - WP_VERSION=latest WP_THEME=twentysixteen + - WP_VERSION=nightly WP_THEME=twentyseventeen + - WP_VERSION=latest WP_THEME=twentyseventeen before_install: - nvm install node diff --git a/composer.json b/composer.json index 5339964..a80bf95 100644 --- a/composer.json +++ b/composer.json @@ -13,7 +13,6 @@ "behat/mink": "~1.7", "behat/mink-extension": "~2.2", "behat/mink-selenium2-driver": "~1.3.1", - "phpunit/phpunit": "^5.6", "behat/mink-goutte-driver": "^1.2" }, "require-dev": { diff --git a/composer.lock b/composer.lock index b99d78c..648c3b5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,26 +4,27 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "dec07608b2a42c1e0f90b18a32cd6921", - "content-hash": "9e78a78d767c2cb692b5e82339adcea9", + "hash": "ef3cc2ccfadd9a720ad6091a80d2327a", + "content-hash": "40519e4a8203b45b30b138165f2ba09f", "packages": [ { "name": "behat/behat", - "version": "v3.2.2", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/Behat/Behat.git", - "reference": "30aa3836825416f28581ee55fcfe6a5b0cdeeb85" + "reference": "15a3a1857457eaa29cdf41564a5e421effb09526" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Behat/zipball/30aa3836825416f28581ee55fcfe6a5b0cdeeb85", - "reference": "30aa3836825416f28581ee55fcfe6a5b0cdeeb85", + "url": "https://api.github.com/repos/Behat/Behat/zipball/15a3a1857457eaa29cdf41564a5e421effb09526", + "reference": "15a3a1857457eaa29cdf41564a5e421effb09526", "shasum": "" }, "require": { "behat/gherkin": "^4.4.4", "behat/transliterator": "~1.0", + "container-interop/container-interop": "^1.1", "ext-mbstring": "*", "php": ">=5.3.3", "symfony/class-loader": "~2.1||~3.0", @@ -86,7 +87,7 @@ "symfony", "testing" ], - "time": "2016-11-05 17:13:53" + "time": "2016-12-25 13:43:52" }, { "name": "behat/gherkin", @@ -477,58 +478,31 @@ "time": "2015-09-28 16:26:35" }, { - "name": "doctrine/instantiator", - "version": "1.0.5", + "name": "container-interop/container-interop", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "url": "https://github.com/container-interop/container-interop.git", + "reference": "fc08354828f8fd3245f77a66b9e23a6bca48297e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/container-interop/container-interop/zipball/fc08354828f8fd3245f77a66b9e23a6bca48297e", + "reference": "fc08354828f8fd3245f77a66b9e23a6bca48297e", "shasum": "" }, - "require": { - "php": ">=5.3,<8.0-DEV" - }, - "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" - }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + "Interop\\Container\\": "src/Interop/Container/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2015-06-14 21:17:01" + "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", + "time": "2014-12-30 15:22:37" }, { "name": "fabpot/goutte", @@ -809,66 +783,71 @@ "time": "2015-06-15 20:19:33" }, { - "name": "myclabs/deep-copy", - "version": "1.5.5", + "name": "psr/http-message", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "399c1f9781e222f6eb6cc238796f5200d1b7f108" + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/399c1f9781e222f6eb6cc238796f5200d1b7f108", - "reference": "399c1f9781e222f6eb6cc238796f5200d1b7f108", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "doctrine/collections": "1.*", - "phpunit/phpunit": "~4.1" + "php": ">=5.3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "DeepCopy\\": "src/DeepCopy/" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", - "homepage": "https://github.com/myclabs/DeepCopy", + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" ], - "time": "2016-10-31 17:19:45" + "time": "2016-08-06 14:39:51" }, { - "name": "phpdocumentor/reflection-common", - "version": "1.0", + "name": "psr/log", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", "shasum": "" }, "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" + "php": ">=5.3.0" }, "type": "library", "extra": { @@ -878,9 +857,7 @@ }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -889,52 +866,57 @@ ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" + "log", + "psr", + "psr-3" ], - "time": "2015-12-27 11:43:31" + "time": "2016-10-10 12:19:37" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "3.1.1", + "name": "symfony/browser-kit", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + "url": "https://github.com/symfony/browser-kit.git", + "reference": "34348c2691ce6254e8e008026f4c5e72c22bb318" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/34348c2691ce6254e8e008026f4c5e72c22bb318", + "reference": "34348c2691ce6254e8e008026f4c5e72c22bb318", "shasum": "" }, "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0@dev", - "phpdocumentor/type-resolver": "^0.2.0", - "webmozart/assert": "^1.0" + "php": ">=5.5.9", + "symfony/dom-crawler": "~2.8|~3.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" + "symfony/css-selector": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0" + }, + "suggest": { + "symfony/process": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } + "Symfony\\Component\\BrowserKit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -942,47 +924,55 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-09-30 07:12:33" + "description": "Symfony BrowserKit Component", + "homepage": "https://symfony.com", + "time": "2016-10-13 13:35:11" }, { - "name": "phpdocumentor/type-resolver", - "version": "0.2.1", + "name": "symfony/class-loader", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" + "url": "https://github.com/symfony/class-loader.git", + "reference": "87cd4e69435d98de01d0162c5f9c0ac017075c63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/87cd4e69435d98de01d0162c5f9c0ac017075c63", + "reference": "87cd4e69435d98de01d0162c5f9c0ac017075c63", "shasum": "" }, "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0" + "php": ">=5.5.9" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "symfony/finder": "~2.8|~3.0", + "symfony/polyfill-apcu": "~1.1" + }, + "suggest": { + "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.2-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] - } + "Symfony\\Component\\ClassLoader\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -990,47 +980,55 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "time": "2016-11-25 06:54:22" + "description": "Symfony ClassLoader Component", + "homepage": "https://symfony.com", + "time": "2016-11-29 08:26:13" }, { - "name": "phpspec/prophecy", - "version": "v1.6.2", + "name": "symfony/config", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "6c52c2722f8460122f96f86346600e1077ce22cb" + "url": "https://github.com/symfony/config.git", + "reference": "b4ec9f099599cfc5b7f4d07bb2e910781a2be5e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/6c52c2722f8460122f96f86346600e1077ce22cb", - "reference": "6c52c2722f8460122f96f86346600e1077ce22cb", + "url": "https://api.github.com/repos/symfony/config/zipball/b4ec9f099599cfc5b7f4d07bb2e910781a2be5e4", + "reference": "b4ec9f099599cfc5b7f4d07bb2e910781a2be5e4", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", - "sebastian/comparator": "^1.1", - "sebastian/recursion-context": "^1.0|^2.0" + "php": ">=5.5.9", + "symfony/filesystem": "~2.8|~3.0" }, "require-dev": { - "phpspec/phpspec": "^2.0", - "phpunit/phpunit": "^4.8 || ^5.6.5" + "symfony/yaml": "~3.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "3.2-dev" } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1038,439 +1036,452 @@ ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2016-11-21 14:58:47" + "description": "Symfony Config Component", + "homepage": "https://symfony.com", + "time": "2016-12-09 07:45:17" }, { - "name": "phpunit/php-code-coverage", - "version": "4.0.4", + "name": "symfony/console", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c14196e64a78570034afd0b7a9f3757ba71c2a0a" + "url": "https://github.com/symfony/console.git", + "reference": "d12aa9ca20f4db83ec58410978dab6afcb9d6aaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c14196e64a78570034afd0b7a9f3757ba71c2a0a", - "reference": "c14196e64a78570034afd0b7a9f3757ba71c2a0a", + "url": "https://api.github.com/repos/symfony/console/zipball/d12aa9ca20f4db83ec58410978dab6afcb9d6aaa", + "reference": "d12aa9ca20f4db83ec58410978dab6afcb9d6aaa", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "^1.4.2", - "sebastian/code-unit-reverse-lookup": "~1.0", - "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "~1.0|~2.0" + "php": ">=5.5.9", + "symfony/debug": "~2.8|~3.0", + "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "^5.4" + "psr/log": "~1.0", + "symfony/event-dispatcher": "~2.8|~3.0", + "symfony/filesystem": "~2.8|~3.0", + "symfony/process": "~2.8|~3.0" }, "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.4.0", - "ext-xmlwriter": "*" + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/filesystem": "", + "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "3.2-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "time": "2016-12-20 15:22:42" + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2016-12-11 14:34:22" }, { - "name": "phpunit/php-file-iterator", - "version": "1.4.2", + "name": "symfony/css-selector", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + "url": "https://github.com/symfony/css-selector.git", + "reference": "e1241f275814827c411d922ba8e64cf2a00b2994" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/e1241f275814827c411d922ba8e64cf2a00b2994", + "reference": "e1241f275814827c411d922ba8e64cf2a00b2994", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "3.2-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "time": "2016-10-03 07:40:28" + "description": "Symfony CssSelector Component", + "homepage": "https://symfony.com", + "time": "2016-11-03 08:11:03" }, { - "name": "phpunit/php-text-template", - "version": "1.2.1", + "name": "symfony/debug", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" + "url": "https://github.com/symfony/debug.git", + "reference": "9f923e68d524a3095c5a2ae5fc7220c7cbc12231" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", + "url": "https://api.github.com/repos/symfony/debug/zipball/9f923e68d524a3095c5a2ae5fc7220c7cbc12231", + "reference": "9f923e68d524a3095c5a2ae5fc7220c7cbc12231", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + }, + "require-dev": { + "symfony/class-loader": "~2.8|~3.0", + "symfony/http-kernel": "~2.8|~3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "time": "2015-06-21 13:50:34" + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", + "time": "2016-11-16 22:18:16" }, { - "name": "phpunit/php-timer", - "version": "1.0.8", + "name": "symfony/dependency-injection", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "037054501c41007c93b6de1b5c7a7acb83523593" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260", - "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/037054501c41007c93b6de1b5c7a7acb83523593", + "reference": "037054501c41007c93b6de1b5c7a7acb83523593", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9" + }, + "conflict": { + "symfony/yaml": "<3.2" }, "require-dev": { - "phpunit/phpunit": "~4|~5" + "symfony/config": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/yaml": "~3.2" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2016-05-12 18:03:57" + "description": "Symfony DependencyInjection Component", + "homepage": "https://symfony.com", + "time": "2016-12-08 15:27:33" }, { - "name": "phpunit/php-token-stream", - "version": "1.4.9", + "name": "symfony/dom-crawler", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b" + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3b402f65a4cc90abf6e1104e388b896ce209631b", - "reference": "3b402f65a4cc90abf6e1104e388b896ce209631b", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e", + "reference": "1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": ">=5.5.9", + "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "symfony/css-selector": "~2.8|~3.0" + }, + "suggest": { + "symfony/css-selector": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.2-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2016-11-15 14:06:22" + "description": "Symfony DomCrawler Component", + "homepage": "https://symfony.com", + "time": "2016-12-10 14:24:53" }, { - "name": "phpunit/phpunit", - "version": "5.7.4", + "name": "symfony/event-dispatcher", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "af91da3f2671006ff5d0628023de3b7ac4d1ef09" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "e8f47a327c2f0fd5aa04fa60af2b693006ed7283" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/af91da3f2671006ff5d0628023de3b7ac4d1ef09", - "reference": "af91da3f2671006ff5d0628023de3b7ac4d1ef09", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e8f47a327c2f0fd5aa04fa60af2b693006ed7283", + "reference": "e8f47a327c2f0fd5aa04fa60af2b693006ed7283", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "myclabs/deep-copy": "~1.3", - "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.6.2", - "phpunit/php-code-coverage": "^4.0.3", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "~1.2.2", - "sebastian/diff": "~1.2", - "sebastian/environment": "^1.3.4 || ^2.0", - "sebastian/exporter": "~2.0", - "sebastian/global-state": "^1.0 || ^2.0", - "sebastian/object-enumerator": "~2.0", - "sebastian/resource-operations": "~1.0", - "sebastian/version": "~1.0|~2.0", - "symfony/yaml": "~2.1|~3.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2" + "php": ">=5.5.9" }, "require-dev": { - "ext-pdo": "*" + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0", + "symfony/dependency-injection": "~2.8|~3.0", + "symfony/expression-language": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0" }, "suggest": { - "ext-xdebug": "*", - "phpunit/php-invoker": "~1.1" + "symfony/dependency-injection": "", + "symfony/http-kernel": "" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "5.7.x-dev" + "dev-master": "3.2-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2016-12-13 16:19:44" + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2016-10-13 06:29:04" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "3.4.3", + "name": "symfony/filesystem", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24" + "url": "https://github.com/symfony/filesystem.git", + "reference": "8d4cf7561a5b17e5eb7a02b80d0b8f014a3796d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", - "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", - "shasum": "" + "url": "https://api.github.com/repos/symfony/filesystem/zipball/8d4cf7561a5b17e5eb7a02b80d0b8f014a3796d4", + "reference": "8d4cf7561a5b17e5eb7a02b80d0b8f014a3796d4", + "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.4" - }, - "suggest": { - "ext-soap": "*" + "php": ">=5.5.9" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2.x-dev" + "dev-master": "3.2-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2016-12-08 20:27:08" + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "time": "2016-11-24 00:46:43" }, { - "name": "psr/http-message", - "version": "1.0.1", + "name": "symfony/polyfill-mbstring", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", + "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.3-dev" } }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" - } + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1478,49 +1489,70 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], - "time": "2016-08-06 14:39:51" + "time": "2016-11-14 01:06:16" }, { - "name": "psr/log", - "version": "1.0.2", + "name": "symfony/translation", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + "url": "https://github.com/symfony/translation.git", + "reference": "5fd18eca88f4d187807a1eba083bc99feaa8635b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "url": "https://api.github.com/repos/symfony/translation/zipball/5fd18eca88f4d187807a1eba083bc99feaa8635b", + "reference": "5fd18eca88f4d187807a1eba083bc99feaa8635b", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.5.9", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/config": "<2.8" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0", + "symfony/intl": "~2.8|~3.0", + "symfony/yaml": "~2.8|~3.0" + }, + "suggest": { + "psr/log": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.2-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1528,330 +1560,299 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2016-10-10 12:19:37" + "description": "Symfony Translation Component", + "homepage": "https://symfony.com", + "time": "2016-11-30 14:40:17" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.0", + "name": "symfony/yaml", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe" + "url": "https://github.com/symfony/yaml.git", + "reference": "a7095af4b97a0955f85c8989106c249fa649011f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/c36f5e7cfce482fde5bf8d10d41a53591e0198fe", - "reference": "c36f5e7cfce482fde5bf8d10d41a53591e0198fe", + "url": "https://api.github.com/repos/symfony/yaml/zipball/a7095af4b97a0955f85c8989106c249fa649011f", + "reference": "a7095af4b97a0955f85c8989106c249fa649011f", "shasum": "" }, "require": { - "php": ">=5.6" + "php": ">=5.5.9" }, "require-dev": { - "phpunit/phpunit": "~5" + "symfony/console": "~2.8|~3.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.2-dev" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2016-02-13 06:45:14" - }, + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2016-12-10 10:07:06" + } + ], + "packages-dev": [ { - "name": "sebastian/comparator", - "version": "1.2.2", + "name": "doctrine/instantiator", + "version": "1.0.5", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f" + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/6a1ed12e8b2409076ab22e3897126211ff8b1f7f", - "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" + "php": ">=5.3,<8.0-DEV" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "athletic/athletic": "~0.1.8", + "ext-pdo": "*", + "ext-phar": "*", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://github.com/doctrine/instantiator", "keywords": [ - "comparator", - "compare", - "equality" + "constructor", + "instantiate" ], - "time": "2016-11-19 09:18:40" + "time": "2015-06-14 21:17:01" }, { - "name": "sebastian/diff", - "version": "1.4.1", + "name": "phpdocumentor/reflection-common", + "version": "1.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", - "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5" }, "require-dev": { - "phpunit/phpunit": "~4.8" + "phpunit/phpunit": "^4.6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src" + ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", "keywords": [ - "diff" + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" ], - "time": "2015-12-08 07:14:41" + "time": "2015-12-27 11:43:31" }, { - "name": "sebastian/environment", - "version": "2.0.0", + "name": "phpdocumentor/reflection-docblock", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/type-resolver": "^0.2.0", + "webmozart/assert": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^5.0" + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "time": "2016-11-26 07:53:53" + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2016-09-30 07:12:33" }, { - "name": "sebastian/exporter", - "version": "2.0.0", + "name": "phpdocumentor/type-resolver", + "version": "0.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~2.0" + "php": ">=5.5", + "phpdocumentor/reflection-common": "^1.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "phpDocumentor\\Reflection\\": [ + "src/" + ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2016-11-19 08:54:04" + "time": "2016-11-25 06:54:22" }, { - "name": "sebastian/global-state", - "version": "1.1.1", + "name": "phpspec/php-diff", + "version": "v1.1.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "url": "https://github.com/phpspec/php-diff.git", + "reference": "0464787bfa7cd13576c5a1e318709768798bec6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/phpspec/php-diff/zipball/0464787bfa7cd13576c5a1e318709768798bec6a", + "reference": "0464787bfa7cd13576c5a1e318709768798bec6a", "shasum": "" }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.2" - }, - "suggest": { - "ext-uopz": "*" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-0": { + "Diff": "lib/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1859,1025 +1860,306 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Chris Boulton", + "homepage": "http://github.com/chrisboulton" } ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2015-10-12 03:26:01" + "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).", + "time": "2016-04-07 12:29:16" }, { - "name": "sebastian/object-enumerator", - "version": "2.0.0", + "name": "phpspec/phpspec", + "version": "3.2.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "96f8a3f257b69e8128ad74d3a7fd464bcbaa3b35" + "url": "https://github.com/phpspec/phpspec.git", + "reference": "019a113b657aed90a4aa8f5e39696800779b8b2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/96f8a3f257b69e8128ad74d3a7fd464bcbaa3b35", - "reference": "96f8a3f257b69e8128ad74d3a7fd464bcbaa3b35", + "url": "https://api.github.com/repos/phpspec/phpspec/zipball/019a113b657aed90a4aa8f5e39696800779b8b2c", + "reference": "019a113b657aed90a4aa8f5e39696800779b8b2c", "shasum": "" }, "require": { - "php": ">=5.6", - "sebastian/recursion-context": "~2.0" + "doctrine/instantiator": "^1.0.1", + "ext-tokenizer": "*", + "php": "^5.6 || ^7.0", + "phpspec/php-diff": "^1.0.0", + "phpspec/prophecy": "^1.5", + "sebastian/exporter": "^1.0 || ^2.0", + "symfony/console": "^2.7 || ^3.0", + "symfony/event-dispatcher": "^2.7 || ^3.0", + "symfony/finder": "^2.7 || ^3.0", + "symfony/process": "^2.7 || ^3.0", + "symfony/yaml": "^2.7 || ^3.0" }, "require-dev": { - "phpunit/phpunit": "~5" + "behat/behat": "^3.1", + "ciaranmcnulty/versionbasedtestskipper": "^0.2.1", + "phpunit/phpunit": "^5.4", + "symfony/filesystem": "^3.0" }, + "suggest": { + "phpspec/nyan-formatters": "Adds Nyan formatters" + }, + "bin": [ + "bin/phpspec" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-0": { + "PhpSpec": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "homepage": "http://marcelloduarte.net/" + }, + { + "name": "Ciaran McNulty", + "homepage": "https://ciaranmcnulty.com/" } ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2016-11-19 07:35:10" + "description": "Specification-oriented BDD framework for PHP 5.6+", + "homepage": "http://phpspec.net/", + "keywords": [ + "BDD", + "SpecBDD", + "TDD", + "spec", + "specification", + "testing", + "tests" + ], + "time": "2016-12-05 13:46:47" }, { - "name": "sebastian/recursion-context", - "version": "2.0.0", + "name": "phpspec/prophecy", + "version": "v1.6.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + "url": "https://github.com/phpspec/prophecy.git", + "reference": "6c52c2722f8460122f96f86346600e1077ce22cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/6c52c2722f8460122f96f86346600e1077ce22cb", + "reference": "6c52c2722f8460122f96f86346600e1077ce22cb", "shasum": "" }, "require": { - "php": ">=5.3.3" + "doctrine/instantiator": "^1.0.2", + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", + "sebastian/comparator": "^1.1", + "sebastian/recursion-context": "^1.0|^2.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpspec/phpspec": "^2.0", + "phpunit/phpunit": "^4.8 || ^5.6.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.6.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-0": { + "Prophecy\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-11-19 07:33:16" - }, - { - "name": "sebastian/resource-operations", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "shasum": "" - }, - "require": { - "php": ">=5.6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28 20:34:47" - }, - { - "name": "sebastian/version", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03 07:35:21" - }, - { - "name": "symfony/browser-kit", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "34348c2691ce6254e8e008026f4c5e72c22bb318" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/34348c2691ce6254e8e008026f4c5e72c22bb318", - "reference": "34348c2691ce6254e8e008026f4c5e72c22bb318", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/dom-crawler": "~2.8|~3.0" - }, - "require-dev": { - "symfony/css-selector": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0" - }, - "suggest": { - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony BrowserKit Component", - "homepage": "https://symfony.com", - "time": "2016-10-13 13:35:11" - }, - { - "name": "symfony/class-loader", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/class-loader.git", - "reference": "87cd4e69435d98de01d0162c5f9c0ac017075c63" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/87cd4e69435d98de01d0162c5f9c0ac017075c63", - "reference": "87cd4e69435d98de01d0162c5f9c0ac017075c63", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "require-dev": { - "symfony/finder": "~2.8|~3.0", - "symfony/polyfill-apcu": "~1.1" - }, - "suggest": { - "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\ClassLoader\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony ClassLoader Component", - "homepage": "https://symfony.com", - "time": "2016-11-29 08:26:13" - }, - { - "name": "symfony/config", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "b4ec9f099599cfc5b7f4d07bb2e910781a2be5e4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/b4ec9f099599cfc5b7f4d07bb2e910781a2be5e4", - "reference": "b4ec9f099599cfc5b7f4d07bb2e910781a2be5e4", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/filesystem": "~2.8|~3.0" - }, - "require-dev": { - "symfony/yaml": "~3.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Config Component", - "homepage": "https://symfony.com", - "time": "2016-12-09 07:45:17" - }, - { - "name": "symfony/console", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "d12aa9ca20f4db83ec58410978dab6afcb9d6aaa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/d12aa9ca20f4db83ec58410978dab6afcb9d6aaa", - "reference": "d12aa9ca20f4db83ec58410978dab6afcb9d6aaa", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/debug": "~2.8|~3.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/filesystem": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/filesystem": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2016-12-11 14:34:22" - }, - { - "name": "symfony/css-selector", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "e1241f275814827c411d922ba8e64cf2a00b2994" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/e1241f275814827c411d922ba8e64cf2a00b2994", - "reference": "e1241f275814827c411d922ba8e64cf2a00b2994", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony CssSelector Component", - "homepage": "https://symfony.com", - "time": "2016-11-03 08:11:03" - }, - { - "name": "symfony/debug", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "9f923e68d524a3095c5a2ae5fc7220c7cbc12231" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/9f923e68d524a3095c5a2ae5fc7220c7cbc12231", - "reference": "9f923e68d524a3095c5a2ae5fc7220c7cbc12231", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/class-loader": "~2.8|~3.0", - "symfony/http-kernel": "~2.8|~3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2016-11-16 22:18:16" - }, - { - "name": "symfony/dependency-injection", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "037054501c41007c93b6de1b5c7a7acb83523593" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/037054501c41007c93b6de1b5c7a7acb83523593", - "reference": "037054501c41007c93b6de1b5c7a7acb83523593", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "conflict": { - "symfony/yaml": "<3.2" - }, - "require-dev": { - "symfony/config": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/yaml": "~3.2" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony DependencyInjection Component", - "homepage": "https://symfony.com", - "time": "2016-12-08 15:27:33" - }, - { - "name": "symfony/dom-crawler", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e", - "reference": "1638c7534a8a2fa0bf9e979f9aacb6d7e8e9e24e", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.0" - }, - "require-dev": { - "symfony/css-selector": "~2.8|~3.0" - }, - "suggest": { - "symfony/css-selector": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony DomCrawler Component", - "homepage": "https://symfony.com", - "time": "2016-12-10 14:24:53" - }, - { - "name": "symfony/event-dispatcher", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "e8f47a327c2f0fd5aa04fa60af2b693006ed7283" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e8f47a327c2f0fd5aa04fa60af2b693006ed7283", - "reference": "e8f47a327c2f0fd5aa04fa60af2b693006ed7283", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/dependency-injection": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2016-10-13 06:29:04" - }, - { - "name": "symfony/filesystem", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "8d4cf7561a5b17e5eb7a02b80d0b8f014a3796d4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/8d4cf7561a5b17e5eb7a02b80d0b8f014a3796d4", - "reference": "8d4cf7561a5b17e5eb7a02b80d0b8f014a3796d4", - "shasum": "" - }, - "require": { - "php": ">=5.5.9" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2016-11-24 00:46:43" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", - "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" } ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2016-11-14 01:06:16" - }, - { - "name": "symfony/translation", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "5fd18eca88f4d187807a1eba083bc99feaa8635b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/5fd18eca88f4d187807a1eba083bc99feaa8635b", - "reference": "5fd18eca88f4d187807a1eba083bc99feaa8635b", - "shasum": "" - }, - "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/config": "<2.8" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/intl": "~2.8|~3.0", - "symfony/yaml": "~2.8|~3.0" - }, - "suggest": { - "psr/log": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" ], - "description": "Symfony Translation Component", - "homepage": "https://symfony.com", - "time": "2016-11-30 14:40:17" + "time": "2016-11-21 14:58:47" }, { - "name": "symfony/yaml", - "version": "v3.2.1", + "name": "sebastian/comparator", + "version": "1.2.2", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "a7095af4b97a0955f85c8989106c249fa649011f" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/a7095af4b97a0955f85c8989106c249fa649011f", - "reference": "a7095af4b97a0955f85c8989106c249fa649011f", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/6a1ed12e8b2409076ab22e3897126211ff8b1f7f", + "reference": "6a1ed12e8b2409076ab22e3897126211ff8b1f7f", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": ">=5.3.3", + "sebastian/diff": "~1.2", + "sebastian/exporter": "~1.2 || ~2.0" }, "require-dev": { - "symfony/console": "~2.8|~3.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2016-12-10 10:07:06" + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "http://www.github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "time": "2016-11-19 09:18:40" }, { - "name": "webmozart/assert", - "version": "1.2.0", + "name": "sebastian/diff", + "version": "1.4.1", "source": { "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", + "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" + "phpunit/phpunit": "~4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.4-dev" } }, "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Assertions to validate method input/output with nice error messages.", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "assert", - "check", - "validate" + "diff" ], - "time": "2016-11-23 20:04:58" - } - ], - "packages-dev": [ + "time": "2015-12-08 07:14:41" + }, { - "name": "phpspec/php-diff", - "version": "v1.1.0", + "name": "sebastian/exporter", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/phpspec/php-diff.git", - "reference": "0464787bfa7cd13576c5a1e318709768798bec6a" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/php-diff/zipball/0464787bfa7cd13576c5a1e318709768798bec6a", - "reference": "0464787bfa7cd13576c5a1e318709768798bec6a", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", "shasum": "" }, + "require": { + "php": ">=5.3.3", + "sebastian/recursion-context": "~2.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "~4.4" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-0": { - "Diff": "lib/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2885,94 +2167,86 @@ ], "authors": [ { - "name": "Chris Boulton", - "homepage": "http://github.com/chrisboulton" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).", - "time": "2016-04-07 12:29:16" + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "time": "2016-11-19 08:54:04" }, { - "name": "phpspec/phpspec", - "version": "3.2.2", + "name": "sebastian/recursion-context", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/phpspec/phpspec.git", - "reference": "019a113b657aed90a4aa8f5e39696800779b8b2c" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/phpspec/zipball/019a113b657aed90a4aa8f5e39696800779b8b2c", - "reference": "019a113b657aed90a4aa8f5e39696800779b8b2c", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.1", - "ext-tokenizer": "*", - "php": "^5.6 || ^7.0", - "phpspec/php-diff": "^1.0.0", - "phpspec/prophecy": "^1.5", - "sebastian/exporter": "^1.0 || ^2.0", - "symfony/console": "^2.7 || ^3.0", - "symfony/event-dispatcher": "^2.7 || ^3.0", - "symfony/finder": "^2.7 || ^3.0", - "symfony/process": "^2.7 || ^3.0", - "symfony/yaml": "^2.7 || ^3.0" + "php": ">=5.3.3" }, "require-dev": { - "behat/behat": "^3.1", - "ciaranmcnulty/versionbasedtestskipper": "^0.2.1", - "phpunit/phpunit": "^5.4", - "symfony/filesystem": "^3.0" - }, - "suggest": { - "phpspec/nyan-formatters": "Adds Nyan formatters" + "phpunit/phpunit": "~4.4" }, - "bin": [ - "bin/phpspec" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-0": { - "PhpSpec": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" }, { - "name": "Marcello Duarte", - "homepage": "http://marcelloduarte.net/" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "name": "Ciaran McNulty", - "homepage": "https://ciaranmcnulty.com/" + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "Specification-oriented BDD framework for PHP 5.6+", - "homepage": "http://phpspec.net/", - "keywords": [ - "BDD", - "SpecBDD", - "TDD", - "spec", - "specification", - "testing", - "tests" - ], - "time": "2016-12-05 13:46:47" + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2016-11-19 07:33:16" }, { "name": "symfony/finder", @@ -3071,6 +2345,56 @@ "description": "Symfony Process Component", "homepage": "https://symfony.com", "time": "2016-11-24 10:40:28" + }, + { + "name": "webmozart/assert", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/assert.git", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", + "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2016-11-23 20:04:58" } ], "aliases": [], diff --git a/spec/Context/RawWordPressContextSpec.php b/spec/Context/RawWordPressContextSpec.php index 14aeacb..49e5535 100644 --- a/spec/Context/RawWordPressContextSpec.php +++ b/spec/Context/RawWordPressContextSpec.php @@ -32,7 +32,7 @@ public function it_can_set_and_get_parameters() $this->set_params( $params ); $this->get_params()->shouldReturn( $params ); } - + public function it_can_replace_var() { // variable should be converted. @@ -92,22 +92,53 @@ public function it_should_get_headers() ); } - public function it_can_login_with_goutte() + public function it_can_login_with() { $this->init_mink( 'goutte' ); - $session = $this->getSession(); + + $this->login( 'admin', 'admin' )->shouldReturn( true ); + $this->login( 'admin', 'xxxx' )->shouldReturn( false ); + + $this->init_mink( 'selenium2' ); $this->login( 'admin', 'admin' )->shouldReturn( true ); $this->login( 'admin', 'xxxx' )->shouldReturn( false ); } - public function it_can_login_with_selenium2() + public function it_can_check_current_url_with() { + $this->init_mink( 'goutte' ); + $session = $this->getSession(); + + $session->visit( 'http://127.0.0.1:8080/i-am-here' ); + + $this->is_current_url( "/i-am-here" )->shouldReturn( true ); + $this->is_current_url( "/i-am-not-here" )->shouldReturn( false ); + $this->init_mink( 'selenium2' ); $session = $this->getSession(); + $session->visit( 'http://127.0.0.1:8080/i-am-here' ); + + $this->is_current_url( "/i-am-here" )->shouldReturn( true ); + $this->is_current_url( "/i-am-not-here" )->shouldReturn( false ); + } + + public function it_can_logout() + { + $this->init_mink( 'goutte' ); + $this->login( 'admin', 'admin' )->shouldReturn( true ); - $this->login( 'admin', 'xxxx' )->shouldReturn( false ); + $this->is_logged_in()->shouldReturn( true ); + $this->logout(); + $this->is_logged_in()->shouldReturn( false ); + + $this->init_mink( 'selenium2' ); + + $this->login( 'admin', 'admin' )->shouldReturn( true ); + $this->is_logged_in()->shouldReturn( true ); + $this->logout(); + $this->is_logged_in()->shouldReturn( false ); } private function init_mink( $driver ) diff --git a/src/Context/RawWordPressContext.php b/src/Context/RawWordPressContext.php index 0128873..e25214e 100644 --- a/src/Context/RawWordPressContext.php +++ b/src/Context/RawWordPressContext.php @@ -400,44 +400,4 @@ public function get_admin_url() $params = $this->get_params(); return $params['admin_url']; } - - /** - * Asserts that two variables have the same type and value. - * Used on objects, it asserts that two variables reference - * the same object. - * - * @param mixed $expected - * @param mixed $actual - * @param string $message - */ - protected function assertSame( $expected, $actual, $message = '' ) - { - \PHPUnit_Framework_Assert::assertSame( $expected, $actual, $message = '' ); - } - - /** - * Asserts that a condition is true. - * - * @param bool $condition - * @param string $message - * - * @throws \PHPUnit_Framework_AssertionFailedError - */ - protected function assertTrue( $condition, $message = '' ) - { - \PHPUnit_Framework_Assert::assertTrue( $condition, $message = '' ); - } - - /** - * Asserts that a condition is false. - * - * @param bool $condition - * @param string $message - * - * @throws \PHPUnit_Framework_AssertionFailedError - */ - protected function assertFalse( $condition, $message = '' ) - { - \PHPUnit_Framework_Assert::assertFalse( $condition, $message = '' ); - } } diff --git a/src/Context/WordPressContext.php b/src/Context/WordPressContext.php index 7064913..e1ea878 100644 --- a/src/Context/WordPressContext.php +++ b/src/Context/WordPressContext.php @@ -65,12 +65,14 @@ public function the_http_headers_should_be( TableNode $table ) foreach ( $table->getHash() as $row ) { if ( ! empty( $headers[ $row['header'] ] ) ) { $value = $headers[ $row['header'] ][0]; - $this->assertSame( $row['value'], $value, sprintf( - 'The value of "%1$s" header is "%1$s", but it should be "%3$s".', - $row['header'], - $value, - $row['value'] - ) ); + if ( $row['value'] !== $value ) { + throw new \Exception( sprintf( + 'The value of "%1$s" header is "%1$s", but it should be "%3$s".', + $row['header'], + $value, + $row['value'] + ) ); + } } else { throw new \Exception( sprintf( 'The value of "%1$s" header is empty, but it should be "%2$s".', @@ -227,17 +229,20 @@ public function i_deactivate_the_plugin( $slug ) { * Example: Given the "twentysixteen" theme should be activated * * @Then /^the "(?P[^"]*)" theme should be activated$/ + * @throws \Exception */ public function theme_should_be_activated( $theme ) { $theme = $this->replace_variables( $theme ); $current_theme = $this->get_current_theme(); - $this->assertSame( $theme, $current_theme, sprintf( - "The current theme is %s, but it should be %s", - $current_theme, - $theme - ) ); + if ( $theme !== $current_theme ) { + throw new \Exception( sprintf( + "The current theme is %s, but it should be %s", + $current_theme, + $theme + ) ); + } } /** From 4bfbe9e7157d4d129eb88e010379e58fa833c4af Mon Sep 17 00:00:00 2001 From: miya0001 Date: Wed, 11 Jan 2017 22:09:22 +0900 Subject: [PATCH 11/12] rename this project --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9dbe1aa..f4a2da6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# WordPress Extension for the Behat +# WordPress Extension for the Behat/Mink -[![Build Status](https://travis-ci.org/vccw-team/wordpress-extension.svg?branch=master)](https://travis-ci.org/vccw-team/wordpress-extension) +[![Build Status](https://travis-ci.org/vccw-team/wordpress-mink-extension.svg?branch=master)](https://travis-ci.org/vccw-team/wordpress-mink-extension) [![Latest Stable Version](https://poser.pugx.org/vccw-team/wordpress-extension/v/stable)](https://packagist.org/packages/vccw-team/wordpress-extension) [![Total Downloads](https://poser.pugx.org/vccw-team/wordpress-extension/downloads)](https://packagist.org/packages/vccw-team/wordpress-extension) [![Latest Unstable Version](https://poser.pugx.org/vccw-team/wordpress-extension/v/unstable)](https://packagist.org/packages/vccw-team/wordpress-extension) From 30d266fd9e7a314c12e0d0be54471c2290844e75 Mon Sep 17 00:00:00 2001 From: fumikito Date: Wed, 18 Oct 2017 20:43:39 +0900 Subject: [PATCH 12/12] Change login condition --- src/Context/RawWordPressContext.php | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/Context/RawWordPressContext.php b/src/Context/RawWordPressContext.php index e25214e..6fbdfa2 100644 --- a/src/Context/RawWordPressContext.php +++ b/src/Context/RawWordPressContext.php @@ -114,12 +114,19 @@ public function login( $user, $password ) $submit->click(); for ( $i = 0; $i < $this->timeout; $i++ ) { + // Check if keeping staying on login page till timeout. try { - $admin_url = $this->get_admin_url() . '/'; - if ( $this->is_current_url( $admin_url ) ) { - return true; + if ( $this->is_current_url( '/wp-login.php' ) ) { + // Still in login page. + if ( $this->getSession()->getPage()->find( 'css','#login_error' ) ) { + // Find error dialog. Apparent Error. + return false; + } else { + // @todo Should consider other situations? + } } else { - return false; + // Redirected. Guess logged in. + return true; } } catch ( \Exception $e ) { // do nothing