* Added testing with SSL connection
* Update CHANGELOG.md
* Revert changes
* Codestyle fixes
* Add version restriction
* Fixed issue with connecting to SSL port to check redis version
* Mark tests as relay-incompatible
* Codestyle fixes
* Enable stack and cluster tests on 3 latest API versions
* Changed type to string
* Fixed stack tests run against Redis 8.0
* Marked tests as incompatible with 8.0
* Marked more tests as incompatible
* Marked test as incompatible qwith 8.0
* Enable stack and cluster tests for certain PHP versions
* Restrict test to version Redis > 6.2
* Fixed version
* Override stack port for coverage test case
* Added test case for FT.EXPLAIN with dialect 2
* Added additional argument
* Added test cases for new INT8 and UINT8 vectors
* Added support for redis gears trigger function commands
* Exclude gears tests from relay connection tests
* Codestyle fixes
* Added missing test coverage
* Updated method description
* Use redis-stack:edge image istead of separate container
* Updated RESP3 modules responses
* Removed redundant constants
* Added additional timeout to make sure that index was created
* Marked test as relay-incompatible
* Mark tests as relay-incompatible
* Mark tests as relay-incompatible
* Increase timeout after index creation
* Added support for trigger functions command run against OSS cluster
* Mark gears cluster tests with appropriate annotation
* Marked with cluster annotation
* Codestyle fixes
* Removed refresh cluster on connection, moved to refresh manually in tests
* Removed redundant test
* Updated README, added comments with README references
* Revert "Marked test as relay-incompatible"
This reverts commit d888968b7b.
* Revert changes
* Revert "Mark tests as relay-incompatible"
This reverts commit 7d34370c6b.
* Revert "Updated RESP3 modules responses"
This reverts commit 5cf122ad71.
* Removed latest image
* Updated RESP3 modules responses (#4)
* Marked tests as relay-incompatible (#3)
* Marked test as relay-incompatible
* Mark tests as relay-incompatible
* Mark tests as relay-incompatible
* Changed tests group for RESP3 not supported tests
* Fixed broken tests
* Removed redundant test
* Marked test as relay-incompatible
* Codestyle fixes
* Updated CHANGELOG.md
* Updated CHANGELOG.md
* Revert php-cs-fixer style changes
---------
Co-authored-by: Chayim <chayim@users.noreply.github.com>
* Changed command arguments (#1330)
* Re-implement CLIENT command as container command (#1337)
* Resolve merge conflicts
* Merge 2.x into main (#1341)
* Codestyle changes related to php-cs-fixer update (#1311)
* Codestyle changes
* Added missing type-hints
* Added GETDEL command to KeyPrefixProcessor (#1306)
* Added GETDEL command to KeyPrefixProcessor
* Added test coverage
* Codestyle fixes
* Added timeout after FT.CREATE call
* Added support for JSON.MERGE command (#1304)
* Added support for JSON.MSET command (#1307)
* Fixed subcommand test bug (#1313)
* Update CHANGELOG.md
* Update CHANGELOG.md
* Fixed bug with incorrect multiple words processing (#1325)
* Fixed bug with incorrect multiple words processing
* Convert subcommand string to lower case
* Update SubcommandStrategyResolver.php
* Added test coverage
* Codestyle fixes
---------
Co-authored-by: Till Krüss <tillkruss@users.noreply.github.com>
* Added support for FUNCTION DUMP, FUNCTION FLUSH, FUNCTION RESTORE commands (#1332)
* Added support for CLIENT NO-EVICT command (#1335)
* Added support for FUNCTION KILL, FUNCTION LIST, FUNCTION STATS commands (#1334)
* Added support for FUNCTION KILL, FUNCTION LIST, FUNCTION STATS commands
* Marked tests as relay-incompatible
* Added support for tests running against redis cluster (#1236)
* Added support for tests running against redis cluster
* Test coverage
* Added comment about master nodes
* Codestyle fix
* Revert changes
* Revert DBNUM
* Added cluster endpoints to relay tests env configuration
* Exclude cluster tests from relay tests environment
* Removed TODO comment
* Changed cluster image version to unstable
* Updated configuration to match unstable cluster
* Fixed path
* Updated cluster CI configuration
* Removed redundant flag
* Removed backslash
* Updated file path
* Updated file path variable
* Added docker cluster initialization as additional step
* Run cluster tests as separate workflow
* Codestyle fixes
* Updated exported files
* Added additional timeout so cluster image could be settled
* Added support for different cluster image, use docker compose for cluster tests CI
* Remove unused flag
* Removed variable from volume path
* Added sleep timeout to allow docker setup after running
* Added timeout before tests run
* Updated linter settings
* Include indent changes for.sh files
* Added missing coverage
* Revert expected files and mark docker folder as exclusion
* Specify folder itself as excluded
* Moved cluster tests as separate job in tests.yml
* Updated name to contain cluster word
---------
Co-authored-by: Chayim <chayim@users.noreply.github.com>
---------
Co-authored-by: Till Krüss <tillkruss@users.noreply.github.com>
Co-authored-by: Chayim <chayim@users.noreply.github.com>
---------
Co-authored-by: Till Krüss <tillkruss@users.noreply.github.com>
Co-authored-by: Chayim <chayim@users.noreply.github.com>
* Add complete CI
* Fix CI
* Fix spelling
* Fix indentation
* Fix CI
* Fix CI
* Revert disabling unit tests
* Add coverage driver to CI
* Start coverage debugging
* Fix debugging
ignored, and an empty message aborts the commit.
* Stop debugging
* Move TODO-s from source to GitHub issues
* Ignore too long lines in certain files
* Revert requiring php-parallel-lint/php-parallel-lint
* formatting
* try shorter formatting
* formatting
* fix syntax
* try two paths?
* Update .editorconfig
Co-authored-by: Viktor Szépe <viktor@szepe.net>
* indentation
* make it a group
Co-authored-by: Till Krüss <tillkruss@users.noreply.github.com>
This change reduces some unnecessary complexity in the library, Redis
commands do not change much after all. Developers can still implement
their own commands factory, inject new commands or override existing
ones. The "profile" client options has been renamed to "commands" and
it accepts instances of Predis\Command\FactoryInterface.
The test suite checks at runtime the version of the running instance
of Redis for integration tests to adapt itself automatically.
Even though tere are no changes between running the test suite against
3.0 and 2.8, we will stick with the current stable Redis version as
the default target and switch to 3.0 as soon as it will be released.
[ci skip]
Redis 3.0 does not really change much in terms of commands (most of
the ones implemented in the "unstable" branch have been backported to
the "2.8" branch after all) aside from a few cluster-related ones, so
we can bump the default version without worries.
Fix also a few bugs found while rewriting the test suite.
In order to be able to run integration tests, the test suite requires
a version of Redis >= 2.4.0.
The units have been splitted into several different groups using
PHPUnit @group annotation to allow developers to enable, disable
and combine certain types of tests. The available groups are:
- disconnected: can run without a Redis server online
- connected: active connection to a Redis server is required
- commands: test dedicated to a specific Redis command
- slow: performs operations that can slow down execution;
A list of the available groups can be obtained by running
phpunit --list-groups
Groups of tests can be disabled or enabled via the XML configuration
file or the standard command-line test runner. Please note that due
to a bug in PHPUnit, older versions ignore the --group option when
the group is excluded in the XML configuration file. Please refer to
http://github.com/sebastianbergmann/phpunit/issues/320 for details
Integration tests in the @connected group check if the command being
tested is defined in the selected server profile (see the value of
the TEST_SERVER_VERSION constant in phpunit.xml). If the command is
not defined in the target server profile, the integration test is
automatically marked as skipped.
We also provide an helper script in the bin directory that can be
used to automatically generate a file with the scheleton of a test
case for a Redis command by specifying the name of the class in the
Predis\Commands namespace. For example, to generate a test case for
SET (represented by the Predis\Commands\StringSet class):
./bin/generate-command-test.php --class=StringSet
The realm of a command is automatically inferred from the name of the
class, but it can be set using the --realm option.
This is especially handy because users can now easily override them without
modifying the source code of the test suite and just by creating a phpunit.xml
file that is automatically picked up by phpunit over the phpunit.xml.dist file
shipped within the repository.