Added 'Build with debug' button for Admin on project page. Issue #22

This commit is contained in:
Dmitry Khomutov 2017-02-19 00:52:13 +07:00
parent 96aa345dc0
commit ebb08d868b
No known key found for this signature in database
GPG key ID: 7EB36C9576F9ECB9
9 changed files with 29 additions and 8 deletions

View file

@ -115,8 +115,16 @@ class ProjectController extends PHPCensor\Controller
throw new NotFoundException(Lang::get('project_x_not_found', $projectId));
}
$debug = (boolean)$this->getParam('debug', false);
$extra = null;
if ($debug && $this->currentUserIsAdmin()) {
$extra = [
'debug' => true,
];
}
$email = $_SESSION['php-censor-user']->getEmail();
$build = $this->buildService->createBuild($project, null, urldecode($branch), $email);
$build = $this->buildService->createBuild($project, null, urldecode($branch), $email, null, $extra);
if ($this->buildService->queueError) {
$_SESSION['global_error'] = Lang::get('add_to_queue_failed');

View file

@ -66,7 +66,8 @@ PHP Censor',
'manage_users' => 'Manage Users',
'plugins' => 'Plugins',
'view' => 'View',
'build_now' => 'Build Now',
'build_now' => 'Build now',
'build_now_debug' => 'Build now with debug',
'edit_project' => 'Edit Project',
'delete_project' => 'Delete Project',

View file

@ -65,6 +65,7 @@ PHP Censor',
'plugins' => 'Плагины',
'view' => 'Отчет',
'build_now' => 'Собрать',
'build_now_debug' => 'Собрать в режиме отладки',
'edit_project' => 'Редактировать проект',
'delete_project' => 'Удалить проект',

View file

@ -38,7 +38,7 @@ class BuildLogger implements LoggerAwareInterface
public function __construct(LoggerInterface $logger, Build $build)
{
$this->logger = $logger;
$this->build = $build;
$this->build = $build;
}
/**
@ -101,7 +101,10 @@ class BuildLogger implements LoggerAwareInterface
*/
public function logDebug($message)
{
if (defined('DEBUG_MODE') && DEBUG_MODE) {
if (
(defined('DEBUG_MODE') && DEBUG_MODE) ||
((boolean)$this->build->getExtra('debug'))
) {
$this->log("\033[0;36m" . $message . "\033[0m");
}
}

View file

@ -522,6 +522,8 @@ class Build extends Model
*/
public function setExtra($value)
{
$value = json_encode($value);
$this->validateString('Extra', $value);
if ($this->data['extra'] === $value) {

View file

@ -87,7 +87,7 @@ class BuildService
}
if (!is_null($extra)) {
$build->setExtra(json_encode($extra));
$build->setExtra($extra);
}
$build = $this->buildStore->save($build);

View file

@ -16,7 +16,13 @@
<div class="pull-right btn-group">
<?php if (!$project->getArchived()): ?>
<a class="btn btn-success" href="<?php print APP_URL . 'project/build/' . $project->getId(); ?><?php echo !empty($branch) ? '/' . urlencode($branch) : '' ?>">
<?php if($this->User()->getIsAdmin()): ?>
<a class="btn btn-danger" href="<?= APP_URL . 'project/build/' . $project->getId(); ?><?= !empty($branch) ? '/' . urlencode($branch) : '' ?>?debug=1">
<?php Lang::out('build_now_debug'); ?>
</a>
<?php endif; ?>
<a class="btn btn-success" href="<?= APP_URL . 'project/build/' . $project->getId(); ?><?= !empty($branch) ? '/' . urlencode($branch) : '' ?>">
<?php Lang::out('build_now'); ?>
</a>
<?php endif; ?>

View file

@ -63,7 +63,7 @@ class BuildTest extends \PHPUnit_Framework_TestCase
];
$build = new Build();
$build->setExtra(json_encode($info));
$build->setExtra($info);
$this->assertEquals('Item One', $build->getExtra('item1'));
$this->assertEquals(2, $build->getExtra('item2'));

View file

@ -100,7 +100,7 @@ class BuildServiceTest extends \PHPUnit_Framework_TestCase
$build->setFinished(new \DateTime());
$build->setCommitMessage('test');
$build->setCommitterEmail('test@example.com');
$build->setExtra(json_encode(['item1' => 1001]));
$build->setExtra(['item1' => 1001]);
$returnValue = $this->testedService->createDuplicateBuild($build);