Skip to content

Commit

Permalink
Add support for CI in a Windows x64 environment. (humbug#232)
Browse files Browse the repository at this point in the history
Implement Appveyor configuration
  • Loading branch information
padraic authored and Marouane TABBABI committed Aug 4, 2017
1 parent c0675e5 commit 545bee0
Show file tree
Hide file tree
Showing 5 changed files with 79 additions and 17 deletions.
67 changes: 67 additions & 0 deletions appveyor.yml
@@ -0,0 +1,67 @@
build: false
platform:
- x64
clone_folder: c:\projects\workspace

environment:
matrix:
#- dependencies: lowest
# php_ver_target: 7.0
- dependencies: highest
php_ver_target: 7.0
#- dependencies: lowest
# php_ver_target: 7.1
- dependencies: highest
php_ver_target: 7.1

cache: # cache is cleared when linked file is modified
- '%LOCALAPPDATA%\Composer\files -> composer.lock'
- composer.phar
- C:\ProgramData\chocolatey\bin -> appveyor.yml
- C:\ProgramData\chocolatey\lib -> appveyor.yml
- c:\tools\php -> appveyor.yml

init:
- SET PATH=C:\Program Files\OpenSSL;c:\tools\php;%PATH%
- SET PHP=1
- SET ANSICON=121x90 (121x90)
- SET COMPOSER_NO_INTERACTION=1
- SET XDEBUG_VERSION=2.5.3 # As of 24 April 2017 - UPDATE REGULARLY

install:
- IF EXIST c:\tools\php (SET PHP=0)
# Enable Windows update service
- ps: Set-Service wuauserv -StartupType Manual
# Install PHP
- ps: appveyor-retry cinst --params '""/InstallDir:C:\tools\php""' --ignore-checksums -y php --version ((choco search php --exact --all-versions -r | select-string -pattern $env:php_ver_target | sort { [version]($_ -split '\|' | select -last 1) } -Descending | Select-Object -first 1) -replace '[php|]','')
- cd c:\tools\php
- IF %PHP%==1 copy php.ini-production php.ini /Y
- IF %PHP%==1 echo date.timezone="UTC" >> php.ini
- IF %PHP%==1 echo extension_dir=ext >> php.ini
- IF %PHP%==1 echo extension=php_openssl.dll >> php.ini
- IF %PHP%==1 echo extension=php_mbstring.dll >> php.ini
- IF %PHP%==1 echo @php %%~dp0composer.phar %%* > composer.bat
# Install xdebug
- ps: |
if (Test-Path "c:\tools\php\ext\xdebug.dll") {return}
$client = New-Object System.Net.WebClient
$xdebugUrl = "https://xdebug.org/files/php_xdebug-$env:XDEBUG_VERSION-$env:php_ver_target-vc14-nts-x86_64.dll"
$xdebugPath = 'c:\tools\php\ext\xdebug.dll'
Write-Output "Downloading $xdebugUrl"
Write-Output "to $xdebugPath"
$client.DownloadFile($xdebugUrl, $xdebugPath)
Add-Content php.ini @"
zend_extension=$xdebugPath
"@
# Install composer and update per matrix
- appveyor-retry appveyor DownloadFile https://getcomposer.org/composer.phar
- cd c:\projects\workspace
- IF %dependencies%==lowest appveyor-retry composer update --no-suggest --prefer-dist --prefer-lowest
- IF %dependencies%==highest appveyor-retry composer update --no-suggest --prefer-dist
- composer show


test_script:
- cd c:\projects\workspace
- vendor\bin\phpunit -c phpunit.xml.dist
#- vendor\bin\behat -vv -f progress
11 changes: 3 additions & 8 deletions src/Adapter/Phpunit/Process/PhpunitExecutableFinder.php
Expand Up @@ -17,7 +17,6 @@
use Humbug\Config\JsonParser;
use Symfony\Component\Process\Process;
use Symfony\Component\Process\ExecutableFinder;
use Symfony\Component\Process\PhpExecutableFinder;

class PhpunitExecutableFinder extends AbstractExecutableFinder
{
Expand Down Expand Up @@ -100,15 +99,11 @@ private function findPhpunit()
protected function makeExecutable($path)
{
$path = realpath($path);
$phpFinder = new PhpExecutableFinder();
if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
return sprintf('%s %s %s', 'exec', $phpFinder->find(), $path);
} else {
if (false !== strpos($path, '.bat')) {
return $path;
}
return sprintf('%s %s', $phpFinder->find(), $path);
return sprintf('%s %s', 'exec', $path);

}
return $path;
}

private function setConfig()
Expand Down
Expand Up @@ -18,6 +18,6 @@ public function testFinderCanLocatePhpunitExecutable()
{
$finder = new PhpunitExecutableFinder();
$result = $finder->find();
$this->assertRegExp('%phpunit.*(\\.bat|\\.phar)?$%', $result);
$this->assertRegExp('%phpunit.*(\\.bat|\\.phar)?$%i', $result);
}
}
14 changes: 7 additions & 7 deletions tests/Adapter/PhpunitTest.php
Expand Up @@ -89,7 +89,7 @@ public function testAdapterRunsDefaultPhpunitCommand()

$result = $process->getOutput();

$this->assertStringStartsWith('TAP version', $result);
$this->assertStringStartsWith('TAP version', $result, $process->getErrorOutput());
$this->assertTrue($adapter->ok($result));
}

Expand Down Expand Up @@ -118,7 +118,7 @@ public function testAdapterRunsPhpunitCommandWithAlltestsFileTarget()

$result = $process->getOutput();

$this->assertStringStartsWith('TAP version', $result);
$this->assertStringStartsWith('TAP version', $result, $process->getErrorOutput());
$this->assertTrue($adapter->ok($result));
}

Expand Down Expand Up @@ -147,7 +147,7 @@ public function testAdapterDetectsTestsPassing()

$result = $process->getOutput();

$this->assertTrue($adapter->ok($result));
$this->assertTrue($adapter->ok($result), $process->getErrorOutput());
}

public function testAdapterDetectsTestsFailingFromTestFail()
Expand Down Expand Up @@ -175,7 +175,7 @@ public function testAdapterDetectsTestsFailingFromTestFail()

$result = $process->getOutput();

$this->assertFalse($adapter->ok($result));
$this->assertFalse($adapter->ok($result), $process->getErrorOutput());
}

public function testAdapterDetectsTestsFailingFromException()
Expand Down Expand Up @@ -203,7 +203,7 @@ public function testAdapterDetectsTestsFailingFromException()

$result = $process->getOutput();

$this->assertFalse($adapter->ok($result));
$this->assertFalse($adapter->ok($result), $process->getErrorOutput());
}

public function testAdapterDetectsTestsFailingFromError()
Expand Down Expand Up @@ -231,7 +231,7 @@ public function testAdapterDetectsTestsFailingFromError()

$result = $process->getOutput();

$this->assertFalse($adapter->ok($result));
$this->assertFalse($adapter->ok($result), $process->getErrorOutput());
}

public function testAdapterOutputProcessingDetectsFailOverMultipleLinesWithNoDepOnFinalStatusReport()
Expand Down Expand Up @@ -279,7 +279,7 @@ public function testShouldNotNotifyRegressionWhileRunningProcess($directory)

$result = $process->getOutput();

$this->assertEquals(2, $adapter->hasOks($result));
$this->assertEquals(2, $adapter->hasOks($result), $process->getErrorOutput());
$this->assertStringStartsWith('TAP version', $result);
$this->assertTrue($adapter->ok($result), "Regression output: \n" . $result);
}
Expand Down
2 changes: 1 addition & 1 deletion tests/Process/ComposerExecutableFinderTest.php
Expand Up @@ -18,6 +18,6 @@ public function testFinderCanLocatePhpunitExecutable()
{
$finder = new ComposerExecutableFinder();
$result = $finder->find();
$this->assertRegExp('%composer(\\.bat|\\.phar)?$%', $result);
$this->assertRegExp('%composer(\\.bat|\\.phar)?$%i', $result);
}
}

0 comments on commit 545bee0

Please sign in to comment.