diff --git a/.gitignore b/.gitignore
index 22d0d82..3e52175 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,3 @@
+*.swp
+tags
vendor
diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index 6e0cddf..0000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,25 +0,0 @@
-pipeline {
- agent any
-
- stages {
- stage('PHP 7.1') {
- steps {
- sh '/usr/local/bin/composer-php7.1 install'
- sh 'php7.1 /usr/local/bin/phpunit-7'
- }
- }
- stage('PHP 7.3') {
- steps {
- sh '/usr/local/bin/composer-php7.3 update'
- sh 'php7.3 /usr/local/bin/phpunit-9'
- }
- }
- stage('PHP 7.4') {
- steps {
- sh '/usr/local/bin/composer-php7.4 update'
- sh 'php7.4 /usr/local/bin/phpunit-9'
- }
- }
- }
-}
-
diff --git a/LICENSE b/LICENSE
index 80445fb..b57a6c2 100644
--- a/LICENSE
+++ b/LICENSE
@@ -20,5 +20,4 @@ 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.
-
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 990a451..0000000
--- a/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-.PHONY: tests
-
-tests:
- phpunit
diff --git a/README.md b/README.md
index 48d866e..60a693c 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
csv-validator
=============
-[](https://ci.gitnet.fr/job/Gitnet/job/csv-validator/job/3/)
+
CSV validator library
@@ -45,7 +45,7 @@ $validator->addFieldConstraint(0, new Email());
$validator->addFieldConstraint(1, new Date());
// Validate the legend
-$validator->setExpectedHeaders(['foo', 'bar', 'bim']);
+$validator->setExpectedLegend(array('foo', 'bar', 'bim'));
// An line must contain 3 columns
$validator->addDataConstraint(new Callback(function($data, ExecutionContextInterface $context) {
@@ -55,10 +55,10 @@ $validator->addDataConstraint(new Callback(function($data, ExecutionContextInter
}));
// Initialisation of the parser
-$parser = new CsvParser();
-$parser->setHasHeaders(true);
+$parser = new CsvParser(__DIR__.'/tests/fixtures/example.csv');
+$parser->setHasLegend(true);
-$validator->validate($parser->parseFile(__DIR__.'/tests/fixtures/example.csv'));
+$validator->validate($parser);
if ($validator->isValid() === false) {
foreach ($validator->getErrors() as $error) {
@@ -80,39 +80,6 @@ EOF;
}
```
-Run `example.php` and see results:
-
-```
-
- - Line: 1
- - Column:
- -
-
Invalid legend.
-
-
-
-
-
-```
-
Contributors
------------
diff --git a/composer.json b/composer.json
index dd0a7c3..0233417 100644
--- a/composer.json
+++ b/composer.json
@@ -15,8 +15,8 @@
},
"minimum-stability": "dev",
"require": {
- "php": "^7.1.3",
- "symfony/validator": "^4",
- "deblan/csv": "v2.0.*|v3.*"
+ "php": ">=5.6.0",
+ "symfony/validator": "2.*",
+ "deblan/csv": "v1.2"
}
}
diff --git a/example.php b/example.php
index e764726..48250f6 100644
--- a/example.php
+++ b/example.php
@@ -2,6 +2,7 @@
use Deblan\Csv\CsvParser;
use Deblan\CsvValidator\Validator;
+use Symfony\Component\Validator\Validation;
use Symfony\Component\Validator\Constraints\Email;
use Symfony\Component\Validator\Constraints\Date;
use Symfony\Component\Validator\Constraints\Callback;
@@ -19,27 +20,27 @@ $validator->addFieldConstraint(0, new Email());
$validator->addFieldConstraint(1, new Date());
// Validate the legend
-$validator->setExpectedHeaders(['foo', 'bar', 'bim']);
+$validator->setExpectedLegend(array('foo', 'bar', 'bim'));
// An line must contain 3 columns
-$validator->addDataConstraint(new Callback(function ($data, ExecutionContextInterface $context) {
+$validator->addDataConstraint(new Callback(function($data, ExecutionContextInterface $context) {
if (count($data) !== 6) { // 6 because of the legend (3 fields * 2)
$context->addViolation('The line must contain 3 columns');
}
}));
// Initialisation of the parser
-$parser = new CsvParser();
-$parser->setHasHeaders(true);
+$parser = new CsvParser(__DIR__.'/tests/fixtures/example.csv');
+$parser->setHasLegend(true);
-$validator->validate($parser->parseFile(__DIR__.'/tests/fixtures/example.csv'));
+$validator->validate($parser);
if ($validator->isValid() === false) {
foreach ($validator->getErrors() as $error) {
- $line = $error->getLine();
+ $line = $error->getLine();
$column = $error->getColumn();
$message = $error->getViolation()->getMessage();
-
+
echo <<
Line: $line
diff --git a/.php-censor.yml b/phpci.yml
similarity index 100%
rename from .php-censor.yml
rename to phpci.yml
diff --git a/phpunit.xml b/phpunit.xml
index eb8c372..eabb967 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -7,6 +7,7 @@
convertWarningsToExceptions = "true"
processIsolation = "false"
stopOnFailure = "false"
+ syntaxCheck = "false"
bootstrap = "vendor/autoload.php" >
diff --git a/src/Deblan/CsvValidator/Validator.php b/src/Deblan/CsvValidator/Validator.php
index b590c9f..ee22932 100644
--- a/src/Deblan/CsvValidator/Validator.php
+++ b/src/Deblan/CsvValidator/Validator.php
@@ -49,7 +49,7 @@ class Validator
/**
* @var array
*/
- protected $expectedHeaders = [];
+ protected $expectedLegend = [];
/**
* Constructor.
@@ -105,9 +105,9 @@ class Validator
*
* @return Validator
*/
- public function setExpectedHeaders(array $legend)
+ public function setExpectedLegend(array $legend)
{
- $this->expectedHeaders = $legend;
+ $this->expectedLegend = $legend;
return $this;
}
@@ -121,13 +121,13 @@ class Validator
{
if ($this->parser !== $parser) {
$this->parser = $parser;
+ $this->parser->parse();
$this->errors = [];
- $this->hasValidate = false;
} elseif ($this->hasValidate) {
return;
}
- $this->validateHeaders();
+ $this->validateLegend();
$this->validateDatas();
$this->validateFields();
@@ -137,17 +137,17 @@ class Validator
/**
* Validates the legend.
*/
- protected function validateHeaders()
+ protected function validateLegend()
{
- if (!$this->parser->getHasHeaders()) {
+ if (!$this->parser->getHasLegend()) {
return;
}
- if (empty($this->expectedHeaders)) {
+ if (empty($this->expectedLegend)) {
return;
}
- if ($this->parser->getHeaders() !== $this->expectedHeaders) {
+ if ($this->parser->getLegend() !== $this->expectedLegend) {
$this->mergeErrorMessage('Invalid legend.', 1);
}
}
@@ -294,7 +294,7 @@ class Validator
*/
protected function getTrueLine($line)
{
- if ($this->parser->getHasHeaders()) {
+ if ($this->parser->getHasLegend()) {
++$line;
}
diff --git a/tests/ExampleTest.php b/tests/ExampleTest.php
deleted file mode 100644
index 0be5792..0000000
--- a/tests/ExampleTest.php
+++ /dev/null
@@ -1,46 +0,0 @@
-
- */
-class ExampleTest extends TestCase
-{
- public function testExemple()
- {
- $content = shell_exec('php -f '.__DIR__.'/../example.php');
-
- $this->assertEquals('
- - Line: 1
- - Column:
- -
-
Invalid legend.
-
-
-
-
-
-', $content);
- }
-}
diff --git a/tests/ValidatorTest.php b/tests/ValidatorTest.php
index 13d6462..4c8c617 100644
--- a/tests/ValidatorTest.php
+++ b/tests/ValidatorTest.php
@@ -1,36 +1,35 @@
generateParser('example.csv');
$validator = $this->generateValidator($parser);
- $this->expectException('\RuntimeException');
+ $this->setExpectedException('\RuntimeException');
$validator->isValid();
}
- public function testExpectedHeaders()
+ public function testExpectedLegend()
{
$parser = $this->generateParser('example.csv');
- $parser->setHasHeaders(true);
+ $parser->setHasLegend(true);
$validator = $this->generateValidator();
- $validator->setExpectedHeaders(['foo', 'bar', 'boo']);
- $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
+ $validator->setExpectedLegend(['foo', 'bar', 'boo']);
+ $validator->validate($parser);
$this->assertEquals(true, $validator->isValid());
$this->assertEquals(0, count($validator->getErrors()));
$validator = $this->generateValidator();
- $validator->setExpectedHeaders(['bad', 'legend']);
- $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
+ $validator->setExpectedLegend(['bad', 'legend']);
+ $validator->validate($parser);
$this->assertEquals(false, $validator->isValid());
$this->assertEquals(1, count($validator->getErrors()));
}
@@ -39,7 +38,7 @@ class ValidatorTest extends TestCase
{
$parser = $this->generateParser('example.csv');
$validator = $this->generateValidator();
- $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
+ $validator->validate($parser);
$this->assertEquals(true, $validator->isValid());
}
@@ -48,14 +47,14 @@ class ValidatorTest extends TestCase
$parser = $this->generateParser('example.csv');
$validator = $this->generateValidator();
$validator->addFieldConstraint(0, new NotBlank());
- $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
+ $validator->validate($parser);
$this->assertEquals(true, $validator->isValid());
$this->assertEquals(0, count($validator->getErrors()));
$parser = $this->generateParser('example.csv');
$validator = $this->generateValidator();
$validator->addFieldConstraint(1, new NotBlank());
- $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
+ $validator->validate($parser);
$this->assertEquals(true, $validator->isValid());
$this->assertEquals(0, count($validator->getErrors()));
@@ -63,24 +62,24 @@ class ValidatorTest extends TestCase
$validator = $this->generateValidator();
$validator->addFieldConstraint(0, new NotBlank());
$validator->addFieldConstraint(1, new NotBlank());
- $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
+ $validator->validate($parser);
$this->assertEquals(true, $validator->isValid());
$this->assertEquals(0, count($validator->getErrors()));
}
public function testFieldContraintsKo()
{
- $parser = $this->generateParser();
+ $parser = $this->generateParser('example.csv');
$validator = $this->generateValidator();
$validator->addFieldConstraint(0, new Email());
- $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
+ $validator->validate($parser);
$this->assertEquals(false, $validator->isValid());
$this->assertEquals(2, count($validator->getErrors()));
- $parser = $this->generateParser();
+ $parser = $this->generateParser('example.csv');
$validator = $this->generateValidator();
$validator->addFieldConstraint(1, new Email());
- $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
+ $validator->validate($parser);
$this->assertEquals(false, $validator->isValid());
$this->assertEquals(5, count($validator->getErrors()));
@@ -88,14 +87,14 @@ class ValidatorTest extends TestCase
$validator = $this->generateValidator();
$validator->addFieldConstraint(0, new Email());
$validator->addFieldConstraint(1, new Email());
- $validator->validate($parser->parseFile(__DIR__.'/fixtures/example.csv'));
+ $validator->validate($parser);
$this->assertEquals(false, $validator->isValid());
$this->assertEquals(7, count($validator->getErrors()));
}
- protected function generateParser()
+ protected function generateParser($file)
{
- return new CsvParser();
+ return new CsvParser(__DIR__.'/fixtures/'.$file);
}
protected function generateValidator()
diff --git a/tests/ViolationTest.php b/tests/ViolationTest.php
index c798ab4..1fd0484 100644
--- a/tests/ViolationTest.php
+++ b/tests/ViolationTest.php
@@ -1,10 +1,9 @@