Permalink
Browse files

- Merge [4890:4891] and [5016].

  • Loading branch information...
1 parent a9bcad7 commit d19de250fbb5633657d20e60bd0e02d44ff9fae0 @sebastianbergmann committed Aug 10, 2009
Showing with 2,402 additions and 29 deletions.
  1. +4 −4 PHPUnit/Extensions/Database/DataSet/CsvDataSet.php
  2. +69 −0 PHPUnit/Extensions/Database/DataSet/ISpec.php
  3. +94 −0 PHPUnit/Extensions/Database/DataSet/Persistors/Factory.php
  4. +2 −2 PHPUnit/Extensions/Database/DataSet/Persistors/Yaml.php
  5. +132 −0 PHPUnit/Extensions/Database/DataSet/Specs/Csv.php
  6. +120 −0 PHPUnit/Extensions/Database/DataSet/Specs/DbQuery.php
  7. +118 −0 PHPUnit/Extensions/Database/DataSet/Specs/DbTable.php
  8. +102 −0 PHPUnit/Extensions/Database/DataSet/Specs/Factory.php
  9. +83 −0 PHPUnit/Extensions/Database/DataSet/Specs/FlatXml.php
  10. +70 −0 PHPUnit/Extensions/Database/DataSet/Specs/IFactory.php
  11. +83 −0 PHPUnit/Extensions/Database/DataSet/Specs/Xml.php
  12. +83 −0 PHPUnit/Extensions/Database/DataSet/Specs/Yaml.php
  13. +1 −1 PHPUnit/Extensions/Database/DataSet/YamlDataSet.php
  14. +69 −0 PHPUnit/Extensions/Database/IDatabaseListConsumer.php
  15. +93 −0 PHPUnit/Extensions/Database/UI/Command.php
  16. +104 −0 PHPUnit/Extensions/Database/UI/Context.php
  17. +78 −0 PHPUnit/Extensions/Database/UI/IMedium.php
  18. +76 −0 PHPUnit/Extensions/Database/UI/IMediumPrinter.php
  19. +70 −0 PHPUnit/Extensions/Database/UI/IMode.php
  20. +77 −0 PHPUnit/Extensions/Database/UI/IModeFactory.php
  21. +100 −0 PHPUnit/Extensions/Database/UI/InvalidModeException.php
  22. +144 −0 PHPUnit/Extensions/Database/UI/Mediums/Text.php
  23. +137 −0 PHPUnit/Extensions/Database/UI/ModeFactory.php
  24. +129 −0 PHPUnit/Extensions/Database/UI/Modes/ExportDataSet.php
  25. +157 −0 PHPUnit/Extensions/Database/UI/Modes/ExportDataSet/Arguments.php
  26. +4 −4 PHPUnit/Extensions/TicketListener.php
  27. +3 −3 PHPUnit/Extensions/TicketListener/Trac.php
  28. +1 −1 PHPUnit/Framework/TestCase.php
  29. +2 −2 PHPUnit/Tests/Extensions/Database/DataSet/CsvDataSetTest.php
  30. +2 −2 PHPUnit/Tests/Extensions/Database/DataSet/YamlDataSetTest.php
  31. +3 −3 PHPUnit/Tests/Util/ConfigurationTest.php
  32. +3 −3 PHPUnit/Tests/_files/Singleton.php
  33. +1 −1 PHPUnit/Util/Configuration.php
  34. +1 −1 PHPUnit/Util/GlobalState.php
  35. +1 −1 PHPUnit/Util/InvalidArgumentHelper.php
  36. +40 −0 dbunit.bat
  37. +65 −0 dbunit.php
  38. +80 −0 package.xml
  39. +1 −1 phpunit.php
@@ -55,7 +55,7 @@
/**
* Creates CsvDataSets.
- *
+ *
* You can incrementally add CSV files as tables to your datasets
*
* @category Testing
@@ -76,7 +76,7 @@ class PHPUnit_Extensions_Database_DataSet_CsvDataSet extends PHPUnit_Extensions_
/**
* Creates a new CSV dataset
- *
+ *
* You can pass in the parameters for how csv files will be read.
*
* @param string $delimiter
@@ -92,8 +92,8 @@ public function __construct($delimiter = ',', $enclosure = '"', $escape = '"')
/**
* Adds a table to the dataset
- *
- * The table will be given the passed name. $csvFile should be a path to
+ *
+ * The table will be given the passed name. $csvFile should be a path to
* a valid csv file (based on the arguments passed to the constructor.)
*
* @param string $tableName
@@ -0,0 +1,69 @@
+<?php
+/**
+ * PHPUnit
+ *
+ * Copyright (c) 2002-2009, Sebastian Bergmann <sb@sebastian-bergmann.de>.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Sebastian Bergmann nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package PHPUnit
+ * @author Mike Lively <m@digitalsandwich.com>
+ * @copyright 2002-2009 Sebastian Bergmann <sb@sebastian-bergmann.de>
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @version SVN: $Id$
+ * @link http://www.phpunit.de/
+ * @since File available since Release 3.4.0CSV
+ */
+
+/**
+ * Provides an interface for creating data sets from data set spec strings.
+ *
+ * @category Testing
+ * @package PHPUnit
+ * @author Mike Lively <m@digitalsandwich.com>
+ * @copyright 2009 Mike Lively <m@digitalsandwich.com>
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @version Release: @package_version@
+ * @link http://www.phpunit.de//**
+ * @since Class available since Release 3.4.0
+ */
+interface PHPUnit_Extensions_Database_DataSet_ISpec
+{
+ /**
+ * Creates a data set from a data set spec string.
+ *
+ * @param string $dataSetSpec
+ * @return PHPUnit_Extensions_Database_DataSet_IDataSet
+ */
+ public function getDataSet($dataSetSpec);
+}
+?>
@@ -0,0 +1,94 @@
+<?php
+/**
+ * PHPUnit
+ *
+ * Copyright (c) 2002-2009, Sebastian Bergmann <sb@sebastian-bergmann.de>.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Sebastian Bergmann nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package PHPUnit
+ * @author Mike Lively <m@digitalsandwich.com>
+ * @copyright 2002-2009 Sebastian Bergmann <sb@sebastian-bergmann.de>
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @version SVN: $Id$
+ * @link http://www.phpunit.de/
+ * @since File available since Release 3.4.0
+ */
+
+/**
+ * Creates the appropriate Persistor based on a given type and spec.
+ *
+ * @category Testing
+ * @package PHPUnit
+ * @author Mike Lively <m@digitalsandwich.com>
+ * @copyright 2009 Mike Lively <m@digitalsandwich.com>
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @version Release: @package_version@
+ * @link http://www.phpunit.de//**
+ * @since Class available since Release 3.4.0
+ */
+class PHPUnit_Extensions_Database_DataSet_Persistors_Factory
+{
+ /**
+ * Returns the persistor.
+ *
+ * @param string $type
+ * @param string $spec
+ * @return PHPUnit_Extensions_Database_DataSet_IPersistable
+ */
+ public function getPersistorBySpec($type, $spec)
+ {
+ switch (strtolower($type)) {
+ case 'xml':
+ require_once ('PHPUnit/Extensions/Database/DataSet/Persistors/Xml.php');
+ $xmlPersistor = new PHPUnit_Extensions_Database_DataSet_Persistors_Xml();
+ $xmlPersistor->setFileName($spec);
+ return $xmlPersistor;
+
+ case 'flatxml':
+ require_once ('PHPUnit/Extensions/Database/DataSet/Persistors/FlatXml.php');
+ $flatXmlPersistor = new PHPUnit_Extensions_Database_DataSet_Persistors_FlatXml();
+ $flatXmlPersistor->setFileName($spec);
+ return $flatXmlPersistor;
+
+ case 'yaml':
+ require_once ('PHPUnit/Extensions/Database/DataSet/Persistors/Yaml.php');
+ $yamlPersistor = new PHPUnit_Extensions_Database_DataSet_Persistors_Yaml();
+ $yamlPersistor->setFileName($spec);
+ return $yamlPersistor;
+
+ default:
+ throw new Exception("I don't know what you want from me. PERSISTOR");
+ }
+ }
+}
+?>
@@ -39,7 +39,7 @@
* @author Mike Lively <m@digitalsandwich.com>
* @copyright 2002-2009 Sebastian Bergmann <sb@sebastian-bergmann.de>
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
- * @version SVN: $Id: Abstract.php 4402 2008-12-31 09:25:57Z sb $
+ * @version SVN: $Id$
* @link http://www.phpunit.de/
* @since File available since Release 3.2.0
*/
@@ -102,7 +102,7 @@ public function write(PHPUnit_Extensions_Database_DataSet_IDataSet $dataset)
}
}
- file_put_contents($this->filename, $yamlString);
+ file_put_contents($this->filename, sfYaml::dump($phpArr, 3));
}
}
@@ -0,0 +1,132 @@
+<?php
+/**
+ * PHPUnit
+ *
+ * Copyright (c) 2002-2009, Sebastian Bergmann <sb@sebastian-bergmann.de>.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * * Neither the name of Sebastian Bergmann nor the names of his
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @category Testing
+ * @package PHPUnit
+ * @author Mike Lively <m@digitalsandwich.com>
+ * @copyright 2002-2009 Sebastian Bergmann <sb@sebastian-bergmann.de>
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @version SVN: $Id$
+ * @link http://www.phpunit.de/
+ * @since File available since Release 3.4.0
+ */
+
+require_once ('PHPUnit/Extensions/Database/DataSet/ISpec.php');
+require_once ('PHPUnit/Extensions/Database/DataSet/CsvDataSet.php');
+
+/**
+ * Creates CsvDataSets based off of a spec string.
+ *
+ * The format of the spec string is as follows:
+ *
+ * <csv options>|table1:filename.csv,table2:filename2.csv
+ *
+ * The first portion of the spec including the pipe symbol '|' is optional.
+ * If the pipe option is included than it may be preceded by up to four
+ * characters specifying values for the following arguments in order:
+ * delimiter (defaults to ',',) enclosure (defaults to '"',) escape (defaults to '"',).
+ *
+ * Any additional characters in the csv options will be discarded.
+ *
+ * @category Testing
+ * @package PHPUnit
+ * @author Mike Lively <m@digitalsandwich.com>
+ * @copyright 2009 Mike Lively <m@digitalsandwich.com>
+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License
+ * @version Release: @package_version@
+ * @link http://www.phpunit.de/
+ * @since Class available since Release 3.4.0
+ */
+class PHPUnit_Extensions_Database_DataSet_Specs_Csv implements PHPUnit_Extensions_Database_DataSet_ISpec
+{
+
+ /**
+ * Creates CSV Data Set from a data set spec.
+ *
+ * @param string $dataSetSpec
+ * @return PHPUnit_Extensions_Database_DataSet_CsvDataSet
+ */
+ public function getDataSet($dataSetSpec)
+ {
+ $csvDataSetArgs = $this->getCsvOptions($dataSetSpec);
+ $csvDataSetRfl = new ReflectionClass('PHPUnit_Extensions_Database_DataSet_CsvDataSet');
+ $csvDataSet = $csvDataSetRfl->newInstanceArgs($csvDataSetArgs);
+
+ foreach ($this->getTableFileMap($dataSetSpec) as $tableName => $file) {
+ $csvDataSet->addTable($tableName, $file);
+ }
+ return $csvDataSet;
+ }
+
+ /**
+ * Returns CSV options.
+ *
+ * Returns an array containing the options that will be passed to the
+ * PHPUnit_Extensions_Database_DataSet_CsvDataSet constructor. The options
+ * are determined by the given $dataSetSpec.
+ *
+ * @param string $dataSetSpec
+ * @return array
+ */
+ protected function getCsvOptions($dataSetSpec)
+ {
+ list($csvOptStr, ) = explode('|', $dataSetSpec, 2);
+ return str_split($csvOptStr);
+ }
+
+ /**
+ * Returns map of tables to files.
+ *
+ * Returns an associative array containing a mapping of tables (the key)
+ * to files (the values.) The tables and files are determined by the given
+ * $dataSetSpec
+ *
+ * @param string $dataSetSpec
+ * @return array
+ */
+ protected function getTableFileMap($dataSetSpec)
+ {
+ $tables = array();
+ foreach (explode(',', $dataSetSpec) as $csvfile) {
+ list($tableName, $file) = explode(':', $csvfile, 2);
+ $tables[$tableName] = $file;
+ }
+
+ return $tables;
+ }
+}
+
+?>
Oops, something went wrong.

0 comments on commit d19de25

Please sign in to comment.