From b03279220ce63ec43fe4e558591b32b46641d9f4 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Fri, 23 May 2014 22:07:28 +0200 Subject: [PATCH 1/8] tests: removed @author --- tests/ComponentModel/Container.attached.phpt | 2 -- tests/ComponentModel/Container.clone.phpt | 2 -- tests/ComponentModel/Container.commonFactory.addComponent.phpt | 2 -- .../Container.commonFactory.addComponentWithreturn.phpt | 2 -- tests/ComponentModel/Container.commonFactory.return.phpt | 2 -- tests/ComponentModel/Container.factory.addComponent.phpt | 2 -- .../Container.factory.addComponentWithreturn.phpt | 2 -- tests/ComponentModel/Container.factory.remove.phpt | 2 -- tests/ComponentModel/Container.factory.return.phpt | 2 -- tests/ComponentModel/Container.iterator.phpt | 2 -- tests/ComponentModel/Container.zeroname.phpt | 2 -- 11 files changed, 22 deletions(-) diff --git a/tests/ComponentModel/Container.attached.phpt b/tests/ComponentModel/Container.attached.phpt index dc367ca..2b65a4d 100644 --- a/tests/ComponentModel/Container.attached.phpt +++ b/tests/ComponentModel/Container.attached.phpt @@ -2,8 +2,6 @@ /** * Test: Nette\ComponentModel\Container::attached() - * - * @author David Grudl */ use Nette\ComponentModel\Container, diff --git a/tests/ComponentModel/Container.clone.phpt b/tests/ComponentModel/Container.clone.phpt index b35c5c9..5f21994 100644 --- a/tests/ComponentModel/Container.clone.phpt +++ b/tests/ComponentModel/Container.clone.phpt @@ -2,8 +2,6 @@ /** * Test: Nette\ComponentModel\Container cloning. - * - * @author David Grudl */ use Nette\ComponentModel\Container, diff --git a/tests/ComponentModel/Container.commonFactory.addComponent.phpt b/tests/ComponentModel/Container.commonFactory.addComponent.phpt index 26353c9..abe1c58 100644 --- a/tests/ComponentModel/Container.commonFactory.addComponent.phpt +++ b/tests/ComponentModel/Container.commonFactory.addComponent.phpt @@ -2,8 +2,6 @@ /** * Test: Nette\ComponentModel\Container component factory 2. - * - * @author David Grudl */ use Nette\ComponentModel\Container, diff --git a/tests/ComponentModel/Container.commonFactory.addComponentWithreturn.phpt b/tests/ComponentModel/Container.commonFactory.addComponentWithreturn.phpt index 5a45809..05d95f3 100644 --- a/tests/ComponentModel/Container.commonFactory.addComponentWithreturn.phpt +++ b/tests/ComponentModel/Container.commonFactory.addComponentWithreturn.phpt @@ -2,8 +2,6 @@ /** * Test: Nette\ComponentModel\Container component factory 3. - * - * @author David Grudl */ use Nette\ComponentModel\Container, diff --git a/tests/ComponentModel/Container.commonFactory.return.phpt b/tests/ComponentModel/Container.commonFactory.return.phpt index 9d1b5fb..4f4e3ef 100644 --- a/tests/ComponentModel/Container.commonFactory.return.phpt +++ b/tests/ComponentModel/Container.commonFactory.return.phpt @@ -2,8 +2,6 @@ /** * Test: Nette\ComponentModel\Container component factory 1. - * - * @author David Grudl */ use Nette\ComponentModel\Container, diff --git a/tests/ComponentModel/Container.factory.addComponent.phpt b/tests/ComponentModel/Container.factory.addComponent.phpt index 06c0455..eda54c5 100644 --- a/tests/ComponentModel/Container.factory.addComponent.phpt +++ b/tests/ComponentModel/Container.factory.addComponent.phpt @@ -2,8 +2,6 @@ /** * Test: Nette\ComponentModel\Container component named factory 5. - * - * @author David Grudl */ use Nette\ComponentModel\Container, diff --git a/tests/ComponentModel/Container.factory.addComponentWithreturn.phpt b/tests/ComponentModel/Container.factory.addComponentWithreturn.phpt index a1e36cf..5f79021 100644 --- a/tests/ComponentModel/Container.factory.addComponentWithreturn.phpt +++ b/tests/ComponentModel/Container.factory.addComponentWithreturn.phpt @@ -2,8 +2,6 @@ /** * Test: Nette\ComponentModel\Container component named factory 6. - * - * @author David Grudl */ use Nette\ComponentModel\Container, diff --git a/tests/ComponentModel/Container.factory.remove.phpt b/tests/ComponentModel/Container.factory.remove.phpt index db5bfbc..25f13e5 100644 --- a/tests/ComponentModel/Container.factory.remove.phpt +++ b/tests/ComponentModel/Container.factory.remove.phpt @@ -2,8 +2,6 @@ /** * Test: Nette\ComponentModel\Container component factory & remove inside. - * - * @author David Grudl */ use Nette\ComponentModel\Container, diff --git a/tests/ComponentModel/Container.factory.return.phpt b/tests/ComponentModel/Container.factory.return.phpt index 39c41e2..f588af2 100644 --- a/tests/ComponentModel/Container.factory.return.phpt +++ b/tests/ComponentModel/Container.factory.return.phpt @@ -2,8 +2,6 @@ /** * Test: Nette\ComponentModel\Container component named factory 4. - * - * @author David Grudl */ use Nette\ComponentModel\Container, diff --git a/tests/ComponentModel/Container.iterator.phpt b/tests/ComponentModel/Container.iterator.phpt index bc76181..2a71894 100644 --- a/tests/ComponentModel/Container.iterator.phpt +++ b/tests/ComponentModel/Container.iterator.phpt @@ -2,8 +2,6 @@ /** * Test: Nette\ComponentModel\Container iterator. - * - * @author David Grudl */ use Nette\ComponentModel\Component, diff --git a/tests/ComponentModel/Container.zeroname.phpt b/tests/ComponentModel/Container.zeroname.phpt index 3a967e8..cdd07c1 100644 --- a/tests/ComponentModel/Container.zeroname.phpt +++ b/tests/ComponentModel/Container.zeroname.phpt @@ -2,8 +2,6 @@ /** * Test: Nette\ComponentModel\Container and '0' name. - * - * @author David Grudl */ use Nette\ComponentModel\Container, From ef2efb45ebf4ac38c927ff2a47dbdfc3b9fe6986 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Mon, 18 Aug 2014 00:24:06 +0200 Subject: [PATCH 2/8] .travis: added code checker --- .travis.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 605785e..8d35f32 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,12 +10,15 @@ matrix: allow_failures: - php: hhvm -script: vendor/bin/tester tests -s -c tests/php-unix.ini +script: + - vendor/bin/tester tests -s -c tests/php-unix.ini + - php code-checker/src/code-checker.php -d src after_failure: # Print *.actual content - for i in $(find tests -name \*.actual); do echo "--- $i"; cat $i; echo; echo; done before_script: - # Install Nette Tester + # Install Nette Tester & Code Checker - composer install --no-interaction --dev --prefer-source + - composer create-project nette/code-checker code-checker ~2.2 --no-interaction --prefer-source From 21983fe8582a1a06be9e570b87892dfc75668c33 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Fri, 22 Aug 2014 21:45:06 +0200 Subject: [PATCH 3/8] tests: removed useless php.ini files --- .travis.yml | 2 +- tests/php-unix.ini | 4 ---- tests/php-win.ini | 5 ----- 3 files changed, 1 insertion(+), 10 deletions(-) delete mode 100644 tests/php-unix.ini delete mode 100644 tests/php-win.ini diff --git a/.travis.yml b/.travis.yml index 8d35f32..d93f0ee 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,7 @@ matrix: - php: hhvm script: - - vendor/bin/tester tests -s -c tests/php-unix.ini + - vendor/bin/tester tests -s - php code-checker/src/code-checker.php -d src after_failure: diff --git a/tests/php-unix.ini b/tests/php-unix.ini deleted file mode 100644 index 27f8a41..0000000 --- a/tests/php-unix.ini +++ /dev/null @@ -1,4 +0,0 @@ -[PHP] - -[Zend] -;zend_extension="./ext/zend_extension" diff --git a/tests/php-win.ini b/tests/php-win.ini deleted file mode 100644 index 5839751..0000000 --- a/tests/php-win.ini +++ /dev/null @@ -1,5 +0,0 @@ -[PHP] -extension_dir = "./ext" - -[Zend] -;zend_extension="./ext/php_xdebug-2.0.5-5.3-vc6.dll" From 98dfc6d7accdea82f716f5c2d4d1a577ee43aaa4 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Tue, 18 Nov 2014 02:18:37 +0100 Subject: [PATCH 4/8] travis: code-checker checks whole repository --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d93f0ee..ec15da5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ matrix: script: - vendor/bin/tester tests -s - - php code-checker/src/code-checker.php -d src + - php code-checker/src/code-checker.php after_failure: # Print *.actual content From b8b75663e7b7b4f0580991d95eeae30998a08338 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Mon, 12 Jan 2015 11:15:03 +0100 Subject: [PATCH 5/8] travis: php-cgi changed to php --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index ec15da5..d67b691 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,7 @@ matrix: - php: hhvm script: - - vendor/bin/tester tests -s + - vendor/bin/tester tests -s -p php - php code-checker/src/code-checker.php after_failure: @@ -21,4 +21,4 @@ after_failure: before_script: # Install Nette Tester & Code Checker - composer install --no-interaction --dev --prefer-source - - composer create-project nette/code-checker code-checker ~2.2 --no-interaction --prefer-source + - composer create-project nette/code-checker code-checker ~2.3 --no-interaction --prefer-source From f04fe807fe5f85fd006868ac4854fba73b4c6f0d Mon Sep 17 00:00:00 2001 From: David Grudl Date: Mon, 26 Jan 2015 00:23:23 +0100 Subject: [PATCH 6/8] tests: used Assert::count --- composer.json | 2 +- tests/ComponentModel/Container.factory.return.phpt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index 26d3b41..895c1e6 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ "nette/utils": "~2.2" }, "require-dev": { - "nette/tester": "~1.0" + "nette/tester": "~1.3" }, "conflict": { "nette/nette": "<2.2" diff --git a/tests/ComponentModel/Container.factory.return.phpt b/tests/ComponentModel/Container.factory.return.phpt index f588af2..2a3d925 100644 --- a/tests/ComponentModel/Container.factory.return.phpt +++ b/tests/ComponentModel/Container.factory.return.phpt @@ -26,7 +26,7 @@ $a = new TestClass; $b = $a->getComponent('b'); Assert::same( 'b', $b->name ); -Assert::same( 1, count($a->getComponents()) ); +Assert::count( 1, $a->getComponents() ); Assert::exception(function() use ($a) { @@ -35,4 +35,4 @@ Assert::exception(function() use ($a) { $a->removeComponent($b); -Assert::same( 0, count($a->getComponents()) ); +Assert::count( 0, $a->getComponents() ); From b09e2716534685b9e58b826c62cae33b754ef964 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Tue, 3 Feb 2015 18:28:53 +0100 Subject: [PATCH 7/8] Container::getComponent() uses better exception message when component has parent [Closes #1] --- src/ComponentModel/Container.php | 9 ++++-- .../Container.commonFactory.error.parent.phpt | 30 +++++++++++++++++++ .../Container.commonFactory.error.type.phpt | 30 +++++++++++++++++++ .../Container.factory.error.phpt | 27 +++++++++++++++++ 4 files changed, 94 insertions(+), 2 deletions(-) create mode 100644 tests/ComponentModel/Container.commonFactory.error.parent.phpt create mode 100644 tests/ComponentModel/Container.commonFactory.error.type.phpt create mode 100644 tests/ComponentModel/Container.factory.error.phpt diff --git a/src/ComponentModel/Container.php b/src/ComponentModel/Container.php index d4af706..706b65b 100644 --- a/src/ComponentModel/Container.php +++ b/src/ComponentModel/Container.php @@ -139,8 +139,13 @@ public function getComponent($name, $need = TRUE) if (!isset($this->components[$name])) { $component = $this->createComponent($name); - if ($component instanceof IComponent && $component->getParent() === NULL) { - $this->addComponent($component, $name); + if ($component) { + if (!$component instanceof IComponent) { + throw new Nette\UnexpectedValueException('Method createComponent() did not return Nette\ComponentModel\IComponent.'); + + } elseif (!isset($this->components[$name])) { + $this->addComponent($component, $name); + } } } diff --git a/tests/ComponentModel/Container.commonFactory.error.parent.phpt b/tests/ComponentModel/Container.commonFactory.error.parent.phpt new file mode 100644 index 0000000..86f125b --- /dev/null +++ b/tests/ComponentModel/Container.commonFactory.error.parent.phpt @@ -0,0 +1,30 @@ +getComponent('a'); + } + +} + + +$a = new TestClass; +$a->addComponent(new TestClass, 'a'); + +Assert::exception(function() use ($a) { + $a->getComponent('b'); +}, 'Nette\InvalidStateException', "Component 'a' already has a parent."); diff --git a/tests/ComponentModel/Container.commonFactory.error.type.phpt b/tests/ComponentModel/Container.commonFactory.error.type.phpt new file mode 100644 index 0000000..f349fdb --- /dev/null +++ b/tests/ComponentModel/Container.commonFactory.error.type.phpt @@ -0,0 +1,30 @@ +addComponent(new TestClass, 'a'); + +Assert::exception(function() use ($a) { + $a->getComponent('b'); +}, 'Nette\UnexpectedValueException', 'Method createComponent() did not return Nette\ComponentModel\IComponent.'); diff --git a/tests/ComponentModel/Container.factory.error.phpt b/tests/ComponentModel/Container.factory.error.phpt new file mode 100644 index 0000000..ede9079 --- /dev/null +++ b/tests/ComponentModel/Container.factory.error.phpt @@ -0,0 +1,27 @@ +getComponent('b'); +}, 'Nette\UnexpectedValueException', 'Method TestClass::createComponentB() did not return or create the desired component.'); From 969caabb2c03b4f6556adf1b438ffb4d76c0cf38 Mon Sep 17 00:00:00 2001 From: David Grudl Date: Wed, 4 Feb 2015 09:28:56 +0100 Subject: [PATCH 8/8] tests: removed usage of magic properties --- tests/ComponentModel/Container.clone.phpt | 2 +- .../ComponentModel/Container.commonFactory.addComponent.phpt | 2 +- .../Container.commonFactory.addComponentWithreturn.phpt | 2 +- tests/ComponentModel/Container.commonFactory.return.phpt | 2 +- tests/ComponentModel/Container.factory.addComponent.phpt | 4 ++-- .../Container.factory.addComponentWithreturn.phpt | 4 ++-- tests/ComponentModel/Container.factory.remove.phpt | 2 +- tests/ComponentModel/Container.factory.return.phpt | 4 ++-- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/ComponentModel/Container.clone.phpt b/tests/ComponentModel/Container.clone.phpt index 5f21994..e5e2648 100644 --- a/tests/ComponentModel/Container.clone.phpt +++ b/tests/ComponentModel/Container.clone.phpt @@ -48,7 +48,7 @@ class TestClass extends Container implements ArrayAccess Object::extensionMethod('Nette\\ComponentModel\\IContainer::export', function($thisObj) { - $res = array("({$thisObj->reflection->name})" => $thisObj->name); + $res = array("({$thisObj->getReflection()->getName()})" => $thisObj->getName()); if ($thisObj instanceof IContainer) { foreach ($thisObj->getComponents() as $name => $obj) { $res['children'][$name] = $obj->export(); diff --git a/tests/ComponentModel/Container.commonFactory.addComponent.phpt b/tests/ComponentModel/Container.commonFactory.addComponent.phpt index abe1c58..fc0c615 100644 --- a/tests/ComponentModel/Container.commonFactory.addComponent.phpt +++ b/tests/ComponentModel/Container.commonFactory.addComponent.phpt @@ -23,4 +23,4 @@ class TestClass extends Container $a = new TestClass; -Assert::same( 'b', $a->getComponent('b')->name ); +Assert::same( 'b', $a->getComponent('b')->getName() ); diff --git a/tests/ComponentModel/Container.commonFactory.addComponentWithreturn.phpt b/tests/ComponentModel/Container.commonFactory.addComponentWithreturn.phpt index 05d95f3..28bae33 100644 --- a/tests/ComponentModel/Container.commonFactory.addComponentWithreturn.phpt +++ b/tests/ComponentModel/Container.commonFactory.addComponentWithreturn.phpt @@ -24,4 +24,4 @@ class TestClass extends Container $a = new TestClass; -Assert::same( 'b', $a->getComponent('b')->name ); +Assert::same( 'b', $a->getComponent('b')->getName() ); diff --git a/tests/ComponentModel/Container.commonFactory.return.phpt b/tests/ComponentModel/Container.commonFactory.return.phpt index 4f4e3ef..3f6bd4a 100644 --- a/tests/ComponentModel/Container.commonFactory.return.phpt +++ b/tests/ComponentModel/Container.commonFactory.return.phpt @@ -23,4 +23,4 @@ class TestClass extends Container $a = new TestClass; -Assert::same( 'b', $a->getComponent('b')->name ); +Assert::same( 'b', $a->getComponent('b')->getName() ); diff --git a/tests/ComponentModel/Container.factory.addComponent.phpt b/tests/ComponentModel/Container.factory.addComponent.phpt index eda54c5..91499f6 100644 --- a/tests/ComponentModel/Container.factory.addComponent.phpt +++ b/tests/ComponentModel/Container.factory.addComponent.phpt @@ -23,9 +23,9 @@ class TestClass extends Container $a = new TestClass; -Assert::same( 'b', $a->getComponent('b')->name ); +Assert::same( 'b', $a->getComponent('b')->getName() ); Assert::exception(function() use ($a) { - $a->getComponent('B')->name; + $a->getComponent('B')->getName(); }, 'InvalidArgumentException', "Component with name 'B' does not exist."); diff --git a/tests/ComponentModel/Container.factory.addComponentWithreturn.phpt b/tests/ComponentModel/Container.factory.addComponentWithreturn.phpt index 5f79021..d45e38e 100644 --- a/tests/ComponentModel/Container.factory.addComponentWithreturn.phpt +++ b/tests/ComponentModel/Container.factory.addComponentWithreturn.phpt @@ -24,9 +24,9 @@ class TestClass extends Container $a = new TestClass; -Assert::same( 'b', $a->getComponent('b')->name ); +Assert::same( 'b', $a->getComponent('b')->getName() ); Assert::exception(function() use ($a) { - $a->getComponent('B')->name; + $a->getComponent('B')->getName(); }, 'InvalidArgumentException', "Component with name 'B' does not exist."); diff --git a/tests/ComponentModel/Container.factory.remove.phpt b/tests/ComponentModel/Container.factory.remove.phpt index 25f13e5..05e595f 100644 --- a/tests/ComponentModel/Container.factory.remove.phpt +++ b/tests/ComponentModel/Container.factory.remove.phpt @@ -25,4 +25,4 @@ class TestClass extends Container $a = new TestClass; -Assert::same( 'b', $a->getComponent('b')->name ); +Assert::same( 'b', $a->getComponent('b')->getName() ); diff --git a/tests/ComponentModel/Container.factory.return.phpt b/tests/ComponentModel/Container.factory.return.phpt index 2a3d925..569697e 100644 --- a/tests/ComponentModel/Container.factory.return.phpt +++ b/tests/ComponentModel/Container.factory.return.phpt @@ -25,12 +25,12 @@ class TestClass extends Container $a = new TestClass; $b = $a->getComponent('b'); -Assert::same( 'b', $b->name ); +Assert::same( 'b', $b->getName() ); Assert::count( 1, $a->getComponents() ); Assert::exception(function() use ($a) { - $a->getComponent('B')->name; + $a->getComponent('B')->getName(); }, 'InvalidArgumentException', "Component with name 'B' does not exist.");