diff --git a/.travis.yml b/.travis.yml index 605785e..d67b691 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 -p php + - php code-checker/src/code-checker.php 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.3 --no-interaction --prefer-source 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/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.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..e5e2648 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, @@ -50,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 26353c9..fc0c615 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, @@ -25,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 5a45809..28bae33 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, @@ -26,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.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.commonFactory.return.phpt b/tests/ComponentModel/Container.commonFactory.return.phpt index 9d1b5fb..3f6bd4a 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, @@ -25,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 06c0455..91499f6 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, @@ -25,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 a1e36cf..d45e38e 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, @@ -26,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.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.'); diff --git a/tests/ComponentModel/Container.factory.remove.phpt b/tests/ComponentModel/Container.factory.remove.phpt index db5bfbc..05e595f 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, @@ -27,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 39c41e2..569697e 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, @@ -27,14 +25,14 @@ class TestClass extends Container $a = new TestClass; $b = $a->getComponent('b'); -Assert::same( 'b', $b->name ); -Assert::same( 1, count($a->getComponents()) ); +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."); $a->removeComponent($b); -Assert::same( 0, count($a->getComponents()) ); +Assert::count( 0, $a->getComponents() ); 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, 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"