Merge branch 'master' into feature-ru-update
Conflicts: PHPCI/Languages/lang.ru.php
This commit is contained in:
commit
94b79860c5
|
@ -170,7 +170,7 @@ class WebhookController extends \b8\Controller
|
|||
protected function githubCommitRequest(Project $project, array $payload)
|
||||
{
|
||||
// Github sends a payload when you close a pull request with a
|
||||
// non-existant commit. We don't want this.
|
||||
// non-existent commit. We don't want this.
|
||||
if (array_key_exists('after', $payload) && $payload['after'] === '0000000000000000000000000000000000000000') {
|
||||
return array('status' => 'ignored');
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ final class AnsiConverter
|
|||
static private $converter = null;
|
||||
|
||||
/**
|
||||
* Initialize the singletion.
|
||||
* Initialize the singleton.
|
||||
*
|
||||
* @return AnsiToHtmlConverter
|
||||
*/
|
||||
|
@ -35,7 +35,7 @@ final class AnsiConverter
|
|||
}
|
||||
|
||||
/**
|
||||
* Convert a text containing ANSI colr sequences into HTML code.
|
||||
* Convert a text containing ANSI color sequences into HTML code.
|
||||
*
|
||||
* @param string $text The text to convert
|
||||
*
|
||||
|
@ -47,7 +47,7 @@ final class AnsiConverter
|
|||
}
|
||||
|
||||
/**
|
||||
* Do not instanciate this class.
|
||||
* Do not instantiate this class.
|
||||
*/
|
||||
private function __construct()
|
||||
{
|
||||
|
|
|
@ -12,7 +12,7 @@ namespace PHPCI\Helper;
|
|||
use b8\Config;
|
||||
|
||||
/**
|
||||
* Login Is Disabled Helper - Checks if login is disalbed in the view
|
||||
* Login Is Disabled Helper - Checks if login is disabled in the view
|
||||
* @author Stephen Ball <phpci@stephen.rebelinblue.com>
|
||||
* @package PHPCI
|
||||
* @subpackage Web
|
||||
|
|
|
@ -114,6 +114,7 @@ i din foretrukne hosting-platform.',
|
|||
'default_branch' => 'Default branch navn',
|
||||
'allow_public_status' => 'Tillad offentlig status-side og -billede for dette projekt?',
|
||||
'archived' => 'Archived',
|
||||
'archived_menu' => 'Archived',
|
||||
'save_project' => 'Gem Projekt',
|
||||
|
||||
'error_mercurial' => 'Mercurial repository-URL skal starte med http:// eller https://',
|
||||
|
@ -203,7 +204,7 @@ Services</a> sektionen under dit Bitbucket-repository.',
|
|||
'build_finished' => 'Build Afsluttet',
|
||||
'test_message' => 'Message',
|
||||
'test_no_message' => 'No message',
|
||||
'test_success' => 'Succesfull: %d',
|
||||
'test_success' => 'Successful: %d',
|
||||
'test_fail' => 'Failures: %d',
|
||||
'test_skipped' => 'Skipped: %d',
|
||||
'test_error' => 'Errors: %d',
|
||||
|
|
|
@ -116,6 +116,7 @@ generiert. Um es zu verwenden, fügen Sie einfach den folgenden Public Key im Ab
|
|||
'default_branch' => 'Name des Standardbranches',
|
||||
'allow_public_status' => 'Öffentliche Statusseite und -bild für dieses Projekt einschalten?',
|
||||
'archived' => 'Archived',
|
||||
'archived_menu' => 'Archived',
|
||||
'save_project' => 'Projekt speichern',
|
||||
|
||||
'error_mercurial' => 'Mercurial Repository-URL muss mit http://, oder https:// beginnen',
|
||||
|
@ -210,7 +211,7 @@ generiert. Um es zu verwenden, fügen Sie einfach den folgenden Public Key im Ab
|
|||
'build_finished' => 'Build abgeschlossen',
|
||||
'test_message' => 'Message',
|
||||
'test_no_message' => 'No message',
|
||||
'test_success' => 'Succesfull: %d',
|
||||
'test_success' => 'Successful: %d',
|
||||
'test_fail' => 'Failures: %d',
|
||||
'test_skipped' => 'Skipped: %d',
|
||||
'test_error' => 'Errors: %d',
|
||||
|
|
|
@ -115,6 +115,7 @@ PHPCI',
|
|||
'default_branch' => 'Προκαθορισμένο όνομα διακλάδωσης',
|
||||
'allow_public_status' => 'Ενεργοποίηση της σελίδας δημόσιας κατάστασης και την εικόνα για το έργο αυτό;',
|
||||
'archived' => 'Archived',
|
||||
'archived_menu' => 'Archived',
|
||||
'save_project' => 'Αποθήκευση έργου',
|
||||
|
||||
'error_mercurial' => 'Ο σύνδεσμος URL του ευμετάβλητου αποθετηρίου πρέπει να ξεκινάει με http:// ή https://',
|
||||
|
@ -204,7 +205,7 @@ Services</a> του Bitbucket αποθετηρίου σας.',
|
|||
'build_finished' => 'Η κατασκευή ολοκληρώθηκε',
|
||||
'test_message' => 'Message',
|
||||
'test_no_message' => 'No message',
|
||||
'test_success' => 'Succesfull: %d',
|
||||
'test_success' => 'Successful: %d',
|
||||
'test_fail' => 'Failures: %d',
|
||||
'test_skipped' => 'Skipped: %d',
|
||||
'test_error' => 'Errors: %d',
|
||||
|
|
|
@ -116,6 +116,7 @@ PHPCI',
|
|||
'default_branch' => 'Default branch name',
|
||||
'allow_public_status' => 'Enable public status page and image for this project?',
|
||||
'archived' => 'Archived',
|
||||
'archived_menu' => 'Archived',
|
||||
'save_project' => 'Save Project',
|
||||
|
||||
'error_mercurial' => 'Mercurial repository URL must be start with http:// or https://',
|
||||
|
@ -213,7 +214,7 @@ PHPCI',
|
|||
'build_finished' => 'Build Finished',
|
||||
'test_message' => 'Message',
|
||||
'test_no_message' => 'No message',
|
||||
'test_success' => 'Succesfull: %d',
|
||||
'test_success' => 'Successful: %d',
|
||||
'test_fail' => 'Failures: %d',
|
||||
'test_skipped' => 'Skipped: %d',
|
||||
'test_error' => 'Errors: %d',
|
||||
|
|
|
@ -115,6 +115,7 @@ PHPCI',
|
|||
'default_branch' => 'Nombre de la rama por defecto',
|
||||
'allow_public_status' => '¿Activar página pública con el estado del proyecto?',
|
||||
'archived' => 'Archivado',
|
||||
'archived_menu' => 'Archivado',
|
||||
'save_project' => 'Guardar Proyecto',
|
||||
|
||||
'error_mercurial' => 'La URL del repositorio de Mercurial debe comenzar con http:// or https://',
|
||||
|
|
|
@ -115,6 +115,7 @@ PHPCI',
|
|||
'default_branch' => 'Nom de la branche par défaut',
|
||||
'allow_public_status' => 'Activer la page de statut publique et l\'image pour ce projet ?',
|
||||
'archived' => 'Archived',
|
||||
'archived_menu' => 'Archived',
|
||||
'save_project' => 'Enregistrer le projet',
|
||||
|
||||
'error_mercurial' => 'Les URLs de dépôt Mercurial doivent commencer par http:// ou https://',
|
||||
|
|
|
@ -113,8 +113,9 @@ PHPCI',
|
|||
(se non puoi aggiungere il file phpci.yml nel repository di questo progetto)',
|
||||
'default_branch' => 'Nome del branch di default',
|
||||
'allow_public_status' => 'Vuoi rendere pubblica la pagina dello stato e l\'immagine per questo progetto?',
|
||||
'save_project' => 'Salva il Progetto',
|
||||
'archived' => 'Archived',
|
||||
'archived_menu' => 'Archived',
|
||||
'save_project' => 'Salva il Progetto',
|
||||
|
||||
'error_mercurial' => 'L\'URL del repository Mercurial URL deve iniziare con http:// o https://',
|
||||
'error_remote' => 'L\'URL del repository deve iniziare con git://, http:// o https://',
|
||||
|
@ -206,7 +207,7 @@ PHPCI',
|
|||
'build_finished' => 'Build Terminata',
|
||||
'test_message' => 'Message',
|
||||
'test_no_message' => 'No message',
|
||||
'test_success' => 'Succesfull: %d',
|
||||
'test_success' => 'Successful: %d',
|
||||
'test_fail' => 'Failures: %d',
|
||||
'test_skipped' => 'Skipped: %d',
|
||||
'test_error' => 'Errors: %d',
|
||||
|
|
|
@ -115,6 +115,7 @@ van je gekozen source code hosting platform',
|
|||
'default_branch' => 'Standaard branch naam',
|
||||
'allow_public_status' => 'Publieke statuspagina en afbeelding beschikbaar maken voor dit project?',
|
||||
'archived' => 'Archived',
|
||||
'archived_menu' => 'Archived',
|
||||
'save_project' => 'Project opslaan',
|
||||
|
||||
'error_mercurial' => 'Mercurial repository URL dient te starten met http:// of https://',
|
||||
|
@ -204,7 +205,7 @@ Services</a> sectie van je Bitbucket repository toegevoegd worden.',
|
|||
'build_finished' => 'Build beëindigd',
|
||||
'test_message' => 'Message',
|
||||
'test_no_message' => 'No message',
|
||||
'test_success' => 'Succesfull: %d',
|
||||
'test_success' => 'Successful: %d',
|
||||
'test_fail' => 'Failures: %d',
|
||||
'test_skipped' => 'Skipped: %d',
|
||||
'test_error' => 'Errors: %d',
|
||||
|
|
|
@ -116,6 +116,7 @@ od wybranego kodu źródłowego platformy hostingowej.',
|
|||
'default_branch' => 'Domyślna nazwa gałęzi',
|
||||
'allow_public_status' => 'Włączyć status publiczny dla tego projektu?',
|
||||
'archived' => 'W archiwum',
|
||||
'archived_menu' => 'W archiwum',
|
||||
'save_project' => 'Zachowaj Projekt',
|
||||
|
||||
'error_mercurial' => 'URL repozytorium Mercurialnego powinno zaczynać się od http:// and https://',
|
||||
|
@ -207,7 +208,7 @@ Services</a> repozytoria Bitbucket.',
|
|||
'build_finished' => 'Budowanie Zakończone',
|
||||
'test_message' => 'Message',
|
||||
'test_no_message' => 'No message',
|
||||
'test_success' => 'Succesfull: %d',
|
||||
'test_success' => 'Successful: %d',
|
||||
'test_fail' => 'Failures: %d',
|
||||
'test_skipped' => 'Skipped: %d',
|
||||
'test_error' => 'Errors: %d',
|
||||
|
|
|
@ -112,7 +112,8 @@ PHPCI',
|
|||
(если вы не добавили файл phpci.yml в репозиторий вашего проекта)',
|
||||
'default_branch' => 'Ветка по умолчанию',
|
||||
'allow_public_status' => 'Разрешить публичный статус и изображение (статуса) для проекта',
|
||||
'archived' => 'Запакован',
|
||||
'archived' => 'Архивный',
|
||||
'archived_menu' => 'Архив',
|
||||
'save_project' => 'Сохранить проект',
|
||||
|
||||
'error_mercurial' => 'URL репозитория Mercurial должен начинаться с http:// или https://',
|
||||
|
|
|
@ -113,7 +113,8 @@ PHPCI',
|
|||
(якщо ви не додали файл phpci.yml до репозиторію вашого проекту)',
|
||||
'default_branch' => 'Назва гілки за замовчуванням',
|
||||
'allow_public_status' => 'Увімкнути публічну сторінку статусу та зображення для цього проекта?',
|
||||
'archived' => 'Archived',
|
||||
'archived' => 'Архівний',
|
||||
'archived_menu' => 'Архів',
|
||||
'save_project' => 'Зберегти проект',
|
||||
|
||||
'error_mercurial' => 'URL репозиторію Mercurial повинен починатись із http:// або https://',
|
||||
|
@ -204,7 +205,7 @@ PHPCI',
|
|||
'build_finished' => 'Збірка завершена',
|
||||
'test_message' => 'Message',
|
||||
'test_no_message' => 'No message',
|
||||
'test_success' => 'Succesfull: %d',
|
||||
'test_success' => 'Successful: %d',
|
||||
'test_fail' => 'Failures: %d',
|
||||
'test_skipped' => 'Skipped: %d',
|
||||
'test_error' => 'Errors: %d',
|
||||
|
|
|
@ -218,6 +218,8 @@ class GithubBuild extends RemoteGitBuild
|
|||
*/
|
||||
protected function getDiffLineNumber(Builder $builder, $file, $line)
|
||||
{
|
||||
$line = (integer)$line;
|
||||
|
||||
$builder->logExecOutput(false);
|
||||
|
||||
$prNumber = $this->getExtra('pull_request_number');
|
||||
|
|
|
@ -99,7 +99,7 @@ class Codeception implements \PHPCI\Plugin, \PHPCI\ZeroConfigPlugin
|
|||
}
|
||||
|
||||
/**
|
||||
* Runs Codeception tests, optionally using specified config file(s).
|
||||
* Runs Codeception tests
|
||||
*/
|
||||
public function execute()
|
||||
{
|
||||
|
|
|
@ -134,7 +134,7 @@ class Email implements \PHPCI\Plugin
|
|||
* Send an email to a list of specified subjects.
|
||||
*
|
||||
* @param array $toAddresses
|
||||
* List of destinatary of message.
|
||||
* List of destination addresses for message.
|
||||
* @param string $subject
|
||||
* Mail subject
|
||||
* @param string $body
|
||||
|
|
|
@ -166,10 +166,11 @@ class Mysql implements \PHPCI\Plugin
|
|||
$args = array(
|
||||
':import_file' => escapeshellarg($import_file),
|
||||
':decomp_cmd' => $decomp_cmd,
|
||||
':host' => escapeshellarg($this->host),
|
||||
':user' => escapeshellarg($this->user),
|
||||
':pass' => escapeshellarg($this->pass),
|
||||
':database' => ($database === null)? '': escapeshellarg($database),
|
||||
);
|
||||
return strtr('cat :import_file :decomp_cmd | mysql -u:user -p:pass :database', $args);
|
||||
return strtr('cat :import_file :decomp_cmd | mysql -h:host -u:user -p:pass :database', $args);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -73,8 +73,11 @@ class Pdepend implements \PHPCI\Plugin
|
|||
*/
|
||||
public function execute()
|
||||
{
|
||||
if (!file_exists($this->location)) {
|
||||
mkdir($this->location);
|
||||
}
|
||||
if (!is_writable($this->location)) {
|
||||
throw new \Exception(sprintf('The location %s is not writable.', $this->location));
|
||||
throw new \Exception(sprintf('The location %s is not writable or does not exist.', $this->location));
|
||||
}
|
||||
|
||||
$pdepend = $this->phpci->findBinary('pdepend');
|
||||
|
|
|
@ -28,7 +28,7 @@ class PhpCpd implements \PHPCI\Plugin
|
|||
|
||||
/**
|
||||
* @var string, based on the assumption the root may not hold the code to be
|
||||
* tested, exteds the base path
|
||||
* tested, extends the base path
|
||||
*/
|
||||
protected $path;
|
||||
|
||||
|
|
|
@ -32,10 +32,10 @@ class PhpCsFixer implements \PHPCI\Plugin
|
|||
protected $build;
|
||||
|
||||
protected $workingDir = '';
|
||||
protected $level = ' --level=all';
|
||||
protected $level = ' --level=psr2';
|
||||
protected $verbose = '';
|
||||
protected $diff = '';
|
||||
protected $levels = array('psr0', 'psr1', 'psr2', 'all');
|
||||
protected $levels = array('psr0', 'psr1', 'psr2', 'symfony');
|
||||
|
||||
/**
|
||||
* Standard Constructor
|
||||
|
|
|
@ -38,7 +38,7 @@ class PhpMessDetector implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin
|
|||
|
||||
/**
|
||||
* @var string, based on the assumption the root may not hold the code to be
|
||||
* tested, exteds the base path only if the provided path is relative. Absolute
|
||||
* tested, extends the base path only if the provided path is relative. Absolute
|
||||
* paths are used verbatim
|
||||
*/
|
||||
protected $path;
|
||||
|
@ -50,7 +50,7 @@ class PhpMessDetector implements PHPCI\Plugin, PHPCI\ZeroConfigPlugin
|
|||
|
||||
/**
|
||||
* Array of PHPMD rules. Can be one of the builtins (codesize, unusedcode, naming, design, controversial)
|
||||
* or a filenname (detected by checking for a / in it), either absolute or relative to the project root.
|
||||
* or a filename (detected by checking for a / in it), either absolute or relative to the project root.
|
||||
* @var array
|
||||
*/
|
||||
protected $rules;
|
||||
|
|
|
@ -13,9 +13,10 @@ use Symfony\Component\Yaml\Yaml;
|
|||
class TapParser
|
||||
{
|
||||
const TEST_COUNTS_PATTERN = '/^\d+\.\.(\d+)/';
|
||||
const TEST_LINE_PATTERN = '/^(ok|not ok)(?:\s+\d+)?(?:\s+\-)?\s*(.*?)(?:\s*#\s*(skip|todo)\s*(.*))?\s*$/i';
|
||||
const TEST_YAML_START = '/^(\s*)---/';
|
||||
const TEST_DIAGNOSTIC = '/^#/';
|
||||
const TEST_LINE_PATTERN = '/^(ok|not ok)(?:\s+\d+)?(?:\s+\-)?\s*(.*?)(?:\s*#\s*(skip|todo)\s*(.*))?\s*$/i';
|
||||
const TEST_YAML_START = '/^(\s*)---/';
|
||||
const TEST_DIAGNOSTIC = '/^#/';
|
||||
const TEST_COVERAGE = '/^Generating/';
|
||||
|
||||
/**
|
||||
* @var string
|
||||
|
@ -73,7 +74,7 @@ class TapParser
|
|||
|
||||
$line = $this->nextLine();
|
||||
if ($line === $header) {
|
||||
throw new Exception("Duplicated TAP log, please check the configration.");
|
||||
throw new Exception("Duplicated TAP log, please check the configuration.");
|
||||
}
|
||||
|
||||
while ($line !== false && ($this->testCount === false || count($this->results) < $this->testCount)) {
|
||||
|
@ -81,7 +82,7 @@ class TapParser
|
|||
$line = $this->nextLine();
|
||||
}
|
||||
|
||||
if (count($this->results) !== $this->testCount) {
|
||||
if (false !== $this->testCount && count($this->results) !== $this->testCount) {
|
||||
throw new Exception(Lang::get('tap_error'));
|
||||
}
|
||||
|
||||
|
@ -96,7 +97,7 @@ class TapParser
|
|||
*/
|
||||
protected function findTapLog()
|
||||
{
|
||||
// Look for the beggning of the TAP output
|
||||
// Look for the beginning of the TAP output
|
||||
do {
|
||||
$header = $this->nextLine();
|
||||
} while ($header !== false && substr($header, 0, 12) !== 'TAP version ');
|
||||
|
@ -123,19 +124,14 @@ class TapParser
|
|||
return false;
|
||||
}
|
||||
|
||||
/** Parse a single line.
|
||||
*
|
||||
/**
|
||||
* @param string $line
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
protected function parseLine($line)
|
||||
protected function testLine($line)
|
||||
{
|
||||
if (preg_match(self::TEST_COUNTS_PATTERN, $line, $matches)) {
|
||||
$this->testCount = intval($matches[1]);
|
||||
|
||||
} elseif (preg_match(self::TEST_DIAGNOSTIC, $line)) {
|
||||
return;
|
||||
|
||||
} elseif (preg_match(self::TEST_LINE_PATTERN, $line, $matches)) {
|
||||
if (preg_match(self::TEST_LINE_PATTERN, $line, $matches)) {
|
||||
$this->results[] = $this->processTestLine(
|
||||
$matches[1],
|
||||
isset($matches[2]) ? $matches[2] : '',
|
||||
|
@ -143,18 +139,61 @@ class TapParser
|
|||
isset($matches[4]) ? $matches[4] : null
|
||||
);
|
||||
|
||||
} elseif (preg_match(self::TEST_YAML_START, $line, $matches)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $line
|
||||
*
|
||||
* @return boolean
|
||||
*/
|
||||
protected function yamlLine($line)
|
||||
{
|
||||
if (preg_match(self::TEST_YAML_START, $line, $matches)) {
|
||||
$diagnostic = $this->processYamlBlock($matches[1]);
|
||||
$test = array_pop($this->results);
|
||||
$test = array_pop($this->results);
|
||||
if (isset($test['message'], $diagnostic['message'])) {
|
||||
$test['message'] .= PHP_EOL . $diagnostic['message'];
|
||||
unset($diagnostic['message']);
|
||||
}
|
||||
$this->results[] = array_replace($test, $diagnostic);
|
||||
|
||||
} else {
|
||||
throw new Exception(sprintf('Incorrect TAP data, line %d: %s', $this->lineNumber, $line));
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/** Parse a single line.
|
||||
*
|
||||
* @param string $line
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
protected function parseLine($line)
|
||||
{
|
||||
if (preg_match(self::TEST_DIAGNOSTIC, $line) || preg_match(self::TEST_COVERAGE, $line) || !$line) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (preg_match(self::TEST_COUNTS_PATTERN, $line, $matches)) {
|
||||
$this->testCount = intval($matches[1]);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->testLine($line)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ($this->yamlLine($line)) {
|
||||
return;
|
||||
}
|
||||
|
||||
throw new Exception(sprintf('Incorrect TAP data, line %d: %s', $this->lineNumber, $line));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -31,7 +31,7 @@ class PosixProcessControl implements ProcessControlInterface
|
|||
* Sends a TERMINATE or KILL signal to the process using posix_kill.
|
||||
*
|
||||
* @param int $pid
|
||||
* @param bool $forcefully Whetehr to send TERMINATE (false) or KILL (true).
|
||||
* @param bool $forcefully Whether to send TERMINATE (false) or KILL (true).
|
||||
*/
|
||||
public function kill($pid, $forcefully = false)
|
||||
{
|
||||
|
|
|
@ -67,6 +67,14 @@
|
|||
bottom: 50px;
|
||||
right: 50px;
|
||||
}
|
||||
|
||||
@media(max-width:767px) {
|
||||
#logo {
|
||||
position: inherit;
|
||||
margin: 0 auto;
|
||||
margin-top: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
#logo:hover {
|
||||
background-image: url('https://www.block8.co.uk/assets/images/b8-phpci-logo.png');
|
||||
|
|
|
@ -143,7 +143,7 @@
|
|||
<i class="fa fa-dashboard"></i> <span><?php Lang::out('dashboard'); ?></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
<?php if ($this->User()->getIsAdmin()): ?>
|
||||
<li class="treeview">
|
||||
<a href="#">
|
||||
|
@ -262,7 +262,7 @@
|
|||
|
||||
<li class="archive<?php print (array_key_exists('archived', $_GET) ? ' active' : ''); ?>">
|
||||
<a href="<?php print PHPCI_URL . (array_key_exists('archived', $_GET) ? '' : '?archived'); ?>">
|
||||
<i class="fa fa-archive"></i> <span><?php Lang::out('archived'); ?></span>
|
||||
<i class="fa fa-archive"></i> <span><?php Lang::get('archived_menu'); ?></span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
@ -299,7 +299,9 @@
|
|||
|
||||
<script src="<?php print PHPCI_URL; ?>assets/js/plugins/daterangepicker/daterangepicker.js" type="text/javascript"></script>
|
||||
<script src="<?php print PHPCI_URL; ?>assets/js/plugins/datepicker/bootstrap-datepicker.js" type="text/javascript"></script>
|
||||
<?php if (file_exists(PHPCI_DIR . 'assets/js/plugins/datepicker/locales/bootstrap-datepicker.' . Lang::getLanguage() . '.js')) :?>
|
||||
<script src="<?php print PHPCI_URL; ?>assets/js/plugins/datepicker/locales/bootstrap-datepicker.<?php print Lang::getLanguage(); ?>.js" type="text/javascript"></script>
|
||||
<?php endif; ?>
|
||||
<script src="<?php print PHPCI_URL; ?>assets/js/AdminLTE/app.js" type="text/javascript"></script>
|
||||
|
||||
</body>
|
||||
|
|
|
@ -78,7 +78,7 @@ class CreateBuildCommandTest extends \PHPUnit_Framework_TestCase
|
|||
/**
|
||||
* @expectedException \InvalidArgumentException
|
||||
*/
|
||||
public function testExecuteWithUnknowProjectId()
|
||||
public function testExecuteWithUnknownProjectId()
|
||||
{
|
||||
$commandTester = $this->getCommandTester();
|
||||
$commandTester->execute(array('projectId' => 2));
|
||||
|
|
|
@ -175,7 +175,7 @@ class InstallCommandTest extends \PHPUnit_Framework_TestCase
|
|||
$this->assertEquals('testedvalue', $this->config['b8']['database']['name']);
|
||||
}
|
||||
|
||||
public function testDatabaseUserameConfig()
|
||||
public function testDatabaseUserConfig()
|
||||
{
|
||||
$dialog = $this->getDialogHelperMock();
|
||||
|
||||
|
@ -243,7 +243,7 @@ class InstallCommandTest extends \PHPUnit_Framework_TestCase
|
|||
$this->assertEquals('test@phpci.com', $this->admin['mail']);
|
||||
}
|
||||
|
||||
public function testAdminUserameConfig()
|
||||
public function testAdminNameConfig()
|
||||
{
|
||||
$dialog = $this->getDialogHelperMock();
|
||||
|
||||
|
|
|
@ -236,11 +236,11 @@ class EmailTest extends \PHPUnit_Framework_TestCase
|
|||
/**
|
||||
* @covers PHPUnit::execute
|
||||
*/
|
||||
public function testExecute_UniqueRecipientsWithCommiter()
|
||||
public function testExecute_UniqueRecipientsWithCommitter()
|
||||
{
|
||||
$this->loadEmailPluginWithOptions(
|
||||
array(
|
||||
'commiter' => true,
|
||||
'committer' => true,
|
||||
'addresses' => array('test-receiver@example.com', 'committer@test.com')
|
||||
)
|
||||
);
|
||||
|
|
|
@ -15,7 +15,7 @@ use PHPCI\Plugin\Util\FilesPluginInformation;
|
|||
class FilesPluginInformationTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
|
||||
public function testGetInstalledPlugins_returnsObjectes()
|
||||
public function testGetInstalledPlugins_returnsObjects()
|
||||
{
|
||||
$pluginDirPath = realpath(__DIR__ . "/../../../../PHPCI/Plugin/");
|
||||
$test = FilesPluginInformation::newFromDir($pluginDirPath);
|
||||
|
|
|
@ -23,6 +23,28 @@ ok 1 - SomeTest::testAnother
|
|||
not ok
|
||||
1..2
|
||||
Trailing garbage !
|
||||
TAP;
|
||||
$parser = new TapParser($content);
|
||||
$result = $parser->parse();
|
||||
|
||||
$this->assertEquals(array(
|
||||
array('pass' => true, 'severity' => 'success', 'message' => 'SomeTest::testAnother'),
|
||||
array('pass' => false, 'severity' => 'fail', 'message' => ''),
|
||||
), $result);
|
||||
|
||||
$this->assertEquals(1, $parser->getTotalFailures());
|
||||
}
|
||||
|
||||
public function testSimple2()
|
||||
{
|
||||
$content = <<<TAP
|
||||
Leading garbage !
|
||||
TAP version 13
|
||||
|
||||
ok 1 - SomeTest::testAnother
|
||||
not ok
|
||||
1..2
|
||||
|
||||
TAP;
|
||||
$parser = new TapParser($content);
|
||||
$result = $parser->parse();
|
||||
|
@ -48,6 +70,20 @@ TAP;
|
|||
$parser->parse();
|
||||
}
|
||||
|
||||
public function testTapCoverage()
|
||||
{
|
||||
$content = <<<TAP
|
||||
TAP version 13
|
||||
|
||||
Generating code coverage report in HTML format ... done
|
||||
|
||||
TAP;
|
||||
$parser = new TapParser($content);
|
||||
$result = $parser->parse();
|
||||
|
||||
$this->assertEquals(array(), $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \Exception
|
||||
* @expectedExceptionMessageRegExp /Duplicated TAP/
|
||||
|
|
|
@ -65,7 +65,7 @@ if (file_exists($configFile)) {
|
|||
|
||||
/**
|
||||
* Allow to modify PHPCI configuration without modify versioned code.
|
||||
* Dameons should be killed to apply changes in the file.
|
||||
* Daemons should be killed to apply changes in the file.
|
||||
*
|
||||
* @ticket 781
|
||||
*/
|
||||
|
|
|
@ -48,7 +48,8 @@
|
|||
"pimple/pimple": "~1.1",
|
||||
"robmorgan/phinx": "~0.4",
|
||||
"sensiolabs/ansi-to-html": "~1.1",
|
||||
"pda/pheanstalk": "~3.1"
|
||||
"pda/pheanstalk": "~3.1",
|
||||
"maknz/slack": "~1.7"
|
||||
},
|
||||
|
||||
"require-dev": {
|
||||
|
|
293
composer.lock
generated
293
composer.lock
generated
|
@ -4,8 +4,8 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"hash": "22ff64c3aa3c951901e6332784ab617e",
|
||||
"content-hash": "177ce296bc661eb8bff467cbd10a88e4",
|
||||
"hash": "2acdd123806a7eda47a4a16614e560bb",
|
||||
"content-hash": "9288b6bc9e7061c6338b039b70d29ea1",
|
||||
"packages": [
|
||||
{
|
||||
"name": "block8/b8framework",
|
||||
|
@ -54,6 +54,177 @@
|
|||
],
|
||||
"time": "2015-10-05 10:50:20"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/guzzle",
|
||||
"version": "6.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/guzzle.git",
|
||||
"reference": "66fd14b4d0b8f2389eaf37c5458608c7cb793a81"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/66fd14b4d0b8f2389eaf37c5458608c7cb793a81",
|
||||
"reference": "66fd14b4d0b8f2389eaf37c5458608c7cb793a81",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"guzzlehttp/promises": "~1.0",
|
||||
"guzzlehttp/psr7": "~1.1",
|
||||
"php": ">=5.5.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-curl": "*",
|
||||
"phpunit/phpunit": "~4.0",
|
||||
"psr/log": "~1.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "6.1-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/functions_include.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"GuzzleHttp\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Michael Dowling",
|
||||
"email": "mtdowling@gmail.com",
|
||||
"homepage": "https://github.com/mtdowling"
|
||||
}
|
||||
],
|
||||
"description": "Guzzle is a PHP HTTP client library",
|
||||
"homepage": "http://guzzlephp.org/",
|
||||
"keywords": [
|
||||
"client",
|
||||
"curl",
|
||||
"framework",
|
||||
"http",
|
||||
"http client",
|
||||
"rest",
|
||||
"web service"
|
||||
],
|
||||
"time": "2015-09-08 17:36:26"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/promises",
|
||||
"version": "1.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/promises.git",
|
||||
"reference": "97fe7210def29451ec74923b27e552238defd75a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/promises/zipball/97fe7210def29451ec74923b27e552238defd75a",
|
||||
"reference": "97fe7210def29451ec74923b27e552238defd75a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.5.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"GuzzleHttp\\Promise\\": "src/"
|
||||
},
|
||||
"files": [
|
||||
"src/functions_include.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Michael Dowling",
|
||||
"email": "mtdowling@gmail.com",
|
||||
"homepage": "https://github.com/mtdowling"
|
||||
}
|
||||
],
|
||||
"description": "Guzzle promises library",
|
||||
"keywords": [
|
||||
"promise"
|
||||
],
|
||||
"time": "2015-08-15 19:37:21"
|
||||
},
|
||||
{
|
||||
"name": "guzzlehttp/psr7",
|
||||
"version": "1.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/guzzle/psr7.git",
|
||||
"reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/guzzle/psr7/zipball/4ef919b0cf3b1989523138b60163bbcb7ba1ff7e",
|
||||
"reference": "4ef919b0cf3b1989523138b60163bbcb7ba1ff7e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.4.0",
|
||||
"psr/http-message": "~1.0"
|
||||
},
|
||||
"provide": {
|
||||
"psr/http-message-implementation": "1.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"GuzzleHttp\\Psr7\\": "src/"
|
||||
},
|
||||
"files": [
|
||||
"src/functions_include.php"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Michael Dowling",
|
||||
"email": "mtdowling@gmail.com",
|
||||
"homepage": "https://github.com/mtdowling"
|
||||
}
|
||||
],
|
||||
"description": "PSR-7 message implementation",
|
||||
"keywords": [
|
||||
"http",
|
||||
"message",
|
||||
"stream",
|
||||
"uri"
|
||||
],
|
||||
"time": "2015-08-15 19:32:36"
|
||||
},
|
||||
{
|
||||
"name": "ircmaxell/password-compat",
|
||||
"version": "v1.0.4",
|
||||
|
@ -96,6 +267,55 @@
|
|||
],
|
||||
"time": "2014-11-20 16:49:30"
|
||||
},
|
||||
{
|
||||
"name": "maknz/slack",
|
||||
"version": "1.7.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/maknz/slack.git",
|
||||
"reference": "7f21fefc70c76b304adc1b3a780c8740dfcfb595"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/maknz/slack/zipball/7f21fefc70c76b304adc1b3a780c8740dfcfb595",
|
||||
"reference": "7f21fefc70c76b304adc1b3a780c8740dfcfb595",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-mbstring": "*",
|
||||
"guzzlehttp/guzzle": "~6.0|~5.0|~4.0",
|
||||
"php": ">=5.4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "0.9.*",
|
||||
"phpunit/phpunit": "4.2.*"
|
||||
},
|
||||
"suggest": {
|
||||
"illuminate/support": "Required for Laravel support"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Maknz\\Slack\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-2-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "maknz",
|
||||
"email": "github@mak.geek.nz"
|
||||
}
|
||||
],
|
||||
"description": "A simple PHP package for sending messages to Slack, with a focus on ease of use and elegant syntax. Includes Laravel support out of the box.",
|
||||
"keywords": [
|
||||
"laravel",
|
||||
"slack"
|
||||
],
|
||||
"time": "2015-06-03 03:35:16"
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
"version": "1.17.1",
|
||||
|
@ -270,6 +490,55 @@
|
|||
],
|
||||
"time": "2013-11-22 08:30:29"
|
||||
},
|
||||
{
|
||||
"name": "psr/http-message",
|
||||
"version": "1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/php-fig/http-message.git",
|
||||
"reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/php-fig/http-message/zipball/85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
|
||||
"reference": "85d63699f0dbedb190bbd4b0d2b9dc707ea4c298",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.0.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Psr\\Http\\Message\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "PHP-FIG",
|
||||
"homepage": "http://www.php-fig.org/"
|
||||
}
|
||||
],
|
||||
"description": "Common interface for HTTP messages",
|
||||
"keywords": [
|
||||
"http",
|
||||
"http-message",
|
||||
"psr",
|
||||
"psr-7",
|
||||
"request",
|
||||
"response"
|
||||
],
|
||||
"time": "2015-05-04 20:22:00"
|
||||
},
|
||||
{
|
||||
"name": "psr/log",
|
||||
"version": "1.0.0",
|
||||
|
@ -1337,16 +1606,16 @@
|
|||
},
|
||||
{
|
||||
"name": "phpunit/phpunit",
|
||||
"version": "4.8.11",
|
||||
"version": "4.8.12",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||
"reference": "bdd199472410fd7e32751f9c814c7e06f2c21bd5"
|
||||
"reference": "00194eb95989190a73198390ceca081ad3441a7f"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/bdd199472410fd7e32751f9c814c7e06f2c21bd5",
|
||||
"reference": "bdd199472410fd7e32751f9c814c7e06f2c21bd5",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/00194eb95989190a73198390ceca081ad3441a7f",
|
||||
"reference": "00194eb95989190a73198390ceca081ad3441a7f",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1405,7 +1674,7 @@
|
|||
"testing",
|
||||
"xunit"
|
||||
],
|
||||
"time": "2015-10-07 10:39:46"
|
||||
"time": "2015-10-12 03:36:47"
|
||||
},
|
||||
{
|
||||
"name": "phpunit/phpunit-mock-objects",
|
||||
|
@ -1781,16 +2050,16 @@
|
|||
},
|
||||
{
|
||||
"name": "sebastian/global-state",
|
||||
"version": "1.1.0",
|
||||
"version": "1.1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/sebastianbergmann/global-state.git",
|
||||
"reference": "23af31f402993cfd94e99cbc4b782e9a78eb0e97"
|
||||
"reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23af31f402993cfd94e99cbc4b782e9a78eb0e97",
|
||||
"reference": "23af31f402993cfd94e99cbc4b782e9a78eb0e97",
|
||||
"url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
|
||||
"reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -1828,7 +2097,7 @@
|
|||
"keywords": [
|
||||
"global state"
|
||||
],
|
||||
"time": "2015-06-21 15:11:22"
|
||||
"time": "2015-10-12 03:26:01"
|
||||
},
|
||||
{
|
||||
"name": "sebastian/recursion-context",
|
||||
|
|
1
console.bat
Normal file
1
console.bat
Normal file
|
@ -0,0 +1 @@
|
|||
@php console %*
|
BIN
public/assets/img/logo-icon.png
Normal file
BIN
public/assets/img/logo-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
1
public/assets/img/logo-icon.svg
Normal file
1
public/assets/img/logo-icon.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg viewBox="0 0 256 256" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M107.7 141.3V58.3C100.4 52.2 95.8 43.1 95.8 32.95 95.8 14.75 110.6 0 128.8 0 143.6 0 156.2 9.86 160.3 23.4 166.2 19.1 177.4 12.45 192.5 12.45 213.3 12.45 251.5 19.1 251.5 92.2 251.5 165.3 216.1 176.3 191.9 176.3 170.2 176.3 156.3 164.4 148.7 159V196.9C156.6 202.9 161.7 212.4 161.7 223.1 161.7 241.2 147 256 128.8 256 110.6 256 95.8 241.2 95.8 223.1 95.8 212.9 100.4 203.8 107.7 197.7V178.9C104.6 175.5 99.6 171.2 92 168.3 81.5 164.4 72.7 167.2 56.4 160.8 41 154.8 25.2 141.4 23.53 114.9 12 109.8 4 98.2 4 84.8 4 66.6 18.75 51.85 36.95 51.85 55.1 51.85 69.89 66.6 69.89 84.8 69.89 96.6 63.7 107 54.3 112.8 55.5 126.6 66.5 136 85 136 95.2 136 102.7 138.7 107.7 141.3M148.7 61.67V131.8C154.1 136.5 163.6 143.2 178.9 143.2 195.7 143.2 211.7 129.6 211.7 94.2 211.7 58.71 192.8 44.62 177 44.62 163.4 44.62 155.9 53.6 148.7 61.67M36.95 100.5C45.6 100.5 52.61 93.4 52.61 84.8 52.61 76.1 45.6 69.1 36.95 69.1 28.3 69.1 21.28 76.1 21.28 84.8 21.28 93.4 28.3 100.5 36.95 100.5M128.8 238.7C137.4 238.7 144.4 231.7 144.4 223.1 144.4 214.4 137.4 207.4 128.8 207.4 120.1 207.4 113.1 214.4 113.1 223.1 113.1 231.7 120.1 238.7 128.8 238.7M128.8 48.61C137.4 48.61 144.4 41.6 144.4 32.95 144.4 24.3 137.4 17.28 128.8 17.28 120.1 17.28 113.1 24.3 113.1 32.95 113.1 41.6 120.1 48.61 128.8 48.61" fill="#2f749f"/></g></svg>
|
After Width: | Height: | Size: 1.4 KiB |
|
@ -108,8 +108,8 @@ var Build = Class.extend({
|
|||
output = $('<div class="box-body"></div>').append(output);
|
||||
}
|
||||
|
||||
var container = $('<div></div>').addClass('ui-plugin ' + plugin.css);
|
||||
var content = $('<div></div>').attr('id', plugin.id).append(output);
|
||||
var container = $('<div></div>').addClass('ui-plugin ' + plugin.css).attr('id', plugin.id);
|
||||
var content = $('<div></div>').append(output);
|
||||
content.addClass('box box-default');
|
||||
|
||||
if (plugin.title) {
|
||||
|
@ -145,4 +145,4 @@ var Build = Class.extend({
|
|||
|
||||
}
|
||||
})
|
||||
});
|
||||
});
|
||||
|
|
1
public/assets/js/sprintf.min.map
Normal file
1
public/assets/js/sprintf.min.map
Normal file
|
@ -0,0 +1 @@
|
|||
{"version":3,"file":"sprintf.min.js","sources":["../src/sprintf.js"],"names":["window","sprintf","key","arguments","cache","hasOwnProperty","parse","format","call","get_type","variable","Object","prototype","toString","slice","toLowerCase","str_repeat","input","multiplier","Array","join","re","not_string","number","json","not_json","text","modulo","placeholder","key_access","index_access","sign","parse_tree","argv","arg","i","k","match","pad","pad_character","pad_length","cursor","tree_length","length","node_type","output","is_positive","Error","test","isNaN","TypeError","String","fromCharCode","parseInt","JSON","stringify","toExponential","parseFloat","toFixed","toPrecision","substring","toUpperCase","replace","charAt","fmt","_fmt","arg_names","exec","SyntaxError","field_list","replacement_field","field_match","vsprintf","_argv","splice","apply","exports","define","amd","this"],"mappings":"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"}
|
Loading…
Reference in a new issue