wp-cli / wp-cli-tests

WP-CLI testing framework
MIT License
39 stars 23 forks source link

Directory not empty in (tmp).../wp-cli-test-sqlite-integration-cache/sqlite-database-integration #212

Open BrianHenryIE opened 4 months ago

BrianHenryIE commented 4 months ago

Bug Report

Describe the current, buggy behavior

I went to run a Behat test on a PR I had been working on previously (wp-cli/wp-cli/#5943) and it failed to run with a Directory not empty message:

Warning: rename(/var/folders/84/0kzx05wx0hx82cbpv99r052c0000gp/T/wp-cli-test-sqlite-integration-cache/sqlite-database-integration-2.1.3/,/var/folders/84/0kzx05wx0hx82cbpv99r052c0000gp/T/wp-cli-test-sqlite-integration-cache/sqlite-database-integration/): Directory not empty in /Users/brian.henry/Sites/wp-cli/wp-cli/vendor/wp-cli/wp-cli-tests/src/Context/FeatureContext.php line 372

Describe how other contributors can replicate this bug

I'm unsure.

I removed the directory at /var/folders/84/0kzx05wx0hx82cbpv99r052c0000gp/T/wp-cli-test-sqlite-integration-cache/sqlite-database-integration/ and the test ran successfully, and repeated runs of the same test did not result in the same issue.

I can't see how this happened. This line must have evaluated true: https://github.com/wp-cli/wp-cli-tests/blob/0c5c2e978423605116a75b0a9b6786dd55d338c3/src/Context/FeatureContext.php#L413

Describe what you would expect as the correct outcome

Tests should run.

Let us know what environment you are running this on

OS:     Darwin 23.5.0 Darwin Kernel Version 23.5.0: Wed May  1 20:13:18 PDT 2024; root:xnu-10063.121.3~5/RELEASE_ARM64_T6030 arm64
Shell:  /bin/zsh
PHP binary:     /opt/homebrew/Cellar/php@8.1/8.1.28/bin/php
PHP version:    8.1.28
php.ini used:   /opt/homebrew/etc/php/8.1/php.ini
MySQL binary:   /opt/homebrew/bin/mysql
MySQL version:  mysql  Ver 8.3.0 for macos14.2 on arm64 (Homebrew)
SQL modes:      
WP-CLI root dir:        phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir:      phar://wp-cli.phar/vendor
WP_CLI phar path:       /Users/brian.henry/Sites/wp-cli/wp-cli
WP-CLI packages dir:    
WP-CLI cache dir:       /Users/brian.henry/.wp-cli/cache
WP-CLI global config:   
WP-CLI project config:  
WP-CLI version: 2.10.0

Also tested with PHP 7.4, thinking it was something stricter about 8.1 ā€“ same behaviour.

Provide a possible solution

Probably should just delete the destination directory before using it. It's a temp directory anyway.

Provide additional context/Screenshots

Repeatedly running the same tests three weeks ago was causing no problem.

ernilambar commented 4 months ago

I have also seen this issue a handful of times. I thought this should be fixed upstream. šŸ˜Š

swissspidy commented 4 months ago

Probably should just delete the destination directory before using it. It's a temp directory anyway.

It's been a while since we added the SQLite integration, so fuzzy on the implementation details, but this sounds reasonable.