Образец теста CasperJs:
casper.test.begin('Hello, Test!', 1, function(test) {
test.assert(true);
test.done();
});
Результат выполнения команды Linux:
# casperjs test /bin/casper-test.js
Test file: /bin/casper-test.js
# Hello, Test!
PASS Subject is strictly true
PASS Hello, Test! (1 test)
PASS 1 test executed in 0.026s, 1 passed, 0 failed, 0 dubious, 0 skipped.
Результат PHP:
<?php
echo exec('casperjs test /path/to/casper-test.js');
?>
[37;42;1mPASS 1 test executed in 0.024s, 1 passed, 0 failed, 0 dubious, 0 skipped. [0m
Как видите, он показывает только последнюю строку результата команды Linux (правильный).
Есть идеи?
Проверьте документацию для exec
:
http://php.net/manual/en/function.exec.php
строка exec (строка $ command [, массив &$ output [, int &$ return_var]])
Чтобы захватить весь вывод, вы должны сделать что-то вроде этого:
exec('casperjs test /path/to/casper-test.js 2>&1', $output, $return_var);
var_dump($output);
var_dump($return_var);
Прикрепление 2>&1
к вашей команде перенаправит STDERR
а также STDOUT
и захватить его в $output
переменная.
Кроме того, я заметил, что вывод, кажется, пытается раскрасить его для вывода на оболочке, вот что [37;42;
Строка Согласно документации, похоже, что вы можете добавить --no-colors
на вашу команду, чтобы отключить цветной вывод:
casperjs test --no-colors /path/to/casper-test.js 2>&1
Других решений пока нет …