laminas / laminas-continuous-integration-action Goto Github PK
View Code? Open in Web Editor NEWGitHub Action for running a QA check
License: BSD 3-Clause "New" or "Revised" License
GitHub Action for running a QA check
License: BSD 3-Clause "New" or "Revised" License
Q | A |
---|---|
Version(s) | 1..4.0 |
The wrong container prefix, "laminas-ci-matrix", is used in the build and push containers workflow.
It should be "laminas-continuous-integration".
Q | A |
---|---|
New Feature | yes |
The CI matrix generates jobs which do not depend on PHP and therefore do not need installed composer dependencies.
I'd love to implement a JOB flag which tells the container to not install composer dependencies.
i.e. requiresComposerDependencies
or something else.
Refs:
Me too, we could add more details on how to build and use this locally in a future PR ππΌ
Originally posted by @boesing in #18 (comment)
See sebastianbergmann/php-code-coverage#945
According to upstream maintainers, phpdbg
coverage support is not really maintained, and we should therefore migrate away from it.
We will likely need to ship pcov
with our container, and use that for running tests.
We may also need to remove phpdbg
, since running phpdbg
with pcov
installed leads to segfaults.
Q | A |
---|---|
Version(s) | 1.26 |
The list of supported PHP versions does not include PHP 8.2.
Also not 100% sure if all extensions listed in the README.md
are installed for PHP 8.2, might need a double check.
Q | A |
---|---|
Version(s) | 1.7.1 |
Sometimes, environment variables seem to get lost.
COMPOSER_ROOT_VERSION
is set during pre-install.sh
by one of the shell scripts using "the github way".
https://github.com/laminas/laminas-cache-storage-adapter-blackhole/runs/2470602165?check_suite_focus=true#step:3:19
"The github way" means: https://github.com/laminas/laminas-cache-storage-adapter-blackhole/blob/fe7bb4045fae6a71f8179744829aab6ddf47521e/.laminas-ci/composer-root-version.sh#L28
Sometimes, builds are failing and sometimes, builds work as expected.
I am not 100% sure but I wonder if there is something in this action which causes problems with the environment variables.
TBH, I don't know. I've used this way in almost all storage adapters. Sometime it worked as it should and sometimes I had issues.
Composer is always able to resolve the dependency tree due to the fact that COMPOSER_ROOT_VERSION
ENV variable is available by the file stored in $GITHUB_ENV
.
(From shivammathur/setup-php#450, which applies here too.)
Hi, currently this GA leverages OndΕej SurΓ½ repositories (https://deb.sury.org/), which select and use the php.ini-production
config from php-src
, which sets for example error_reporting
to E_ALL & ~E_DEPRECATED & ~E_STRICT
instead of E_ALL
:
$ docker run --rm -it --entrypoint /bin/bash ghcr.io/laminas/laminas-continuous-integration:1.7.1
root@372e50e97cc6:/# grep -rn ^error_reporting /etc/php/
/etc/php/5.6/cli/php.ini:449:error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
/etc/php/7.4/cli/php.ini:465:error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
/etc/php/7.1/cli/php.ini:460:error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
/etc/php/7.0/cli/php.ini:445:error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
/etc/php/8.0/cli/php.ini:486:error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
/etc/php/7.2/cli/php.ini:457:error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
/etc/php/7.3/cli/php.ini:457:error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
But as a Continuous Integration services, it would be preferable to have the php.ini-development
one.
Here's the full diff for PHP 8.0 between the two. You can see that all the differences are worthy for a CI environment:
--- php.ini-production 2021-04-30 09:12:53.773278488 +0200
+++ php.ini-development 2021-04-30 09:12:57.181308089 +0200
@@ -83,7 +83,7 @@
; development version only in development environments, as errors shown to
; application users can inadvertently leak otherwise secure information.
-; This is the php.ini-production INI file.
+; This is the php.ini-development INI file.
;;;;;;;;;;;;;;;;;;;
; Quick Reference ;
@@ -376,7 +376,7 @@
; Default Value: Off
; Development Value: Off
; Production Value: On
-zend.exception_ignore_args = On
+zend.exception_ignore_args = Off
; Allows setting the maximum string length in an argument of a stringified stack trace
; to a value between 0 and 1000000.
@@ -384,9 +384,7 @@
; Default Value: 15
; Development Value: 15
; Production Value: 0
-; In production, it is recommended to set this to 0 to reduce the output
-; of sensitive information in stack traces.
-zend.exception_string_param_max_len = 0
+zend.exception_string_param_max_len = 15
;;;;;;;;;;;;;;;;;
; Miscellaneous ;
@@ -483,7 +481,7 @@
; Development Value: E_ALL
; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT
; http://php.net/error-reporting
-error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
+error_reporting = E_ALL
; This directive controls whether or not and where PHP will output errors,
; notices and warnings too. Error output is very useful during development, but
@@ -500,7 +498,7 @@
; Development Value: On
; Production Value: Off
; http://php.net/display-errors
-display_errors = Off
+display_errors = On
; The display of errors which occur during PHP's startup sequence are handled
; separately from display_errors. We strongly recommend you set this to 'off'
@@ -509,7 +507,7 @@
; Development Value: On
; Production Value: Off
; http://php.net/display-startup-errors
-display_startup_errors = Off
+display_startup_errors = On
; Besides displaying errors, PHP can also log errors to locations such as a
; server-specific log, STDERR, or a location specified by the error_log
@@ -1199,7 +1197,7 @@
; Enable / Disable collection of memory usage statistics by mysqlnd which can be
; used to tune and monitor MySQL operations.
-mysqlnd.collect_memory_statistics = Off
+mysqlnd.collect_memory_statistics = On
; Records communication from all extensions using mysqlnd to the specified log
; file.
@@ -1572,7 +1570,7 @@
; Development Value: 1
; Production Value: -1
; http://php.net/zend.assertions
-zend.assertions = -1
+zend.assertions = 1
; Assert(expr); active by default.
; http://php.net/assert.active
@@ -1882,7 +1880,7 @@
; Enables or disables copying of PHP code (text segment) into HUGE PAGES.
; This should improve performance, but requires appropriate OS configuration.
-;opcache.huge_code_pages=1
+;opcache.huge_code_pages=0
; Validate cached file permissions.
;opcache.validate_permission=0
Q | A |
---|---|
Version(s) | 1.33.x |
When trying to build the container, I get the error mentioned in the title.
33.00 Reading package lists...
33.38 Building dependency tree...
33.46 Reading state information...
33.47 E: Unable to locate package msodbcsql17
The current builds seem to pass due to build caching. Not 100% sure about it as I am still very newbish when it comes to these kind of details.
Package seems to be available:
https://packages.microsoft.com/ubuntu/22.04/prod/pool/main/m/msodbcsql17/
docker build . -t laminas/laminas-continuous-integration-action:latest
Ensure you have caches flushed.
Build is passing.
Q | A |
---|---|
Proposed Version(s) | ? |
BC Break? | No |
We want to verify that the tests accompanying a source change do validate the source change.
This was discussed with @ondrejmirtes in private chat.
When receiving a source change, the accompanying tests must be verified for their quality.
In order to do that, we could:
composer.json
paths) to their pre-patch statecomposer.lock
changed together with the tests?Q | A |
---|---|
New Feature | yes |
BC Break | no |
Composer shows the warning that there is no 7z
or unzip
command available. Therefore, composer uses the PHP zip
extension to unzip downloaded artifacts.
To speed up the installation of composer dependencies, we could simply add zip
to the packages to install while building the container.
Package operations: 86 installs, 0 updates, 0 removals
As there is no 'unzip' nor '7z' command installed zip files are being unpacked using the PHP zip extension.
This may cause invalid reports of corrupted archives. Besides, any UNIX permissions (e.g. executable) defined in the archives will be lost.
Installing 'unzip' or '7z' (21.01+) may remediate them.
Q | A |
---|---|
New Feature | yes |
RFC | yes |
BC Break | no |
With #24, I somehow added invalid syntax which wasn't detected during review.
To avoid having such problem again, I'd like to add something ShellCheck to the CI of this repository (which does not have any till yet) as well as for all other projects which are using the laminas CI tooling.
Not sure if there are better tools to verify the syntax of bash scripts, so feedback is welcome.
Q | A |
---|---|
Version(s) | 1.35.0 |
When trying to install packages via pecl
, the phpize
step is already failing due to missing files.
running: phpize
Configuring for:
PHP Api Version: 20230831
Zend Module Api No: 20230831
Zend Extension Api No: 420230831
cp: cannot stat 'shtool': No such file or directory
cp: cannot stat 'config.guess': No such file or directory
cp: cannot stat 'config.sub': No such file or directory
cp: cannot stat 'ltmain.sh': No such file or directory
chmod: cannot access '/tmp/pear/temp/igbinary/build/shtool': No such file or directory
shtool at '/tmp/pear/temp/igbinary/build/shtool' does not exist or is not executable.
Make sure that the file exists and is executable and then rerun this script.
Try to install any package (for example igbinary
)
Pecl installation works as expected.
Ref: https://github.com/laminas/laminas-serializer/actions/runs/6370868652/job/17292320144?pr=49
Ref: oerdnj/deb.sury.org#2025
Q | A |
---|---|
Version(s) | 1.11.4 |
When running infection/infection
with this action, relatively low memory limits are hit in this job:
An example is visible at https://github.com/Roave/BackwardCompatibilityCheck/runs/4634739860?check_suite_focus=true#step:3:479
[PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 8192 bytes) in /github/workspace/vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php on line 69]
134217728
is 128Mb
, which is something that is prohibitively low for PHP: we should really use -dmemory_limit=-1
here π€
Q | A |
---|---|
New Feature | yes |
This issue is used to generate proper release notes.
With the upcoming release, we are bumping all PHP versions and tools.
I'm having some issues with adding ini values to .laminas-ci.json
- I can't figure out why, but it appears that all the ini values are getting joined to a single line with spaces instead of a new line.
With some test json, running the below on my local machine does exactly what it's supposed to - each element is joined with \n as you'd expect, but still I have "Syntax error, unexpected =" when PHP parses the 99-settings.ini in CI.
So far, I've tried
cat path/to/99-settings.ini
to inspect the .ini file to verify the issueI can see that the matrix action is sending sane JSON with a prepended memory_limit=-1
and everything was working fine just a few day ago π€·ββοΈ
Q | A |
---|---|
New Feature | yes |
RFC | no |
BC Break | yes |
This issue is mostly to keep the 2.0.0
milestone open until this cleanup is handled :-)
Reference: https://github.com/laminas/laminas-cache/pull/72/checks?check_run_id=2149498850
Running ./vendor/bin/psalm --shepherd --stats --output-format=github --no-cache
Uncaught RuntimeException: PHP Error: Could not create cache directory: /github/home/.cache/psalm/99f877ecb53c330fe5ee0da5591b3ff0311fa525 in /github/workspace/vendor/vimeo/psalm/src/Psalm/Config.php:803 in /github/workspace/vendor/vimeo/psalm/src/Psalm/Internal/ErrorHandler.php:66
Q | A |
---|---|
New Feature | yes |
RFC | yes |
BC Break | no |
Psalm baseline feature has a significant downside that it could allow reported issues to be silenced without proper review or consideration.
Extra care is required to review baseline diff and while added entries might look innocuous enough they might be pointing at a real problem visible in context.
Proper review currently requires checking component locally, resetting the baseline changes and then running the psalm. Occasionally due to runtime PHP version differences psalm will report differently which further complicates review.
I suggest we introduce two new additional psalm jobs.
No failure psalm job that would checkout targeted branch baseline to run against with the exception of explicitly ignoring unused baseline entries.
This job would be an important review tool that would allow to see exactly which problems were baselined by a given PR without having to guess from baseline diff or having to checkout code and run psalm locally.
I think this job should report found errors as check annotations on the PR as well, although with reduced severity - notice instead of error.
Check annotations with the current beta feature are shown in context even for files that were not directly changed by the PR. This allows to view error in context without having to navigate to the code in a separate tab.
To distinguish real psalm errors from baselined errors this job should rewrite github formatted psalm output to report as Notice instead of Warning or Error. Custom output formatter would be right way to do it but simple sed will work just as fine, until and unless github changes format.
See GHA docs: Setting a notice message and Psalm GithubActionsReport formatter
In slack discussion @Ocramius expressed skepticism about usefulness of annotations on pull request Files Changed tab over the visual noise they create. I believe annotations should be utilized for a couple reasons:
No failure --ignore-baseline
run with default output formater that would not show in PR as failure or as PR annotations.
This job would allow to see in action log exactly which issues are currently baselined.
Bonus points for reporting total number of errors found as check notice message to be displayed as annotation on PR with something like 152 baselined psalm errors found
. The way github shows annotations with "View workflow job for this annotation" button would serve as a way to increase awareness for contributors and link directly at reported baselined errors without getting in the way.
Q | A |
---|---|
Version(s) | 1.19.1 |
Some unit tests started failing on PHP 8.1 due to some weird type-issues in the memcached extension.
This was fixed 2 weeks ago with the release of v3.2.0.
Tests are failing due to a type-mismatch:
1) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testBasicUsage
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:89
2) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testGetItem
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:162
3) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testGetItems
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:189
4) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testHasItem
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:247
5) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testClear
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:264
6) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testDeleteItem
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:297
7) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testDeleteItems
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:317
8) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testSave
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:343
9) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testSaveExpired
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:358
10) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testSaveWithoutExpire
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:373
11) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testDeferredSave
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:281
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:403
12) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testDeferredSaveWithoutCommit
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:281
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:70
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:453
13) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testCommit
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:281
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:479
14) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testExpiration
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:[500](https://github.com/laminas/laminas-cache-storage-adapter-memcached/runs/5694632631?check_suite_focus=true#step:4:500)
15) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testExpiresAt
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:[517](https://github.com/laminas/laminas-cache-storage-adapter-memcached/runs/5694632631?check_suite_focus=true#step:4:517)
16) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testExpiresAtWithNull
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:[532](https://github.com/laminas/laminas-cache-storage-adapter-memcached/runs/5694632631?check_suite_focus=true#step:4:532)
17) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testExpiresAfterWithNull
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:547
18) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testKeyLength
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:562
19) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testDataTypeString
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:640
20) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testDataTypeInteger
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:655
21) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testDataTypeNull
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:670
22) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testDataTypeFloat
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:688
23) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testDataTypeBoolean
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:704
24) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testDataTypeArray
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:721
25) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testDataTypeObject
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:739
26) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testBinaryData
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:760
27) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testIsHit
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:774
28) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testIsHitDeferred
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:281
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:794
29) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testSaveDeferredWhenChangingValues
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:281
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:815
30) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testSaveDeferredOverwrite
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:281
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:837
31) LaminasTest\Cache\Storage\Adapter\Psr\CacheItemPool\MemcachedIntegrationTest::testSavingObject
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:421
/github/workspace/vendor/laminas/laminas-cache/src/Psr/CacheItemPool/CacheItemPoolDecorator.php:236
/github/workspace/vendor/cache/integration-tests/src/CachePoolTest.php:850
32) LaminasTest\Cache\Storage\Adapter\Psr\SimpleCache\MemcachedIntegrationTest::testSetMultiple
Laminas\Cache\Psr\SimpleCache\SimpleCacheException: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:323
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:243
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:252
Caused by
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:241
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:252
33) LaminasTest\Cache\Storage\Adapter\Psr\SimpleCache\MemcachedIntegrationTest::testSetMultipleWithIntegerArrayKey
Laminas\Cache\Psr\SimpleCache\SimpleCacheException: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:323
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:243
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:264
Caused by
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:241
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:264
34) LaminasTest\Cache\Storage\Adapter\Psr\SimpleCache\MemcachedIntegrationTest::testSetMultipleTtl
Laminas\Cache\Psr\SimpleCache\SimpleCacheException: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:323
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:243
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:278
Caused by
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:241
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:278
35) LaminasTest\Cache\Storage\Adapter\Psr\SimpleCache\MemcachedIntegrationTest::testSetMultipleWithGenerator
Laminas\Cache\Psr\SimpleCache\SimpleCacheException: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:323
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:243
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:313
Caused by
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:241
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:313
36) LaminasTest\Cache\Storage\Adapter\Psr\SimpleCache\MemcachedIntegrationTest::testSetMultipleValidKeys with data set #0 ('AbC19_.')
Laminas\Cache\Psr\SimpleCache\SimpleCacheException: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:323
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:243
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:721
Caused by
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:241
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:721
37) LaminasTest\Cache\Storage\Adapter\Psr\SimpleCache\MemcachedIntegrationTest::testSetMultipleValidKeys with data set #1 ('12345678901234567890123456789...901234')
Laminas\Cache\Psr\SimpleCache\SimpleCacheException: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:323
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:243
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:721
Caused by
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:241
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:721
38) LaminasTest\Cache\Storage\Adapter\Psr\SimpleCache\MemcachedIntegrationTest::testSetMultipleValidData with data set #0 ('AbC19_.')
Laminas\Cache\Psr\SimpleCache\SimpleCacheException: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:323
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:243
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:754
Caused by
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:241
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:754
39) LaminasTest\Cache\Storage\Adapter\Psr\SimpleCache\MemcachedIntegrationTest::testSetMultipleValidData with data set #1 (4711)
Laminas\Cache\Psr\SimpleCache\SimpleCacheException: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:323
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:243
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:754
Caused by
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:241
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:754
40) LaminasTest\Cache\Storage\Adapter\Psr\SimpleCache\MemcachedIntegrationTest::testSetMultipleValidData with data set #2 (47.11)
Laminas\Cache\Psr\SimpleCache\SimpleCacheException: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:323
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:243
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:754
Caused by
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:241
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:754
41) LaminasTest\Cache\Storage\Adapter\Psr\SimpleCache\MemcachedIntegrationTest::testSetMultipleValidData with data set #3 (true)
Laminas\Cache\Psr\SimpleCache\SimpleCacheException: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:323
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:243
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:754
Caused by
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:241
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:754
42) LaminasTest\Cache\Storage\Adapter\Psr\SimpleCache\MemcachedIntegrationTest::testSetMultipleValidData with data set #4 (null)
Laminas\Cache\Psr\SimpleCache\SimpleCacheException: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:323
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:243
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:754
Caused by
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:241
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:754
43) LaminasTest\Cache\Storage\Adapter\Psr\SimpleCache\MemcachedIntegrationTest::testSetMultipleValidData with data set #5 (array('value'))
Laminas\Cache\Psr\SimpleCache\SimpleCacheException: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:323
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:243
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:754
Caused by
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:241
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:754
44) LaminasTest\Cache\Storage\Adapter\Psr\SimpleCache\MemcachedIntegrationTest::testSetMultipleValidData with data set #6 (stdClass Object ())
Laminas\Cache\Psr\SimpleCache\SimpleCacheException: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:323
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:243
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:754
Caused by
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache/src/Psr/SimpleCache/SimpleCacheDecorator.php:241
/github/workspace/vendor/cache/integration-tests/src/SimpleCacheTest.php:754
45) LaminasTest\Cache\Storage\Adapter\MemcachedTest::testGetMetadatas
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache-storage-adapter-test/src/AbstractCommonAdapterTest.php:419
46) LaminasTest\Cache\Storage\Adapter\MemcachedTest::testGetMetadatasWithEmptyNamespace
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache-storage-adapter-test/src/AbstractCommonAdapterTest.php:419
/github/workspace/vendor/laminas/laminas-cache-storage-adapter-test/src/AbstractCommonAdapterTest.php:440
47) LaminasTest\Cache\Storage\Adapter\MemcachedTest::testSetGetHasAndRemoveItemsWithoutNamespace
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache-storage-adapter-test/src/AbstractCommonAdapterTest.php:474
48) LaminasTest\Cache\Storage\Adapter\MemcachedTest::testSetGetHasAndRemoveItemsWithNamespace
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache-storage-adapter-test/src/AbstractCommonAdapterTest.php:[544](https://github.com/laminas/laminas-cache-storage-adapter-memcached/runs/5694632631?check_suite_focus=true#step:4:544)
49) LaminasTest\Cache\Storage\Adapter\MemcachedTest::testSetAndGetExpiredItems
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache-storage-adapter-test/src/AbstractCommonAdapterTest.php:[636](https://github.com/laminas/laminas-cache-storage-adapter-memcached/runs/5694632631?check_suite_focus=true#step:4:636)
50) LaminasTest\Cache\Storage\Adapter\MemcachedTest::testCheckAndSetItem
TypeError: Memcached::cas(): Argument #4 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:416
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:989
/github/workspace/vendor/laminas/laminas-cache-storage-adapter-test/src/AbstractCommonAdapterTest.php:848
51) LaminasTest\Cache\Storage\Adapter\MemcachedTest::testSetAndIncrementItems
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:[716](https://github.com/laminas/laminas-cache-storage-adapter-memcached/runs/5694632631?check_suite_focus=true#step:4:716)
/github/workspace/vendor/laminas/laminas-cache-storage-adapter-test/src/AbstractCommonAdapterTest.php:[881](https://github.com/laminas/laminas-cache-storage-adapter-memcached/runs/5694632631?check_suite_focus=true#step:4:881)
52) LaminasTest\Cache\Storage\Adapter\MemcachedTest::testSetAndDecrementItems
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache-storage-adapter-test/src/AbstractCommonAdapterTest.php:[950](https://github.com/laminas/laminas-cache-storage-adapter-memcached/runs/5694632631?check_suite_focus=true#step:4:950)
53) LaminasTest\Cache\Storage\Adapter\MemcachedTest::testFlush
TypeError: Memcached::setMulti(): Argument #2 ($expiration) must be of type int, int given
/github/workspace/src/Memcached.php:348
/github/workspace/vendor/laminas/laminas-cache/src/Storage/Adapter/AbstractAdapter.php:716
/github/workspace/vendor/laminas/laminas-cache-storage-adapter-test/src/AbstractCommonAdapterTest.php:1070
Run CI pipeline for laminas/laminas-cache-storage-adapter-memcached
.
At least those issues related to the php-memcached-dev/php-memcached#496 issue are solved.
The ShellCheck CI step of this component can not display check errors in Pull Requests due missing permission for Reviews
for the GITHUB_TOKEN which is being passed to the action.
Q | A |
---|---|
New Feature | yes |
RFC | yes |
BC Break | yes |
See laminas/laminas-form#87: I struggled to run markdownlint-cli2
locally as I don't want node
to mess up my computer. At the end I used a lightweight version of the Dockerfile
for the purpose:
cat <<EOF > Dockerfile
FROM node:current
RUN npm install -g markdownlint-cli2
RUN ln -s /usr/local/bin/markdownlint-cli2 /usr/local/bin/markdownlint
COPY etc-markdownlint.json /.markdownlint.json
EOF
docker build -t mdlint .
docker run -it --rm -v "$PWD/docs":"/docs" mdlint /usr/local/bin/markdownlint-cli2-fix docs/book/**/*.md
And had some joey, but we should also provide something to fix code snippets inside doc according to Laminas coding standards, see laminas/laminas-form#87 (comment)
Q | A |
---|---|
Version(s) | latest |
If you have pcov
setup as an extension and you've also got infection setup, the infection run dies on sig 11.
Removing pcov as a required extension makes infection run normally - I guess pcov and phpdbg don't play nicely together.
If you need pcov for you project, this is a bit of pain because you can't opt-out of the infection run and write your own workflow without phpdbg because the run is triggered by the infection.json file.
In my case, I'm just gonna make do without pcov. Perhaps this is just a documentation issue. If so, it wold also be worth providing some helpful setup pointers for infection configuration WRT running this action successfully.
Q | A |
---|---|
Version(s) | 1.16.0 |
With the optimization of this container, the make
command started to be missing which was available previously. It was used by at least laminas-cache-storage-adapter-apcu
to install the APCu extension from source and is primarily used by pecl
to install PHP extensions.
make: command not found
max@maxbookpro [~]
β docker run -it --entrypoint /bin/bash ghcr.io/laminas/laminas-continuous-integration:1.15 -c "make --version"
GNU Make 4.2.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
max@maxbookpro [~]
β docker run -it --entrypoint /bin/bash ghcr.io/laminas/laminas-continuous-integration:1.16 -c "make --version"
/bin/bash: make: command not found
I'd expect make and stuff be available so that pecl
can actually run OOTB without additional packages to be installed. I've thought that adding php-pear
would be enough but it seems that it has no hard dependency on make
.
max@maxbookpro [~]
β docker run -it --entrypoint /bin/bash ghcr.io/laminas/laminas-continuous-integration:1.15 -c "make --version"
GNU Make 4.2.1
Built for x86_64-pc-linux-gnu
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Composer runs with unexpected default argument --prefer-dist
.
Q | A |
---|---|
Version(s) | 1.24.0 |
composer runs with --prefer-dist
, which seems to be overriding configuration given in composer.json (preferred-install)
Composer seems to run with --prefer-dist as argument. This seems save as that is the stated default.
https://github.com/laminas/laminas-continuous-integration-action/blob/1.25.x/entrypoint.sh#L89
However adding this option will result in installing all packages with prefer source even if one configures via composer.json to prefer source for a specific package.
"config": {
"preferred-install": {
"my-org/*": "source"
}
}
see https://github.com/basz/standard-projections/runs/8186520753 for an example of this.
Resulting in a missing test files from a different repo from the same org.
https://github.com/basz/standard-projections/runs/8186520753?check_suite_focus=true#step:3:457
A work-around is to add --prefer-source as additional argument which overrides --prefer-dist
, but that becomes slow pretty.
Composer should install with a minimum of assumptions and let end users choose additional arguments. I would expect --prefer-dist not be added as a default.
Q | A |
---|---|
New Feature | yes |
BC Break | maybe |
In mezzio/mezzio-skeleton#54 we found out, that the project is not tested at all. This is due to the fact that it provides pre-install-cmd
script to interact with a potential user when using composer create-project
.
After the project finishes up installing the user-requested packages, it cleans-up the project which also removes the unit tests which are related to the component (as it is not needed in created projects).
This is due to the fact, that composer does not pass --no-scripts
when composer install
(e.g.) is being executed.
I would like to request either to add --no-scripts
to the COMPOSER_ARGS
or to add a way to provide additional (or exclusive) COMPOSER_ARGS
to the JOB which overrule the existing COMPOSER_ARGS
.
Feedback is very welcome.
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
These updates await pending status checks before automerging. Click on a checkbox to abort the branch automerge, and create a PR instead.
These updates have all been created already. Click a checkbox below to force a retry/rebase of any.
composer.json
roave/backward-compatibility-check ^8.3
staabm/annotate-pull-request-from-checkstyle ^1.8
Dockerfile
ubuntu 22.04
composer 2.7.7
.github/workflows/build-and-push-containers.yml
actions/checkout v4
docker/setup-buildx-action v3
docker/login-action v3
docker/metadata-action v5
docker/build-push-action v5
.github/workflows/create-additional-action-tags.yml
actions/checkout v4
.github/workflows/release-on-milestone-closed.yml
actions/checkout v4
laminas/automatic-releases v1
laminas/automatic-releases v1
laminas/automatic-releases v1
laminas/automatic-releases v1
laminas/automatic-releases v1
.github/workflows/shellcheck.yml
actions/checkout v4
reviewdog/action-shellcheck v1
setup/markdownlint/package.json
markdownlint-cli2 0.13.0
Beside the Markdown linting it would be great if we can check all the links in the Markdown files.
Q | A |
---|---|
New Feature | yes |
BC Break | no |
A potential candidate would be markdown-link-check which can be installed via npm.
Q | A |
---|---|
New Feature | yes |
As of now, stable PHP version in this container is PHP 7.4.
Since 7.4 is moved to EOL on 2022-11-28, we should modify the default PHP version in this container to PHP 8.0 as new stable.
The change will most likely have no impact on this repository at all since every job MUST provide the PHP version anyways. So the change is more a minor change.
I will also create an issue in the matrix container as we have to modify the change there as well.
Q | A |
---|---|
New Feature | yes |
RFC | yes |
BC Break | no |
Our CI runs often run infection/infection
, which is memory-intensive (unavoidable).
I think that setting a memory limit is an artificial limitation that is already well enforced by the GitHub Actions infrastructure (should we hit it): we should probably have memory_limit=-1
by default.
A memory limit enforced PHP-side doesn't give us any advantage, since it's mostly detrimental in non-web contexts anyway (and should be managed by a supervisor process anyway).
Q | A |
---|---|
New Feature | yes |
RFC | no |
BC Break | no |
Composer with v2.2 released support for ignoring upper bounds of platform requirements.
To do so, adding the +
suffix to the platform requirement will suffice.
This is quite useful, since --ignore-platform-req=php
will mostly ignore any dependency and thus, depending on the constraint ranges, will also allow older PHP versions which weren't supported previously. This must not be related to laminas components but since laminas does sometimes use transitive dependencies, these dependencies could have a more wider range of supported PHP versions which then might install dependencies in case of --prefer-lowest
which do definitely not support the latest PHP version we are actually trying to test.
--ignore-platform-req: ignore a specific platform requirement(php, hhvm, lib-* and ext-*) and force the installation even if the local machine does not fulfill it. Multiple requirements can be ignored via wildcard. Appending a + makes it only ignore the upper-bound of the requirements. For example, if a package requires php: ^7, then the option --ignore-platform-req=php+ would allow installing on PHP 8, but installation on PHP 5.6 would still fail.
any one can Update sqlsrv extension to PHP 8.3 support
Originally posted by @Asaad-AlSharif in #175 (comment)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.