mirror of
https://github.com/egulias/EmailValidator.git
synced 2026-09-01 04:59:18 +00:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b531a23117 | |||
| 5f35e41eba |
@@ -1,3 +0,0 @@
|
|||||||
service_name: travis-ci
|
|
||||||
src_dir: .
|
|
||||||
coverage_clover: build/logs/clover*.xml
|
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
name: static analysis
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- '*.x'
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
psalm:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: true
|
||||||
|
|
||||||
|
name: Psalm
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: 8.2
|
||||||
|
ini-values: error_reporting=E_ALL
|
||||||
|
tools: composer:v2
|
||||||
|
coverage: none
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
uses: ramsey/composer-install@v2
|
||||||
|
|
||||||
|
- name: Execute Psalm
|
||||||
|
run: vendor/bin/psalm
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
name: tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- '*.x'
|
||||||
|
pull_request:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 0 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tests:
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: true
|
||||||
|
matrix:
|
||||||
|
php: [7.2, 7.3, 7.4, '8.0', 8.1, 8.2]
|
||||||
|
|
||||||
|
name: PHP ${{ matrix.php }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Setup PHP
|
||||||
|
uses: shivammathur/setup-php@v2
|
||||||
|
with:
|
||||||
|
php-version: ${{ matrix.php }}
|
||||||
|
ini-values: error_reporting=E_ALL
|
||||||
|
tools: composer:v2
|
||||||
|
coverage: xdebug
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
uses: ramsey/composer-install@v2
|
||||||
|
|
||||||
|
- name: Setup logs directory
|
||||||
|
run: mkdir -p build/logs
|
||||||
|
|
||||||
|
- name: Execute tests
|
||||||
|
run: vendor/bin/phpunit --coverage-clover build/logs/clover.xml --exclude-group flaky
|
||||||
|
|
||||||
|
- name: Store artifacts
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: logs
|
||||||
|
path: build/logs
|
||||||
+4
-2
@@ -1,6 +1,8 @@
|
|||||||
phpunit.result.cache
|
build/
|
||||||
.idea
|
|
||||||
report/
|
report/
|
||||||
vendor/
|
vendor/
|
||||||
|
composer.lock
|
||||||
|
phpunit.result.cache
|
||||||
.phpunit*
|
.phpunit*
|
||||||
|
.idea
|
||||||
.vscode
|
.vscode
|
||||||
|
|||||||
-32
@@ -1,32 +0,0 @@
|
|||||||
language: php
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- php: 7.4
|
|
||||||
dist: bionic
|
|
||||||
env:
|
|
||||||
- psalm=yes
|
|
||||||
- php: 8.0
|
|
||||||
env:
|
|
||||||
- psalm=yes
|
|
||||||
dist: bionic
|
|
||||||
#ppc64le support code
|
|
||||||
- php: 7.4
|
|
||||||
arch: ppc64le
|
|
||||||
env:
|
|
||||||
- psalm=yes
|
|
||||||
dist: bionic
|
|
||||||
|
|
||||||
install:
|
|
||||||
- if [ "$deps" = "low" ]; then composer update --prefer-lowest; else composer install; fi
|
|
||||||
- if [ "$psalm" = "yes" ]; then composer require --dev vimeo/psalm; fi
|
|
||||||
|
|
||||||
before_script:
|
|
||||||
- mkdir -p build/logs
|
|
||||||
|
|
||||||
script:
|
|
||||||
- vendor/bin/phpunit --coverage-clover build/logs/clover.xml --exclude-group flaky
|
|
||||||
- if [ "$psalm" = "yes" ]; then vendor/bin/psalm; fi
|
|
||||||
|
|
||||||
after_script:
|
|
||||||
- php vendor/bin/coveralls
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# EmailValidator
|
# EmailValidator
|
||||||
|
|
||||||
[](https://app.travis-ci.com/github/egulias/EmailValidator)
|
[](https://github.com/egulias/EmailValidator/actions)
|
||||||
[](https://scrutinizer-ci.com/g/egulias/EmailValidator/?branch=3.x)
|
[](https://scrutinizer-ci.com/g/egulias/EmailValidator/?branch=3.x)
|
||||||
[](https://scrutinizer-ci.com/g/egulias/EmailValidator/?branch=3.x)
|
[](https://scrutinizer-ci.com/g/egulias/EmailValidator/?branch=3.x)
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -14,11 +14,10 @@
|
|||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=7.2",
|
"php": ">=7.2",
|
||||||
"doctrine/lexer": "^1.2",
|
"doctrine/lexer": "^1.2|^2",
|
||||||
"symfony/polyfill-intl-idn": "^1.15"
|
"symfony/polyfill-intl-idn": "^1.15"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"php-coveralls/php-coveralls": "^2.2",
|
|
||||||
"phpunit/phpunit": "^8.5.8|^9.3.3",
|
"phpunit/phpunit": "^8.5.8|^9.3.3",
|
||||||
"vimeo/psalm": "^4"
|
"vimeo/psalm": "^4"
|
||||||
},
|
},
|
||||||
|
|||||||
Generated
-5028
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" backupGlobals="false" backupStaticAttributes="false" bootstrap="vendor/autoload.php" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" executionOrder="defects" processIsolation="false" stopOnFailure="false">
|
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" backupGlobals="false" backupStaticAttributes="false" bootstrap="vendor/autoload.php" colors="true" convertDeprecationsToExceptions="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" executionOrder="defects" processIsolation="false" stopOnFailure="false">
|
||||||
<coverage>
|
<coverage>
|
||||||
<include>
|
<include>
|
||||||
<directory>./src/</directory>
|
<directory>./src/</directory>
|
||||||
|
|||||||
+5
-16
@@ -1,19 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<files psalm-version="3.8.3@389af1bfc739bfdff3f9e3dc7bd6499aee51a831">
|
<files psalm-version="5.4.0@62db5d4f6a7ae0a20f7cc5a4952d730272fc0863">
|
||||||
<file src="src/EmailLexer.php">
|
<file src="src/Parser/DomainPart.php">
|
||||||
<DocblockTypeContradiction occurrences="1">
|
<RedundantConditionGivenDocblockType occurrences="1">
|
||||||
<code>self::$nullToken</code>
|
<code>null !== $this->lexer->token['type']</code>
|
||||||
</DocblockTypeContradiction>
|
</RedundantConditionGivenDocblockType>
|
||||||
</file>
|
|
||||||
<file src="src/Parser/Parser.php">
|
|
||||||
<MissingReturnType occurrences="1">
|
|
||||||
<code>parse</code>
|
|
||||||
</MissingReturnType>
|
|
||||||
</file>
|
|
||||||
<file src="src/Validation/SpoofCheckValidation.php">
|
|
||||||
<UndefinedClass occurrences="2">
|
|
||||||
<code>Spoofchecker</code>
|
|
||||||
<code>Spoofchecker</code>
|
|
||||||
</UndefinedClass>
|
|
||||||
</file>
|
</file>
|
||||||
</files>
|
</files>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xmlns="https://getpsalm.org/schema/config"
|
xmlns="https://getpsalm.org/schema/config"
|
||||||
xsi:schemaLocation="https://getpsalm.org/schema/config ./vendor/vimeo/psalm/config.xsd"
|
xsi:schemaLocation="https://getpsalm.org/schema/config ./vendor/vimeo/psalm/config.xsd"
|
||||||
errorBaseline="./psalm.baseline.xml"
|
errorBaseline="psalm.baseline.xml"
|
||||||
>
|
>
|
||||||
<projectFiles>
|
<projectFiles>
|
||||||
<directory name="src" />
|
<directory name="src" />
|
||||||
@@ -13,5 +13,11 @@
|
|||||||
</projectFiles>
|
</projectFiles>
|
||||||
|
|
||||||
<issueHandlers>
|
<issueHandlers>
|
||||||
|
<DeprecatedMethod>
|
||||||
|
<errorLevel type="suppress">
|
||||||
|
<!-- This issue needs to be resolved before upgrading to Lexer 3 -->
|
||||||
|
<referencedMethod name="Doctrine\Common\Lexer\Token::offsetGet"/>
|
||||||
|
</errorLevel>
|
||||||
|
</DeprecatedMethod>
|
||||||
</issueHandlers>
|
</issueHandlers>
|
||||||
</psalm>
|
</psalm>
|
||||||
|
|||||||
+13
-5
@@ -3,7 +3,11 @@
|
|||||||
namespace Egulias\EmailValidator;
|
namespace Egulias\EmailValidator;
|
||||||
|
|
||||||
use Doctrine\Common\Lexer\AbstractLexer;
|
use Doctrine\Common\Lexer\AbstractLexer;
|
||||||
|
use Doctrine\Common\Lexer\Token;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @extends AbstractLexer<int, string>
|
||||||
|
*/
|
||||||
class EmailLexer extends AbstractLexer
|
class EmailLexer extends AbstractLexer
|
||||||
{
|
{
|
||||||
//ASCII values
|
//ASCII values
|
||||||
@@ -140,18 +144,20 @@ class EmailLexer extends AbstractLexer
|
|||||||
/**
|
/**
|
||||||
* The last matched/seen token.
|
* The last matched/seen token.
|
||||||
*
|
*
|
||||||
* @var array
|
* @var array|Token
|
||||||
*
|
*
|
||||||
* @psalm-suppress NonInvariantDocblockPropertyType
|
* @psalm-suppress NonInvariantDocblockPropertyType
|
||||||
* @psalm-var array{value:string, type:null|int, position:int}
|
* @psalm-var array{value:string, type:null|int, position:int}|Token<int, string>
|
||||||
* @psalm-suppress NonInvariantDocblockPropertyType
|
|
||||||
*/
|
*/
|
||||||
public $token;
|
public $token;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The next token in the input.
|
* The next token in the input.
|
||||||
*
|
*
|
||||||
* @var array{position: int, type: int|null|string, value: int|string}|null
|
* @var array|Token|null
|
||||||
|
*
|
||||||
|
* @psalm-suppress NonInvariantDocblockPropertyType
|
||||||
|
* @psalm-var array{position: int, type: int|null|string, value: int|string}|Token<int, string>|null
|
||||||
*/
|
*/
|
||||||
public $lookahead;
|
public $lookahead;
|
||||||
|
|
||||||
@@ -210,7 +216,9 @@ class EmailLexer extends AbstractLexer
|
|||||||
$this->accumulator .= $this->token['value'];
|
$this->accumulator .= $this->token['value'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->previous = $this->token;
|
$this->previous = $this->token instanceof Token
|
||||||
|
? ['value' => $this->token->value, 'type' => $this->token->type, 'position' => $this->token->position]
|
||||||
|
: $this->token;
|
||||||
|
|
||||||
if($this->lookahead === null) {
|
if($this->lookahead === null) {
|
||||||
$this->lookahead = self::$nullToken;
|
$this->lookahead = self::$nullToken;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace Egulias\EmailValidator\Parser;
|
namespace Egulias\EmailValidator\Parser;
|
||||||
|
|
||||||
|
use Doctrine\Common\Lexer\Token;
|
||||||
use Egulias\EmailValidator\EmailLexer;
|
use Egulias\EmailValidator\EmailLexer;
|
||||||
use Egulias\EmailValidator\Warning\TLD;
|
use Egulias\EmailValidator\Warning\TLD;
|
||||||
use Egulias\EmailValidator\Result\Result;
|
use Egulias\EmailValidator\Result\Result;
|
||||||
@@ -212,7 +213,10 @@ class DomainPart extends PartParser
|
|||||||
return new ValidEmail();
|
return new ValidEmail();
|
||||||
}
|
}
|
||||||
|
|
||||||
private function checkNotAllowedChars(array $token) : Result
|
/**
|
||||||
|
* @psalm-param array|Token<int, string> $token
|
||||||
|
*/
|
||||||
|
private function checkNotAllowedChars($token) : Result
|
||||||
{
|
{
|
||||||
$notAllowed = [EmailLexer::S_BACKSLASH => true, EmailLexer::S_SLASH=> true];
|
$notAllowed = [EmailLexer::S_BACKSLASH => true, EmailLexer::S_SLASH=> true];
|
||||||
if (isset($notAllowed[$token['type']])) {
|
if (isset($notAllowed[$token['type']])) {
|
||||||
|
|||||||
Reference in New Issue
Block a user