Compare commits

...

5 Commits

Author SHA1 Message Date
Michele Locati 92fd7ea285 Fix PHP 7.4 support for 1.x (#206) 2019-12-30 09:17:06 +01:00
Graham Campbell 0d6268fde5 [1.2] PHP 7.4 Support (#222)
* Fixes

* Backport PHP 7.4 support from 2.x

Co-Authored-By: mlocati <michele@locati.it>

* Added php-coveralls

Co-authored-by: Michele Locati <michele@locati.it>
2019-12-30 09:16:03 +01:00
Michele Locati e7dacfc97f Fix TravisCI for 1.x (#207)
* Fix TravisCI for 1.x

* Use --ignore-platform-reqs for PHP Nightly

* Move code coverage job to 1st position

So that Scrutinizer receives data as soon as possible
2019-08-08 08:36:44 +02:00
Michele Locati 758a77525b [1.x] Fix result of isValid when DNS lookup fails and strict is false (#172)
* Fix result of isValid when DNS lookup fails and strict is false

* Fix TravisCI for PHP 5.3

* Fix tests (isValid now returns false in case of errors in MX DNS lookups)

* Cache composer files

* Run TravisCI tests for PHP 7.1 and 7.2

* Use the PHPUnit installed by composer, not the system one

* Cache only composer packages, not their metadata
2018-09-25 22:59:41 +02:00
Sebastiaan Provost 5642614492 Backporting the changes made in #139 (#140)
* Backporting the changes made in https://github.com/egulias/EmailValidator/pull/139 so this functionality is also accessible in the 1.2.x releases.
This fix allows for more compliance with the DNS RFC. Explanation here: https://github.com/egulias/EmailValidator/pull/139/commits/08bac068c26edd210daa259a2819d7dfd7438091
2017-02-03 23:48:59 +01:00
11 changed files with 73 additions and 1122 deletions
+8
View File
@@ -0,0 +1,8 @@
filter:
excluded_paths:
- 'documentation/*'
- 'tests/*'
tools:
external_code_coverage:
runs: 1
+24 -22
View File
@@ -1,35 +1,37 @@
sudo: false
language: php language: php
php:
- 5.3
- 5.4
- 5.5
- 5.6
- 7.0
- hhvm
env:
global:
- deps=high
matrix: matrix:
fast_finish: true
include: include:
- php: 5.3 - php: 5.3
dist: precise
env: deps=low env: deps=low
- php: 5.3
dist: precise
- php: 5.4 - php: 5.4
env: deps=no dist: trusty
- php: 5.5 - php: 5.5
env: deps=no dist: trusty
- php: 5.6
dist: xenial
- php: 7.0
dist: xenial
- php: 7.1
dist: bionic
- php: 7.2
dist: bionic
- php: 7.3
dist: bionic
- php: 7.4
dist: bionic
install: install:
- if [ "$deps" = "no" ]; then composer install; fi - if [ "$deps" = "low" ]; then composer update --prefer-lowest; else composer install; fi
- if [ "$deps" = "low" ]; then composer update --prefer-lowest; fi
- if [ "$deps" = "high" ]; then composer update; fi before_script:
- mkdir -p build/logs
script: script:
- mkdir -p build/logs - vendor/bin/phpunit --coverage-clover build/logs/clover.xml
- phpunit --coverage-clover build/logs/clover.xml
after_script:
- php vendor/bin/coveralls
+8 -10
View File
@@ -2,27 +2,25 @@
"name": "egulias/email-validator", "name": "egulias/email-validator",
"description": "A library for validating emails", "description": "A library for validating emails",
"homepage": "https://github.com/egulias/EmailValidator", "homepage": "https://github.com/egulias/EmailValidator",
"type": "Library",
"keywords": ["email", "validation", "validator", "emailvalidation", "emailvalidator"], "keywords": ["email", "validation", "validator", "emailvalidation", "emailvalidator"],
"license": "MIT", "license": "MIT",
"authors": [ "authors": [
{"name": "Eduardo Gulias Davis"} {"name": "Eduardo Gulias Davis"}
], ],
"extra": { "require": {
"branch-alias": { "php": ">=5.3.3",
"dev-master": "2.0.x-dev"
}
},
"require": {
"php": ">= 5.3.3",
"doctrine/lexer": "^1.0.1" "doctrine/lexer": "^1.0.1"
}, },
"require-dev" : { "require-dev": {
"phpunit/phpunit": "^4.8.24" "satooshi/php-coveralls": "^1.0.1",
"phpunit/phpunit": "^4.8.36|^7.5.15"
}, },
"autoload": { "autoload": {
"psr-0": { "psr-0": {
"Egulias\\": "src/" "Egulias\\": "src/"
} }
},
"scripts": {
"test": "phpunit"
} }
} }
Generated
-1078
View File
File diff suppressed because it is too large Load Diff
-1
View File
@@ -8,7 +8,6 @@
convertWarningsToExceptions="true" convertWarningsToExceptions="true"
processIsolation="false" processIsolation="false"
stopOnFailure="false" stopOnFailure="false"
syntaxCheck="false"
bootstrap="tests/bootstrap.php" bootstrap="tests/bootstrap.php"
> >
<testsuites> <testsuites>
+15 -1
View File
@@ -77,10 +77,22 @@ class EmailLexer extends AbstractLexer
protected $previous; protected $previous;
private static $nullToken = array(
'value' => '',
'type' => null,
'position' => 0,
);
public function __construct()
{
$this->previous = $this->token = self::$nullToken;
}
public function reset() public function reset()
{ {
$this->hasInvalidTokens = false; $this->hasInvalidTokens = false;
parent::reset(); parent::reset();
$this->previous = $this->token = self::$nullToken;
} }
public function hasInvalidTokens() public function hasInvalidTokens()
@@ -122,8 +134,10 @@ class EmailLexer extends AbstractLexer
public function moveNext() public function moveNext()
{ {
$this->previous = $this->token; $this->previous = $this->token;
$hasNext = parent::moveNext();
$this->token = $this->token ?: self::$nullToken;
return parent::moveNext(); return $hasNext;
} }
/** /**
@@ -133,7 +133,7 @@ class EmailValidator implements EmailValidatorInterface
return false; return false;
} }
return ($strict ? (!$this->hasWarnings() && !$dnsProblemExists) : true); return !($dnsProblemExists || $strict && $this->hasWarnings());
} }
/** /**
@@ -184,7 +184,10 @@ class EmailValidator implements EmailValidatorInterface
*/ */
protected function checkDNS() protected function checkDNS()
{ {
$mxRecordExists = checkdnsrr(trim($this->parser->getParsedDomainPart()), 'MX'); $host = $this->parser->getParsedDomainPart();
$host = rtrim($host, '.') . '.';
$mxRecordExists = checkdnsrr($host, 'MX');
if (!$mxRecordExists) { if (!$mxRecordExists) {
$this->warnings[] = self::DNSWARN_NO_RECORD; $this->warnings[] = self::DNSWARN_NO_RECORD;
@@ -141,7 +141,7 @@ class DomainPart extends Parser
$domain .= $this->lexer->token['value']; $domain .= $this->lexer->token['value'];
$this->lexer->moveNext(); $this->lexer->moveNext();
} while ($this->lexer->token); } while (null !== $this->lexer->token['type']);
return $domain; return $domain;
} }
@@ -13,9 +13,12 @@ class LocalPart extends Parser
$closingQuote = false; $closingQuote = false;
$openedParenthesis = 0; $openedParenthesis = 0;
while ($this->lexer->token['type'] !== EmailLexer::S_AT && $this->lexer->token) { while ($this->lexer->token['type'] !== EmailLexer::S_AT && null !== $this->lexer->token['type']) {
if ($this->lexer->token['type'] === EmailLexer::S_DOT && !$this->lexer->getPrevious()) { if ($this->lexer->token['type'] === EmailLexer::S_DOT) {
throw new \InvalidArgumentException('ERR_DOT_START'); $previous = $this->lexer->getPrevious();
if (null === $previous['type']) {
throw new \InvalidArgumentException('ERR_DOT_START');
}
} }
$closingQuote = $this->checkDQUOTE($closingQuote); $closingQuote = $this->checkDQUOTE($closingQuote);
@@ -78,7 +81,7 @@ class LocalPart extends Parser
$this->lexer->moveNext(); $this->lexer->moveNext();
while ($this->lexer->token['type'] !== EmailLexer::S_DQUOTE && $this->lexer->token) { while ($this->lexer->token['type'] !== EmailLexer::S_DQUOTE && null !== $this->lexer->token['type']) {
$parseAgain = false; $parseAgain = false;
if (isset($special[$this->lexer->token['type']]) && $setSpecialsWarning) { if (isset($special[$this->lexer->token['type']]) && $setSpecialsWarning) {
$this->warnings[] = EmailValidator::CFWS_FWS; $this->warnings[] = EmailValidator::CFWS_FWS;
@@ -3,8 +3,9 @@
namespace Egulias\EmailValidator\Tests; namespace Egulias\EmailValidator\Tests;
use Egulias\EmailValidator\EmailLexer; use Egulias\EmailValidator\EmailLexer;
use PHPUnit\Framework\TestCase;
class EmailLexerTests extends \PHPUnit_Framework_TestCase class EmailLexerTests extends TestCase
{ {
public function testLexerExtendsLib() public function testLexerExtendsLib()
@@ -3,8 +3,9 @@
namespace Egulias\Tests\EmailValidator; namespace Egulias\Tests\EmailValidator;
use Egulias\EmailValidator\EmailValidator; use Egulias\EmailValidator\EmailValidator;
use PHPUnit\Framework\TestCase;
class EmailValidatorTest extends \PHPUnit_Framework_TestCase class EmailValidatorTest extends TestCase
{ {
protected $validator; protected $validator;
@@ -180,7 +181,7 @@ class EmailValidatorTest extends \PHPUnit_Framework_TestCase
*/ */
public function testValidEmailsWithWarningsCheck($warnings, $email) public function testValidEmailsWithWarningsCheck($warnings, $email)
{ {
$this->assertTrue($this->validator->isValid($email, true)); $this->assertFalse($this->validator->isValid($email, true));
$this->assertEquals($warnings, $this->validator->getWarnings()); $this->assertEquals($warnings, $this->validator->getWarnings());
} }