Unverified Commit a04c608d authored by Grégoire Paris's avatar Grégoire Paris

Merge remote-tracking branch 'origin/2.11.x' into 3.0.x

parents 67944fce ce218349
......@@ -44,9 +44,10 @@
"phpstan/phpstan": "^0.12.18",
"phpstan/phpstan-strict-rules": "^0.12.2",
"phpunit/phpunit": "^9.1.1",
"psalm/plugin-phpunit": "^0.10.0",
"slevomat/coding-standard": "^6.3.6",
"symfony/console": "^2.0.5|^3.0|^4.0|^5.0",
"vimeo/psalm": "^3.11"
"vimeo/psalm": "^3.11.4"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
......
......@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "869c59b61c7de15365fcbad3241d6837",
"content-hash": "d0353e4743c583bb533aa3b933473d29",
"packages": [
{
"name": "doctrine/cache",
......@@ -208,16 +208,16 @@
"packages-dev": [
{
"name": "amphp/amp",
"version": "v2.4.2",
"version": "v2.4.4",
"source": {
"type": "git",
"url": "https://github.com/amphp/amp.git",
"reference": "feca077369a47263b22156b3c6389e55f3809f24"
"reference": "1e58d53e4af390efc7813e36cd215bd82cba4b06"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/amphp/amp/zipball/feca077369a47263b22156b3c6389e55f3809f24",
"reference": "feca077369a47263b22156b3c6389e55f3809f24",
"url": "https://api.github.com/repos/amphp/amp/zipball/1e58d53e4af390efc7813e36cd215bd82cba4b06",
"reference": "1e58d53e4af390efc7813e36cd215bd82cba4b06",
"shasum": ""
},
"require": {
......@@ -230,7 +230,7 @@
"jetbrains/phpstorm-stubs": "^2019.3",
"phpunit/phpunit": "^6.0.9 | ^7",
"react/promise": "^2",
"vimeo/psalm": "^3.9@dev"
"vimeo/psalm": "^3.11@dev"
},
"type": "library",
"extra": {
......@@ -282,7 +282,7 @@
"non-blocking",
"promise"
],
"time": "2020-04-04T15:05:26+00:00"
"time": "2020-04-30T04:54:50+00:00"
},
{
"name": "amphp/byte-stream",
......@@ -733,25 +733,30 @@
},
{
"name": "jetbrains/phpstorm-stubs",
"version": "v2019.1",
"version": "v2019.3",
"source": {
"type": "git",
"url": "https://github.com/JetBrains/phpstorm-stubs.git",
"reference": "9e309771f362e979ecfb429303ad7a402c657234"
"reference": "883b6facd78e01c0743b554af86fa590c2573f40"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/JetBrains/phpstorm-stubs/zipball/9e309771f362e979ecfb429303ad7a402c657234",
"reference": "9e309771f362e979ecfb429303ad7a402c657234",
"url": "https://api.github.com/repos/JetBrains/phpstorm-stubs/zipball/883b6facd78e01c0743b554af86fa590c2573f40",
"reference": "883b6facd78e01c0743b554af86fa590c2573f40",
"shasum": ""
},
"require-dev": {
"nikic/php-parser": "v4.0.1",
"nikic/php-parser": "^4",
"php": "^7.1",
"phpdocumentor/reflection-docblock": "^4.3",
"phpunit/phpunit": "7.1.4"
"phpunit/phpunit": "^7"
},
"type": "library",
"autoload": {
"files": [
"PhpStormStubsMap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"Apache-2.0"
......@@ -768,7 +773,7 @@
"stubs",
"type"
],
"time": "2019-03-25T16:59:23+00:00"
"time": "2019-12-05T16:56:26+00:00"
},
{
"name": "myclabs/deep-copy",
......@@ -820,16 +825,16 @@
},
{
"name": "netresearch/jsonmapper",
"version": "v2.0.0",
"version": "v2.1.0",
"source": {
"type": "git",
"url": "https://github.com/cweiske/jsonmapper.git",
"reference": "e245890383c3ed38b6d202ee373c23ccfebc0f54"
"reference": "e0f1e33a71587aca81be5cffbb9746510e1fe04e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/e245890383c3ed38b6d202ee373c23ccfebc0f54",
"reference": "e245890383c3ed38b6d202ee373c23ccfebc0f54",
"url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/e0f1e33a71587aca81be5cffbb9746510e1fe04e",
"reference": "e0f1e33a71587aca81be5cffbb9746510e1fe04e",
"shasum": ""
},
"require": {
......@@ -862,7 +867,7 @@
}
],
"description": "Map nested JSON structures onto PHP classes",
"time": "2020-03-04T17:23:33+00:00"
"time": "2020-04-16T18:48:43+00:00"
},
{
"name": "nikic/php-parser",
......@@ -1069,24 +1074,21 @@
},
{
"name": "phpdocumentor/reflection-common",
"version": "2.0.0",
"version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
"reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a"
"reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a",
"reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a",
"url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
"reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
"require-dev": {
"phpunit/phpunit": "~6"
},
"type": "library",
"extra": {
"branch-alias": {
......@@ -1117,7 +1119,7 @@
"reflection",
"static analysis"
],
"time": "2018-08-07T13:53:10+00:00"
"time": "2020-04-27T09:25:28+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
......@@ -1422,16 +1424,16 @@
},
{
"name": "phpunit/php-code-coverage",
"version": "8.0.1",
"version": "8.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "31e94ccc084025d6abee0585df533eb3a792b96a"
"reference": "ca6647ffddd2add025ab3f21644a441d7c146cdc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/31e94ccc084025d6abee0585df533eb3a792b96a",
"reference": "31e94ccc084025d6abee0585df533eb3a792b96a",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca6647ffddd2add025ab3f21644a441d7c146cdc",
"reference": "ca6647ffddd2add025ab3f21644a441d7c146cdc",
"shasum": ""
},
"require": {
......@@ -1482,20 +1484,26 @@
"testing",
"xunit"
],
"time": "2020-02-19T13:41:19+00:00"
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
"time": "2020-05-23T08:02:54+00:00"
},
{
"name": "phpunit/php-file-iterator",
"version": "3.0.0",
"version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
"reference": "354d4a5faa7449a377a18b94a2026ca3415e3d7a"
"reference": "4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/354d4a5faa7449a377a18b94a2026ca3415e3d7a",
"reference": "354d4a5faa7449a377a18b94a2026ca3415e3d7a",
"url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4",
"reference": "4ac5b3e13df14829daa60a2eb4fdd2f2b7d33cf4",
"shasum": ""
},
"require": {
......@@ -1532,7 +1540,13 @@
"filesystem",
"iterator"
],
"time": "2020-02-07T06:05:22+00:00"
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
"time": "2020-04-18T05:02:12+00:00"
},
{
"name": "phpunit/php-invoker",
......@@ -1635,16 +1649,16 @@
},
{
"name": "phpunit/php-timer",
"version": "3.0.0",
"version": "3.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
"reference": "4118013a4d0f97356eae8e7fb2f6c6472575d1df"
"reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/4118013a4d0f97356eae8e7fb2f6c6472575d1df",
"reference": "4118013a4d0f97356eae8e7fb2f6c6472575d1df",
"url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/dc9368fae6ef2ffa57eba80a7410bcef81df6258",
"reference": "dc9368fae6ef2ffa57eba80a7410bcef81df6258",
"shasum": ""
},
"require": {
......@@ -1656,7 +1670,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
"dev-master": "3.1-dev"
}
},
"autoload": {
......@@ -1680,20 +1694,26 @@
"keywords": [
"timer"
],
"time": "2020-02-07T06:08:11+00:00"
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
"time": "2020-04-20T06:00:37+00:00"
},
{
"name": "phpunit/php-token-stream",
"version": "4.0.0",
"version": "4.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-token-stream.git",
"reference": "b2560a0c33f7710e4d7f8780964193e8e8f8effe"
"reference": "cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/b2560a0c33f7710e4d7f8780964193e8e8f8effe",
"reference": "b2560a0c33f7710e4d7f8780964193e8e8f8effe",
"url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c",
"reference": "cdc0db5aed8fbfaf475fbd95bfd7bab83c7a779c",
"shasum": ""
},
"require": {
......@@ -1729,20 +1749,26 @@
"keywords": [
"tokenizer"
],
"time": "2020-02-07T06:19:00+00:00"
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
"time": "2020-05-06T09:56:31+00:00"
},
{
"name": "phpunit/phpunit",
"version": "9.1.1",
"version": "9.1.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "848f6521c906500e66229668768576d35de0227e"
"reference": "1b570cd7edbe136055bf5f651857dc8af6b829d2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/848f6521c906500e66229668768576d35de0227e",
"reference": "848f6521c906500e66229668768576d35de0227e",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1b570cd7edbe136055bf5f651857dc8af6b829d2",
"reference": "1b570cd7edbe136055bf5f651857dc8af6b829d2",
"shasum": ""
},
"require": {
......@@ -1762,8 +1788,8 @@
"phpunit/php-file-iterator": "^3.0",
"phpunit/php-invoker": "^3.0",
"phpunit/php-text-template": "^2.0",
"phpunit/php-timer": "^3.0",
"sebastian/code-unit": "^1.0",
"phpunit/php-timer": "^3.1.4",
"sebastian/code-unit": "^1.0.2",
"sebastian/comparator": "^4.0",
"sebastian/diff": "^4.0",
"sebastian/environment": "^5.0.1",
......@@ -1775,7 +1801,8 @@
"sebastian/version": "^3.0"
},
"require-dev": {
"ext-pdo": "*"
"ext-pdo": "*",
"phpspec/prophecy-phpunit": "^2.0"
},
"suggest": {
"ext-soap": "*",
......@@ -1826,7 +1853,58 @@
"type": "github"
}
],
"time": "2020-04-03T14:40:04+00:00"
"time": "2020-05-22T13:54:05+00:00"
},
{
"name": "psalm/plugin-phpunit",
"version": "0.10.1",
"source": {
"type": "git",
"url": "https://github.com/psalm/psalm-plugin-phpunit.git",
"reference": "138998ffd32b76a2e69eb1ff94ef2bf110967273"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/138998ffd32b76a2e69eb1ff94ef2bf110967273",
"reference": "138998ffd32b76a2e69eb1ff94ef2bf110967273",
"shasum": ""
},
"require": {
"composer/semver": "^1.4",
"ext-simplexml": "*",
"ocramius/package-versions": "^1.3",
"php": "^7.1.3",
"phpunit/phpunit": "^7.5 || ^8.0 || ^9.0",
"vimeo/psalm": "^3.6.2 || dev-master"
},
"require-dev": {
"codeception/codeception": "^4.0.3",
"squizlabs/php_codesniffer": "^3.3.1",
"weirdan/codeception-psalm-module": "^0.7.1"
},
"type": "psalm-plugin",
"extra": {
"psalm": {
"pluginClass": "Psalm\\PhpUnitPlugin\\Plugin"
}
},
"autoload": {
"psr-4": {
"Psalm\\PhpUnitPlugin\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Matt Brown",
"email": "github@muglug.com"
}
],
"description": "Psalm plugin for PHPUnit",
"time": "2020-05-24T20:30:10+00:00"
},
{
"name": "psr/log",
......@@ -1877,16 +1955,16 @@
},
{
"name": "sebastian/code-unit",
"version": "1.0.0",
"version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit.git",
"reference": "8d8f09bd47c75159921e6e84fdef146343962866"
"reference": "ac958085bc19fcd1d36425c781ef4cbb5b06e2a5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/8d8f09bd47c75159921e6e84fdef146343962866",
"reference": "8d8f09bd47c75159921e6e84fdef146343962866",
"url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/ac958085bc19fcd1d36425c781ef4cbb5b06e2a5",
"reference": "ac958085bc19fcd1d36425c781ef4cbb5b06e2a5",
"shasum": ""
},
"require": {
......@@ -1925,7 +2003,7 @@
"type": "github"
}
],
"time": "2020-03-30T11:59:20+00:00"
"time": "2020-04-30T05:58:10+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
......@@ -2038,16 +2116,16 @@
},
{
"name": "sebastian/diff",
"version": "4.0.0",
"version": "4.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
"reference": "c0c26c9188b538bfa985ae10c9f05d278f12060d"
"reference": "3e523c576f29dacecff309f35e4cc5a5c168e78a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c0c26c9188b538bfa985ae10c9f05d278f12060d",
"reference": "c0c26c9188b538bfa985ae10c9f05d278f12060d",
"url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3e523c576f29dacecff309f35e4cc5a5c168e78a",
"reference": "3e523c576f29dacecff309f35e4cc5a5c168e78a",
"shasum": ""
},
"require": {
......@@ -2055,7 +2133,7 @@
},
"require-dev": {
"phpunit/phpunit": "^9.0",
"symfony/process": "^4 || ^5"
"symfony/process": "^4.2 || ^5"
},
"type": "library",
"extra": {
......@@ -2090,20 +2168,26 @@
"unidiff",
"unified diff"
],
"time": "2020-02-07T06:09:38+00:00"
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
}
],
"time": "2020-05-08T05:01:12+00:00"
},
{
"name": "sebastian/environment",
"version": "5.0.2",
"version": "5.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
"reference": "c39c1db0a5cffc98173f3de5a17d489d1043fd7b"
"reference": "c753f04d68cd489b6973cf9b4e505e191af3b05c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/c39c1db0a5cffc98173f3de5a17d489d1043fd7b",
"reference": "c39c1db0a5cffc98173f3de5a17d489d1043fd7b",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/c753f04d68cd489b6973cf9b4e505e191af3b05c",
"reference": "c753f04d68cd489b6973cf9b4e505e191af3b05c",
"shasum": ""
},
"require": {
......@@ -2149,7 +2233,7 @@
"type": "github"
}
],
"time": "2020-03-31T12:14:15+00:00"
"time": "2020-04-14T13:36:52+00:00"
},
{
"name": "sebastian/exporter",
......@@ -2857,16 +2941,16 @@
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.15.0",
"version": "v1.17.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14"
"reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/4719fa9c18b0464d399f1a63bf624b42b6fa8d14",
"reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
"reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9",
"shasum": ""
},
"require": {
......@@ -2878,7 +2962,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.15-dev"
"dev-master": "1.17-dev"
}
},
"autoload": {
......@@ -2925,7 +3009,7 @@
"type": "tidelift"
}
],
"time": "2020-02-27T09:26:54+00:00"
"time": "2020-05-12T16:14:59+00:00"
},
{
"name": "symfony/polyfill-mbstring",
......@@ -3019,8 +3103,8 @@
"authors": [
{
"name": "Arne Blankerts",
"role": "Developer",
"email": "arne@blankerts.de"
"email": "arne@blankerts.de",
"role": "Developer"
}
],
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
......@@ -3028,16 +3112,16 @@
},
{
"name": "vimeo/psalm",
"version": "3.11.2",
"version": "3.11.5",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
"reference": "d470903722cfcbc1cd04744c5491d3e6d13ec3d9"
"reference": "3c60609c218d4d4b3b257728b8089094e5c6c6c2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vimeo/psalm/zipball/d470903722cfcbc1cd04744c5491d3e6d13ec3d9",
"reference": "d470903722cfcbc1cd04744c5491d3e6d13ec3d9",
"url": "https://api.github.com/repos/vimeo/psalm/zipball/3c60609c218d4d4b3b257728b8089094e5c6c6c2",
"reference": "3c60609c218d4d4b3b257728b8089094e5c6c6c2",
"shasum": ""
},
"require": {
......@@ -3099,8 +3183,7 @@
},
"autoload": {
"psr-4": {
"Psalm\\Plugin\\": "src/Psalm/Plugin",
"Psalm\\": "src/Psalm"
"Psalm\\": "src/Psalm/"
},
"files": [
"src/functions.php",
......@@ -3122,20 +3205,20 @@
"inspection",
"php"
],
"time": "2020-04-13T12:47:11+00:00"
"time": "2020-05-27T15:12:09+00:00"
},
{
"name": "webmozart/assert",
"version": "1.7.0",
"version": "1.8.0",
"source": {
"type": "git",
"url": "https://github.com/webmozart/assert.git",
"reference": "aed98a490f9a8f78468232db345ab9cf606cf598"
"reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598",
"reference": "aed98a490f9a8f78468232db345ab9cf606cf598",
"url": "https://api.github.com/repos/webmozart/assert/zipball/ab2cb0b3b559010b75981b1bdce728da3ee90ad6",
"reference": "ab2cb0b3b559010b75981b1bdce728da3ee90ad6",
"shasum": ""
},
"require": {
......@@ -3143,7 +3226,7 @@
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
"vimeo/psalm": "<3.6.0"
"vimeo/psalm": "<3.9.1"
},
"require-dev": {
"phpunit/phpunit": "^4.8.36 || ^7.5.13"
......@@ -3170,7 +3253,7 @@
"check",
"validate"
],
"time": "2020-02-14T12:15:55+00:00"
"time": "2020-04-18T12:12:48+00:00"
},
{
"name": "webmozart/glob",
......
......@@ -111,7 +111,7 @@
<!-- The SQLSRV_* functions are defined in the upper case by the sqlsrv extension and violate the standard
see https://docs.microsoft.com/en-us/sql/connect/php/constants-microsoft-drivers-for-php-for-sql-server -->
<rule ref="Squiz.PHP.LowercasePHPFunctions.UseStatementUppercase">
<exclude-pattern>src/Driver/SQLSrv/SQLSrvStatement.php</exclude-pattern>
<rule ref="Squiz.PHP.LowercasePHPFunctions">
<exclude-pattern>lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvStatement.php</exclude-pattern>
</rule>
</ruleset>
......@@ -120,5 +120,18 @@ parameters:
message: '~^Only numeric types are allowed in -, int<1, max>\|false given on the left side\.~'
paths:
- %currentWorkingDirectory%/src/Platforms/SQLServer2012Platform.php
# Caused by phpdoc annotations intended for Psalm
-
message: '~Unable to resolve the template type T in call to method static method Doctrine\\DBAL\\DriverManager::getConnection\(\)~'
paths:
- %currentWorkingDirectory%/src/Id/TableGenerator.php
- %currentWorkingDirectory%/src/Schema/SqliteSchemaManager.php
-
message: '~Method Doctrine\\DBAL\\Driver\\PDOSqlsrv\\Connection\:\:lastInsertId\(\) should return string but returns string\|false\|null\.~'
paths:
- %currentWorkingDirectory%/src/Driver/PDOSqlsrv/Connection.php
includes:
- vendor/phpstan/phpstan-strict-rules/rules.neon
<?xml version="1.0"?>
<psalm
totallyTyped="false"
errorLevel="7"
errorLevel="6"
resolveFromConfigFile="true"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://getpsalm.org/schema/config"
......
......@@ -1217,9 +1217,9 @@ class Connection implements DriverConnection
*
* This method supports PDO binding types as well as DBAL mapping types.
*
* @param string $query The SQL query.
* @param mixed[] $params The query parameters.
* @param int[]|string[] $types The parameter types.
* @param string $query The SQL query.
* @param array<mixed> $params The query parameters.
* @param array<int|string|null> $types The parameter types.
*
* @throws DBALException
*/
......
......@@ -137,6 +137,8 @@ class OCI8Connection implements Connection, ServerInfoAwareConnection
/**
* {@inheritdoc}
*
* @return int|false
*/
public function lastInsertId($name = null)
{
......
......@@ -112,11 +112,15 @@ final class DriverManager
* <b>driverClass</b>:
* The driver class to use.
*
* @param mixed[] $params The parameters.
* @param Configuration|null $config The configuration to use.
* @param EventManager|null $eventManager The event manager to use.
* @param array{wrapperClass?: class-string<T>} $params
* @param Configuration|null $config The configuration to use.
* @param EventManager|null $eventManager The event manager to use.
*
* @throws DBALException
*
* @phpstan-param mixed[] $params
* @psalm-return ($params is array{wrapperClass:mixed} ? T : Connection)
* @template T of Connection
*/
public static function getConnection(
array $params,
......
......@@ -10,9 +10,9 @@ interface SQLLogger
/**
* Logs a SQL statement somewhere.
*
* @param string $sql The SQL to be executed.
* @param mixed[]|null $params The SQL parameters.
* @param int[]|string[]|null $types The SQL parameter types.
* @param string $sql The SQL to be executed.
* @param mixed[]|null $params The SQL parameters.
* @param array<int|string|null> $types The SQL parameter types.
*
* @return void
*/
......
......@@ -2815,8 +2815,8 @@ abstract class AbstractPlatform
}
/**
* @param string $table
* @param string|null $database
* @param string $table
* @param string $database
*
* @return string
*
......
......@@ -118,9 +118,9 @@ class SQLParserUtils
/**
* For a positional query this method can rewrite the sql statement with regard to array parameters.
*
* @param string $query The SQL query to execute.
* @param mixed[] $params The parameters to bind to the query.
* @param int[]|string[] $types The types the previous parameters are in.
* @param string $query The SQL query to execute.
* @param mixed[] $params The parameters to bind to the query.
* @param array<string|int|null> $types The types the previous parameters are in.
*
* @return mixed[]
*
......
......@@ -21,7 +21,7 @@ class QueryCacheProfileTest extends TestCase
/** @var int[] */
private $params = [666];
/** @var string[] */
/** @var int[] */
private $types = [ParameterType::INTEGER];
/** @var string[] */
......
......@@ -143,9 +143,7 @@ class ConnectionTest extends TestCase
public function testConnectDispatchEvent() : void
{
$listenerMock = $this->getMockBuilder($this->getMockClass('ConnectDispatchEventListener'))
->addMethods(['postConnect'])
->getMock();
$listenerMock = $this->createMock(ConnectDispatchEventListener::class);
$listenerMock->expects(self::once())->method('postConnect');
$eventManager = new EventManager();
......@@ -900,3 +898,8 @@ class ConnectionTest extends TestCase
$connection->executeCacheQuery($query, [], [], $queryCacheProfile);
}
}
interface ConnectDispatchEventListener
{
public function postConnect() : void;
}
......@@ -27,6 +27,7 @@ use Doctrine\DBAL\Exception\UniqueConstraintViolationException;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Schema\AbstractSchemaManager;
use Doctrine\DBAL\VersionAwarePlatformDriver;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use ReflectionProperty;
use function array_merge;
......@@ -198,11 +199,12 @@ abstract class AbstractDriverTest extends TestCase
*/
abstract protected function createSchemaManager(Connection $connection) : AbstractSchemaManager;
/**
* @return Connection&MockObject
*/
protected function getConnectionMock() : Connection
{
return $this->getMockBuilder(Connection::class)
->disableOriginalConstructor()
->getMock();
return $this->createMock(Connection::class);
}
/**
......@@ -214,7 +216,7 @@ abstract class AbstractDriverTest extends TestCase
}
/**
* @return mixed[][]
* @return iterable<mixed[]>
*/
public static function exceptionConversionProvider() : iterable
{
......
......@@ -43,6 +43,8 @@ class StatementIteratorTest extends TestCase
}
/**
* @param class-string<Statement> $class
*
* @dataProvider statementProvider()
*/
public function testStatementIterationCallsFetchOncePerStep(string $class) : void
......@@ -80,7 +82,7 @@ class StatementIteratorTest extends TestCase
}
/**
* @return string[][]
* @return iterable<array{0: class-string<Statement>}>
*/
public static function statementProvider() : iterable
{
......
......@@ -67,6 +67,7 @@ class DriverManagerTest extends TestCase
/**
* @requires extension pdo_sqlite
* @psalm-suppress InvalidArgument
*/
public function testInvalidWrapperClass() : void
{
......@@ -156,7 +157,7 @@ class DriverManagerTest extends TestCase
}
/**
* @return array<string, array<int, mixed>>
* @return array<string, list<mixed>>
*/
public function databaseUrls() : iterable
{
......@@ -255,7 +256,7 @@ class DriverManagerTest extends TestCase
],
],
'query params from URL are used as extra params' => [
'url' => 'mysql://foo:bar@localhost/dbname?charset=UTF-8',
'mysql://foo:bar@localhost/dbname?charset=UTF-8',
['charset' => 'UTF-8'],
],
'simple URL with fallthrough scheme not defined in map' => [
......
......@@ -21,7 +21,7 @@ use const CASE_LOWER;
*/
class ResultCacheTest extends FunctionalTestCase
{
/** @var array<int, array<int, int|string>> */
/** @var list<array{test_int: int, test_string: string}> */
private $expectedResult = [['test_int' => 100, 'test_string' => 'foo'], ['test_int' => 200, 'test_string' => 'bar'], ['test_int' => 300, 'test_string' => 'baz']];
/** @var DebugStack */
......@@ -195,7 +195,7 @@ class ResultCacheTest extends FunctionalTestCase
}
/**
* @param array<int, array<int, int|string>> $expectedResult
* @param array<int, array<int, int|string>>|list<int> $expectedResult
*/
private function assertCacheNonCacheSelectSameFetchModeAreEqual(array $expectedResult, int $fetchMode) : void
{
......
......@@ -7,6 +7,7 @@ use Doctrine\DBAL\Platforms\PostgreSQL94Platform;
use Doctrine\DBAL\Schema;
use Doctrine\DBAL\Schema\Comparator;
use Doctrine\DBAL\Schema\ForeignKeyConstraint;
use Doctrine\DBAL\Schema\PostgreSqlSchemaManager;
use Doctrine\DBAL\Schema\Table;
use Doctrine\DBAL\Schema\TableDiff;
use Doctrine\DBAL\Types\BlobType;
......@@ -20,6 +21,9 @@ use function strtolower;
class PostgreSqlSchemaManagerTest extends SchemaManagerFunctionalTestCase
{
/** @var PostgreSqlSchemaManager */
protected $schemaManager;
protected function tearDown() : void
{
parent::tearDown();
......@@ -28,7 +32,7 @@ class PostgreSqlSchemaManagerTest extends SchemaManagerFunctionalTestCase
return;
}
$this->connection->getConfiguration()->setFilterSchemaAssetsExpression(null);
$this->connection->getConfiguration()->setSchemaAssetsFilter(null);
}
/**
......
......@@ -60,7 +60,7 @@ abstract class SchemaManagerFunctionalTestCase extends FunctionalTestCase
$e = explode('\\', $class);
$testClass = end($e);
return strtolower(str_replace('SchemaManagerTest', null, $testClass));
return strtolower(str_replace('SchemaManagerTest', '', $testClass));
}
protected function setUp() : void
......@@ -367,10 +367,7 @@ abstract class SchemaManagerFunctionalTestCase extends FunctionalTestCase
$this->schemaManager->dropAndCreateTable($table);
$listenerMock = $this->getMockBuilder($this->getMockClass('ListTableColumnsDispatchEventListener'))
->addMethods(['onSchemaColumnDefinition'])
->getMock();
$listenerMock = $this->createMock(ListTableColumnsDispatchEventListener::class);
$listenerMock
->expects(self::exactly(7))
->method('onSchemaColumnDefinition');
......@@ -395,9 +392,7 @@ abstract class SchemaManagerFunctionalTestCase extends FunctionalTestCase
$this->schemaManager->dropAndCreateTable($table);
$listenerMock = $this->getMockBuilder($this->getMockClass('ListTableIndexesDispatchEventListener'))
->addMethods(['onSchemaIndexDefinition'])
->getMock();
$listenerMock = $this->createMock(ListTableIndexesDispatchEventListener::class);
$listenerMock
->expects(self::exactly(3))
->method('onSchemaIndexDefinition');
......@@ -1651,3 +1646,13 @@ abstract class SchemaManagerFunctionalTestCase extends FunctionalTestCase
}
}
}
interface ListTableColumnsDispatchEventListener
{
public function onSchemaColumnDefinition() : void;
}
interface ListTableIndexesDispatchEventListener
{
public function onSchemaIndexDefinition() : void;
}
......@@ -98,7 +98,7 @@ EOS
new Schema\ForeignKeyConstraint(
['log'],
'log',
[null],
[''],
'FK_3',
['onUpdate' => 'SET NULL', 'onDelete' => 'NO ACTION', 'deferrable' => false, 'deferred' => false]
),
......
......@@ -7,6 +7,7 @@ use Doctrine\DBAL\Driver\DriverException;
use Doctrine\DBAL\ParameterType;
use Doctrine\DBAL\Schema\Sequence;
use Doctrine\DBAL\Schema\Table;
use Doctrine\DBAL\Statement;
use Doctrine\DBAL\Tests\FunctionalTestCase;
use Doctrine\DBAL\Types\Type;
use Throwable;
......@@ -94,6 +95,7 @@ class WriteTest extends FunctionalTestCase
$sql = 'INSERT INTO write_table (test_int, test_string) VALUES (?, ?)';
$stmt = $this->connection->prepare($sql);
self::assertInstanceOf(Statement::class, $stmt);
$stmt->bindValue(1, 1, Type::getType('integer'));
$stmt->bindValue(2, 'foo', Type::getType('string'));
$stmt->execute();
......@@ -106,6 +108,7 @@ class WriteTest extends FunctionalTestCase
$sql = 'INSERT INTO write_table (test_int, test_string) VALUES (?, ?)';
$stmt = $this->connection->prepare($sql);
self::assertInstanceOf(Statement::class, $stmt);
$stmt->bindValue(1, 1, 'integer');
$stmt->bindValue(2, 'foo', 'string');
$stmt->execute();
......
......@@ -367,9 +367,7 @@ abstract class AbstractPlatformTestCase extends TestCase
public function testGetCreateTableSqlDispatchEvent() : void
{
$listenerMock = $this->getMockBuilder($this->getMockClass('GetCreateTableSqlDispatchEvenListener'))
->addMethods(['onSchemaCreateTable', 'onSchemaCreateTableColumn'])
->getMock();
$listenerMock = $this->createMock(GetCreateTableSqlDispatchEventListener::class);
$listenerMock
->expects(self::once())
->method('onSchemaCreateTable');
......@@ -391,9 +389,7 @@ abstract class AbstractPlatformTestCase extends TestCase
public function testGetDropTableSqlDispatchEvent() : void
{
$listenerMock = $this->getMockBuilder($this->getMockClass('GetDropTableSqlDispatchEventListener'))
->addMethods(['onSchemaDropTable'])
->getMock();
$listenerMock = $this->createMock(GetDropTableSqlDispatchEventListener::class);
$listenerMock
->expects(self::once())
->method('onSchemaDropTable');
......@@ -408,17 +404,7 @@ abstract class AbstractPlatformTestCase extends TestCase
public function testGetAlterTableSqlDispatchEvent() : void
{
$events = [
'onSchemaAlterTable',
'onSchemaAlterTableAddColumn',
'onSchemaAlterTableRemoveColumn',
'onSchemaAlterTableChangeColumn',
'onSchemaAlterTableRenameColumn',
];
$listenerMock = $this->getMockBuilder($this->getMockClass('GetAlterTableSqlDispatchEvenListener'))
->addMethods($events)
->getMock();
$listenerMock = $this->createMock(GetAlterTableSqlDispatchEventListener::class);
$listenerMock
->expects(self::once())
->method('onSchemaAlterTable');
......@@ -1527,3 +1513,28 @@ abstract class AbstractPlatformTestCase extends TestCase
);
}
}
interface GetCreateTableSqlDispatchEventListener
{
public function onSchemaCreateTable() : void;
public function onSchemaCreateTableColumn() : void;
}
interface GetAlterTableSqlDispatchEventListener
{
public function onSchemaAlterTable() : void;
public function onSchemaAlterTableAddColumn() : void;
public function onSchemaAlterTableRemoveColumn() : void;
public function onSchemaAlterTableChangeColumn() : void;
public function onSchemaAlterTableRenameColumn() : void;
}
interface GetDropTableSqlDispatchEventListener
{
public function onSchemaDropTable() : void;
}
......@@ -2,6 +2,9 @@
namespace Doctrine\DBAL\Tests\Platforms;
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\DBAL\Platforms\PostgreSQL100Platform;
use Doctrine\DBAL\Platforms\PostgreSQL94Platform;
use Doctrine\DBAL\Schema\Column;
use Doctrine\DBAL\Schema\ColumnDiff;
use Doctrine\DBAL\Schema\Comparator;
......@@ -16,6 +19,12 @@ use function sprintf;
abstract class AbstractPostgreSQLPlatformTestCase extends AbstractPlatformTestCase
{
/** @var PostgreSQL94Platform|PostgreSQL100Platform */
protected $platform;
/** @return PostgreSQL94Platform|PostgreSQL100Platform */
abstract public function createPlatform() : AbstractPlatform;
public function getGenerateTableSql() : string
{
return 'CREATE TABLE test (id SERIAL NOT NULL, test VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id))';
......
......@@ -3,6 +3,7 @@
namespace Doctrine\DBAL\Tests\Platforms;
use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\Platforms\SQLServer2012Platform;
use Doctrine\DBAL\Schema\Column;
use Doctrine\DBAL\Schema\ColumnDiff;
use Doctrine\DBAL\Schema\Index;
......@@ -14,6 +15,9 @@ use Doctrine\DBAL\Types\Type;
abstract class AbstractSQLServerPlatformTestCase extends AbstractPlatformTestCase
{
/** @var SQLServer2012Platform */
protected $platform;
public function getGenerateTableSql() : string
{
return 'CREATE TABLE test (id INT IDENTITY NOT NULL, test NVARCHAR(255), PRIMARY KEY (id))';
......
......@@ -22,6 +22,9 @@ use function uniqid;
class OraclePlatformTest extends AbstractPlatformTestCase
{
/** @var OraclePlatform */
protected $platform;
/**
* @return mixed[][]
*/
......@@ -76,6 +79,9 @@ class OraclePlatformTest extends AbstractPlatformTestCase
$platform->assertValidIdentifier($identifier);
}
/**
* @return OraclePlatform
*/
public function createPlatform() : AbstractPlatform
{
return new OraclePlatform();
......
......@@ -349,14 +349,14 @@ class SQLAnywhere16PlatformTest extends AbstractPlatformTestCase
self::assertEquals(
'CONSTRAINT pk PRIMARY KEY CLUSTERED (a, b)',
$this->platform->getPrimaryKeyDeclarationSQL(
new Index(null, ['a', 'b'], true, true, ['clustered']),
new Index('', ['a', 'b'], true, true, ['clustered']),
'pk'
)
);
self::assertEquals(
'PRIMARY KEY (a, b)',
$this->platform->getPrimaryKeyDeclarationSQL(
new Index(null, ['a', 'b'], true, true)
new Index('', ['a', 'b'], true, true)
)
);
}
......@@ -392,12 +392,12 @@ class SQLAnywhere16PlatformTest extends AbstractPlatformTestCase
'CONSTRAINT unique_constraint UNIQUE CLUSTERED (a, b)',
$this->platform->getUniqueConstraintDeclarationSQL(
'unique_constraint',
new Index(null, ['a', 'b'], true, false, ['clustered'])
new Index('', ['a', 'b'], true, false, ['clustered'])
)
);
self::assertEquals(
'UNIQUE (a, b)',
$this->platform->getUniqueConstraintDeclarationSQL(null, new Index(null, ['a', 'b'], true, false))
$this->platform->getUniqueConstraintDeclarationSQL('', new Index('', ['a', 'b'], true, false))
);
}
......@@ -621,6 +621,9 @@ class SQLAnywhere16PlatformTest extends AbstractPlatformTestCase
));
}
/**
* @psalm-suppress InvalidArgument
*/
public function testCannotGenerateDropIndexSQLWithInvalidIndexParameter() : void
{
$this->expectException(InvalidArgumentException::class);
......@@ -628,6 +631,9 @@ class SQLAnywhere16PlatformTest extends AbstractPlatformTestCase
$this->platform->getDropIndexSQL(['index'], 'table');
}
/**
* @psalm-suppress InvalidArgument
*/
public function testCannotGenerateDropIndexSQLWithInvalidTableParameter() : void
{
$this->expectException(InvalidArgumentException::class);
......@@ -700,7 +706,7 @@ class SQLAnywhere16PlatformTest extends AbstractPlatformTestCase
self::assertEquals(
"REVERSE(SUBSTR(REVERSE(SUBSTR(column, PATINDEX('%[^' + c + ']%', column))), PATINDEX('%[^' + c + ']%', " .
"REVERSE(SUBSTR(column, PATINDEX('%[^' + c + ']%', column))))))",
$this->platform->getTrimExpression('column', null, 'c')
$this->platform->getTrimExpression('column', TrimMode::UNSPECIFIED, 'c')
);
self::assertEquals(
"REVERSE(SUBSTR(REVERSE(SUBSTR(column, PATINDEX('%[^' + c + ']%', column))), PATINDEX('%[^' + c + ']%', " .
......@@ -922,7 +928,7 @@ class SQLAnywhere16PlatformTest extends AbstractPlatformTestCase
);
self::assertEquals(
'SELECT sequence_name, increment_by, start_with, min_value FROM SYS.SYSSEQUENCE',
$this->platform->getListSequencesSQL(null)
$this->platform->getListSequencesSQL('')
);
}
......
......@@ -13,6 +13,12 @@ use Doctrine\DBAL\Types\Type;
class SqlitePlatformTest extends AbstractPlatformTestCase
{
/** @var SqlitePlatform */
protected $platform;
/**
* @return SqlitePlatform
*/
public function createPlatform() : AbstractPlatform
{
return new SqlitePlatform();
......
......@@ -872,6 +872,7 @@ class ComparatorTest extends TestCase
/**
* @group DBAL-106
* @psalm-suppress NullArgument
*/
public function testDiffDecimalWithNullPrecision() : void
{
......
......@@ -10,6 +10,7 @@ use Doctrine\DBAL\Platforms\MySqlPlatform;
use Doctrine\DBAL\Schema\AbstractSchemaManager;
use Doctrine\DBAL\Schema\ForeignKeyConstraint;
use Doctrine\DBAL\Schema\MySqlSchemaManager;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use function array_map;
......@@ -18,7 +19,7 @@ class MySqlSchemaManagerTest extends TestCase
/** @var AbstractSchemaManager */
private $manager;
/** @var Connection */
/** @var Connection&MockObject */
private $conn;
protected function setUp() : void
......
......@@ -12,18 +12,18 @@ use Doctrine\DBAL\Logging\SQLLogger;
use Doctrine\DBAL\ParameterType;
use Doctrine\DBAL\Statement;
use Exception;
use PDOStatement;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
class StatementTest extends TestCase
{
/** @var Connection */
/** @var Connection&MockObject */
private $conn;
/** @var Configuration */
/** @var Configuration&MockObject */
private $configuration;
/** @var PDOStatement */
/** @var DriverStatement&MockObject */
private $driverStatement;
protected function setUp() : void
......
......@@ -6,6 +6,7 @@ use Doctrine\DBAL\Connection;
use Doctrine\DBAL\Tools\Console\Command\RunSqlCommand;
use Doctrine\DBAL\Tools\Console\ConsoleRunner;
use LogicException;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use RuntimeException;
use Symfony\Component\Console\Application;
......@@ -18,7 +19,7 @@ class RunSqlCommandTest extends TestCase
/** @var RunSqlCommand */
private $command;
/** @var Connection */
/** @var Connection&MockObject */
private $connectionMock;
protected function setUp() : void
......
......@@ -19,7 +19,7 @@ class TypeTest extends TestCase
}
/**
* @return string[][]
* @return iterable<string[]>
*/
public function defaultTypesProvider() : iterable
{
......@@ -28,7 +28,10 @@ class TypeTest extends TestCase
continue;
}
yield [$constant->getValue()];
$constantValue = $constant->getValue();
self::assertIsString($constantValue);
yield [$constantValue];
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment