Как создать композитор для тестирования сборки travis - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь добавить статус build-passing в мой репо с помощью travis.Я следовал учебнику на сайте.

Мой текущий файл .travis.yml выглядит так:

language: php

php:
  - 7.0
  - 7.1
  - 7.2

matrix:
  include:
    - php: 7.2
      dist: precise

sudo: false

before_script: composer install
script: phpunit

Мой композитор выглядит так:

{
    "name": "ArrayList",
    "description": "A simple library for arrays to use lambda.",
    "homepage": "https://github.com/Jaquarh/ArrayList",
    "authors": [
        {
            "name": "Kyle Jeynes",
            "email": "okaydots@gmail.com",
            "role": "Developer"
        }
    ],
    "license": "BSD-3-Clause",
    "require": {
        "php": ">=7.2.0"
    },
    "autoload": {
        "psr-4": {
            "Jaquarh\\ArrayList\\": "test"
        }
    },
    "require-dev": {
        "phpunit/phpunit": " 4.8.35"
    }
}

Однако, когда я запускаю сборку на своем репо, она завершается с этой ошибкой

Команда phpunit завершилась с 2.

Необработанный вывод (если он полезен, выглядит так)Я предполагаю, что это похоже на «тест».

Я создал новый файл, который включает в себя всю библиотеку и выполняет тест, который выглядит так внутри test/travis.php:

require_once '../ArrayList.php';

$myArray = new ArrayList([
    ['id' => 1, 'username' => 'foo', 'privilidges' => ['can_read' => 1, 'can_write' => 0], 'incomming' => ''],
    ['id' => 2, 'username' => 'bar', 'privilidges' => ['can_read' => 1, 'can_write' => 1], 'incomming' => 'Hi everyone!']
]);

$myArray->where(function($x) {
    $privilidges = (object) $x['privilidges'];
    return $privilidges->can_write;
})->getFirstOrDefault()
  ->ifPresent(function($x) {
      if(!empty(($incomming = $x['incomming']))) echo $incomming;
  });

ОднакоЭто не композитор, и я понятия не имею, как заставить Трэвиса выполнить это.

Буду признателен за любые идеи или помощь, я впервые использую Трэвис, и документация не помогает со ссылкой на созданиетестовые среды для сборки travis.

Это мой репозиторий , если посмотреть на него, если это поможет.

После обновления моего композитора для использования PHP 7.1.11 я получаюэта ошибка

Ваши требования не могут быть разрешены для устанавливаемого набора пакетов.

1 Ответ

0 голосов
/ 08 декабря 2018

Мне удалось выяснить, что требуется для PHPUnit и композитора.

Я изменил свой .travis.yml, чтобы протестировать все версии PHP и выполнить скрипт, необходимый для запуска тестов.

language: php

php:
  - 5.4
  - 5.5
  - 5.6
  - 7.0
  - 7.1
  - 7.2

matrix:
  include:
    - php: 5.3
      dist: precise

sudo: false

before_script: composer install
script: phpunit

Тест требовал настройки, поэтому в новом файле phpunit.xml.dist я поместил это:

<?xml version="1.0" encoding="UTF-8"?>

<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false"
         bootstrap="tests/bootstrap.php"
>
    <testsuites>
        <testsuite name="PHP ArrayList Test Suite">
            <directory>./tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

Далее я создал скрипт для этой конфигурации с именем run-tests.sh:

php --version
php phpunit.phar --configuration phpunit.xml.dist

Я обновил свой композитор, чтобы использовать PHP 5.3 в качестве запуска следующим образом:

{
    "name": "ArrayList",
    "description": "A simple library for arrays to use lambda.",
    "homepage": "https://github.com/Jaquarh/ArrayList",
    "authors": [
        {
            "name": "Kyle Jeynes",
            "email": "okaydots@gmail.com",
            "role": "Developer"
        }
    ],
    "license": "MIT",
    "require": {
        "php": ">=5.3.0"
    },
    "autoload": {
        "psr-4": {
            "Jaquarh\\ArrayList\\": "src"
        }
    },
    "require-dev": {
        "phpunit/phpunit": " 4.8.35"
    }
}

Наконец, я построил тесты, которые включали bootstrap.php и autoload.php.dist:

if (file_exists($file = __DIR__ . '/autoload.php')) {
    require_once $file;
} elseif (file_exists($file = __DIR__ . '/autoload.php.dist')) {
    require_once $file;
}

// if the library is the project, try to use the composer's autoload for the tests
$composerAutoload = __DIR__ . '/../vendor/autoload.php';

if (is_file($composerAutoload)) {
    include $composerAutoload;
} else {
    die('Unable to find autoload.php file, please use composer to load dependencies:

wget http://getcomposer.org/composer.phar
php composer.phar install

Visit http://getcomposer.org/ for more information.

');
}
...