build: false
shallow_clone: false
platform: 'x86'
clone_folder: C:\projects\phinx
environment:
  global:
    PHP: "C:/PHP"
    TESTS_PHINX_DB_ADAPTER_SQLSRV_ENABLED: true
    TESTS_PHINX_DB_ADAPTER_SQLSRV_HOST: .\SQL2012SP1
    TESTS_PHINX_DB_ADAPTER_SQLSRV_USERNAME: "sa"
    TESTS_PHINX_DB_ADAPTER_SQLSRV_PASSWORD: "Password12!"
    TESTS_PHINX_DB_ADAPTER_SQLSRV_DATABASE: "phinxtesting"
  matrix:
      - db: 2012
        db_dsn: 'sqlserver://sa:Password12!@.\SQL2012SP1/phinxtesting?MultipleActiveResultSets=false'
services:
  - mssql2012sp1
init:
  - SET PATH=C:\php\;%PATH%
install:
  - cd c:\
  - ps: Start-FileDownload 'http://ci.cakephp.org/php.zip'
  - 7z x php.zip -oc:\php
  - cd c:\php
  - copy php.ini-production php.ini
  - echo date.timezone="UTC" >> php.ini
  - echo extension_dir=ext >> php.ini
  - echo extension=php_openssl.dll >> php.ini
  - echo extension=php_sqlsrv.dll >> php.ini
  - echo extension=php_pdo_sqlsrv.dll >> php.ini
  - cd C:\projects\phinx
  - php -r "readfile('https://getcomposer.org/installer');" | php
  - php composer.phar install --prefer-dist --no-interaction --dev
before_test:
# This script solves the "Database 'model' is being recovered. Waiting until recovery is finished."
# This solution comes from https://gist.github.com/jonathanhickford/1cb0d6665adab8b9c664
# and is follow by http://help.appveyor.com/discussions/suggestions/264-database-mssqlsystemresource-is-being-recovered-waiting-for-sql-server-to-start
- ps: >-
    $tries = 5;

    $pause = 10; # Seconds to wait between tries

    While ($tries -gt 0) {
      try {
        $ServerConnectionString = "Data Source=(local)\SQL2012SP1;Initial Catalog=master;User Id=sa;PWD=Password12!";
        $ServerConnection = new-object system.data.SqlClient.SqlConnection($ServerConnectionString);
        $query = "exec sp_configure 'clr enabled', 1;`n"
        $query = $query + "RECONFIGURE;`n"
        $cmd = new-object system.data.sqlclient.sqlcommand($query, $ServerConnection);
        $ServerConnection.Open();
        "Running:"
        $query
        if ($cmd.ExecuteNonQuery() -ne -1) {
          "SQL Error";
        } else {
          "Success"
        }
        $ServerConnection.Close();
        $tries = 0;
      } catch {
        "Error:"
        $_.Exception.Message
        "Retry in $pause seconds.  Attempts left: $tries";
        Start-Sleep -s $pause;
      }
      $tries = $tries -1;
    }
test_script:
  - sqlcmd -S ".\SQL2012SP1" -U sa -P Password12! -Q "create database %TESTS_PHINX_DB_ADAPTER_SQLSRV_DATABASE%;"
  - cd C:\projects\phinx
  - vendor\bin\phpunit.bat --no-configuration --bootstrap tests/phpunit-bootstrap.php tests/
