Support » Developing with WordPress » Using PHP Unit and WP-CLI with WordPress

  • Hi, I can’t make it work with WordPress.

    I use: wp scaffold plugin test-plugin and all runs fine.

    Then I use: bash bin/install-wp-tests.sh wp_test_plugin root <password> localhost:8889 (because is Mamp Pro)

    the output:

    
    + install_wp
    + '[' -d /tmp/wordpress/ ']'
    + return
    + install_test_suite
    ++ uname -s
    + [[ Darwin == \D\a\r\w\i\n ]]
    + local 'ioption=-i .bak'
    + '[' '!' -d /tmp/wordpress-tests-lib ']'
    + '[' '!' -f wp-tests-config.php ']'
    + download https://develop.svn.wordpress.org/tags/4.7.3/wp-tests-config-sample.php /tmp/wordpress-tests-lib/wp-tests-config.php
    ++ which curl
    + '[' /usr/bin/curl ']'
    + curl -s https://develop.svn.wordpress.org/tags/4.7.3/wp-tests-config-sample.php
    ++ echo /tmp/wordpress/
    ++ sed 's:/\+$::'
    + WP_CORE_DIR=/tmp/wordpress/
    + sed -i .bak 's:dirname( __FILE__ ) . '\''/src/'\'':'\''/tmp/wordpress//'\'':' /tmp/wordpress-tests-lib/wp-tests-config.php
    + sed -i .bak s/youremptytestdbnamehere/wp_test_plugin/ /tmp/wordpress-tests-lib/wp-tests-config.php
    + sed -i .bak s/yourusernamehere/root/ /tmp/wordpress-tests-lib/wp-tests-config.php
    + sed -i .bak s/yourpasswordhere/root/ /tmp/wordpress-tests-lib/wp-tests-config.php
    + sed -i .bak 's|localhost|localhost:8889|' /tmp/wordpress-tests-lib/wp-tests-config.php
    + install_db
    + '[' false = true ']'
    + PARTS=(${DB_HOST//\:/ })
    + local PARTS
    + local DB_HOSTNAME=localhost
    + local DB_SOCK_OR_PORT=8889
    + local EXTRA=
    + '[' -z localhost ']'
    ++ echo 8889
    ++ grep -e '^[0-9]\{1,\}$'
    + '[' 8889 ']'
    + EXTRA=' --host=localhost --port=8889 --protocol=tcp'
    + mysqladmin create wp_test_plugin --user=root --password=**** --host=localhost --port=8889 --protocol=tcp
    Warning: Using a password on the command line interface can be insecure.
    

    Then I ran: phpunit

    The output:

    
    <!DOCTYPE html>
    <!-- Ticket #11289, IE bug fix: always pad the error page with enough characters such that it is greater than 512 bytes, even after gzip compression abcdefghijklmnopqrstuvwxyz1234567890aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz11223344556677889900abacbcbdcdcededfefegfgfhghgihihjijikjkjlklkmlmlnmnmononpopoqpqprqrqsrsrtstsubcbcdcdedefefgfabcadefbghicjkldmnoepqrfstugvwxhyz1i234j567k890laabmbccnddeoeffpgghqhiirjjksklltmmnunoovppqwqrrxsstytuuzvvw0wxx1yyz2z113223434455666777889890091abc2def3ghi4jkl5mno6pqr7stu8vwx9yz11aab2bcc3dd4ee5ff6gg7hh8ii9j0jk1kl2lmm3nnoo4p5pq6qrr7ss8tt9uuvv0wwx1x2yyzz13aba4cbcb5dcdc6dedfef8egf9gfh0ghg1ihi2hji3jik4jkj5lkl6kml7mln8mnm9ono
    -->
    <html xmlns="http://www.w3.org/1999/xhtml" dir='ltr'>
    <head>
    	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<meta name="viewport" content="width=device-width">
    		<title>WordPress &rsaquo; Error</title>
    	<style type="text/css">
    		html {
    			background: #f1f1f1;
    		}
    		body {
    			background: #fff;
    			color: #444;
    			font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
    			margin: 2em auto;
    			padding: 1em 2em;
    			max-width: 700px;
    			-webkit-box-shadow: 0 1px 3px rgba(0,0,0,0.13);
    			box-shadow: 0 1px 3px rgba(0,0,0,0.13);
    		}
    		h1 {
    			border-bottom: 1px solid #dadada;
    			clear: both;
    			color: #666;
    			font-size: 24px;
    			margin: 30px 0 0 0;
    			padding: 0;
    			padding-bottom: 7px;
    		}
    		#error-page {
    			margin-top: 50px;
    		}
    		#error-page p {
    			font-size: 14px;
    			line-height: 1.5;
    			margin: 25px 0 20px;
    		}
    		#error-page code {
    			font-family: Consolas, Monaco, monospace;
    		}
    		ul li {
    			margin-bottom: 10px;
    			font-size: 14px ;
    		}
    		a {
    			color: #0073aa;
    		}
    		a:hover,
    		a:active {
    			color: #00a0d2;
    		}
    		a:focus {
    			color: #124964;
    		    -webkit-box-shadow:
    		    	0 0 0 1px #5b9dd9,
    				0 0 2px 1px rgba(30, 140, 190, .8);
    		    box-shadow:
    		    	0 0 0 1px #5b9dd9,
    				0 0 2px 1px rgba(30, 140, 190, .8);
    			outline: none;
    		}
    		.button {
    			background: #f7f7f7;
    			border: 1px solid #ccc;
    			color: #555;
    			display: inline-block;
    			text-decoration: none;
    			font-size: 13px;
    			line-height: 26px;
    			height: 28px;
    			margin: 0;
    			padding: 0 10px 1px;
    			cursor: pointer;
    			-webkit-border-radius: 3px;
    			-webkit-appearance: none;
    			border-radius: 3px;
    			white-space: nowrap;
    			-webkit-box-sizing: border-box;
    			-moz-box-sizing:    border-box;
    			box-sizing:         border-box;
    
    			-webkit-box-shadow: 0 1px 0 #ccc;
    			box-shadow: 0 1px 0 #ccc;
    		 	vertical-align: top;
    		}
    
    		.button.button-large {
    			height: 30px;
    			line-height: 28px;
    			padding: 0 12px 2px;
    		}
    
    		.button:hover,
    		.button:focus {
    			background: #fafafa;
    			border-color: #999;
    			color: #23282d;
    		}
    
    		.button:focus  {
    			border-color: #5b9dd9;
    			-webkit-box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
    			box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
    			outline: none;
    		}
    
    		.button:active {
    			background: #eee;
    			border-color: #999;
    		 	-webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
    		 	box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
    		 	-webkit-transform: translateY(1px);
    		 	-ms-transform: translateY(1px);
    		 	transform: translateY(1px);
    		}
    
    			</style>
    </head>
    <body id="error-page">
    	<p><h1>Error establishing a database connection</h1>
    <p>This either means that the username and password information in your <code>wp-config.php</code> file is incorrect or we can’t contact the database server at <code>localhost:8889</code>. This could mean your host’s database server is down.</p>
    <ul>
    <li>Are you sure you have the correct username and password?</li>
    <li>Are you sure that you have typed the correct hostname?</li>
    <li>Are you sure that the database server is running?</li>
    </ul>
    <p>If you’re unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href="https://wordpress.org/support/">WordPress Support Forums</a>.</p>
    </p></body>
    </html>
    Running as single site... To run multisite, use -c tests/phpunit/multisite.xml
    
    Warning: mysqli_real_connect(): (HY000/2002): No such file or directory in /private/tmp/wordpress/wp-includes/wp-db.php on line 1538
    
    Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /private/tmp/wordpress/wp-includes/wp-db.php on line 1568
    
    Warning: mysql_connect(): No such file or directory in /private/tmp/wordpress/wp-includes/wp-db.php on line 1568
    
    wp_die called
    Message : <h1>Error establishing a database connection</h1>
    <p>This either means that the username and password information in your <code>wp-config.php</code> file is incorrect or we can’t contact the database server at <code>localhost:8889</code>. This could mean your host’s database server is down.</p>
    <ul>
    <li>Are you sure you have the correct username and password?</li>
    <li>Are you sure that you have typed the correct hostname?</li>
    <li>Are you sure that the database server is running?</li>
    </ul>
    <p>If you’re unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href="https://wordpress.org/support/">WordPress Support Forums</a>.</p>
    
    Title : 
    
    Warning: Cannot modify header information - headers already sent by (output started at /private/tmp/wordpress-tests-lib/includes/bootstrap.php:62) in /private/tmp/wordpress/wp-includes/pluggable.php on line 1179
    

    I can’t make phpunit work.

    Any suggestion?

    Regards

Viewing 2 replies - 1 through 2 (of 2 total)
  • You have to set global variable WP_TESTS_DIR = <PHP_UNIT_PATH> and set the wp-tests-config.php file

    If you are struggling with wordpress installation and PHPUNIT path, You can download wordpress from https://develop.svn.wordpress.org/trunk/

    After this is setup, no need to run /bin/install-wp-tests.sh file.

    You can now directly run the unit test cases using phpunit command in the plugin root.

    • This reply was modified 5 years, 2 months ago by Arvind Kala.
    Thread Starter Deryck

    (@deryck)

    Hi Arvin,

    Thanks for your great help. With svn download, I can make it work. Anyway, I would like to finally understand what’s happening with the install-wp-tests.sh issue.

    When you refer to WP_TEST_DIR you are talking about changing the path in line 15 in install-wp-tests.sh?

    The wp-tests-config.php needs to be created manually? I ask because there is no such file in the folder after .sh file is launched.

    Apologize for my complete ignorance on the subject. I’m trying to learn about this and understand perfectly the logic behind creating a test with the .sh file after scaffolding with wp-cli. Perhaps there is a tutorial about this or something you can recommend to me.

    Best Regards.

Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Using PHP Unit and WP-CLI with WordPress’ is closed to new replies.