2014-09-22 10:50:20 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
final class PhabricatorCelerityTestCase extends PhabricatorTestCase {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* This is more of an acceptance test case instead of a unit test. It verifies
|
|
|
|
* that the Celerity map is up-to-date.
|
|
|
|
*/
|
|
|
|
public function testCelerityMaps() {
|
|
|
|
$resources_map = CelerityPhysicalResources::getAll();
|
|
|
|
|
|
|
|
foreach ($resources_map as $resources) {
|
|
|
|
$old_map = new CelerityResourceMap($resources);
|
|
|
|
|
|
|
|
$new_map = id(new CelerityResourceMapGenerator($resources))
|
|
|
|
->generate();
|
|
|
|
|
Improve top-level exception handling
Summary:
Fixes T6692. Addresses two main issues:
- The write guard would sometimes not get disposed of on exception pathways, generating an unnecessary secondary error which was just a symptom of the original root error.
- This was generally confusing and reduced the quality of reports we received because users would report the symptomatic error sometimes instead of the real error.
- Instead, reflow the handling so that we always dispose of the write guard if we create one.
- If we missed the Controller-level error page generation (normally, a nice page with full CSS, etc), we'd jump straight to Startup-level error page generation (very basic plain text).
- A large class of errors occur too early or too late to be handled by Controller-level pages, but many of these errors are not fundamental, and the plain text page is excessively severe.
- Provide a mid-level simple HTML error page for errors which can't get full CSS, but also aren't so fundamental that we have no recourse but plain text.
Test Plan:
Mid-level errors now produce an intentional-looking error page:
{F259885}
Verified that setup errors still render properly.
@chad, feel free to tweak the exception page -- I just did a rough pass on it. Like the setup error stuff, it doesn't have Celerity, so we can't use `{$colors}` and no other CSS will be loaded.
Reviewers: chad, btrahan
Reviewed By: btrahan
Subscribers: epriestley, chad
Maniphest Tasks: T6692
Differential Revision: https://secure.phabricator.com/D11126
2015-01-02 19:49:27 +01:00
|
|
|
// Don't actually compare these values with assertEqual(), since the diff
|
|
|
|
// isn't helpful and is often enormously huge.
|
|
|
|
|
|
|
|
$maps_are_identical =
|
|
|
|
($new_map->getNameMap() === $old_map->getNameMap()) &&
|
|
|
|
($new_map->getSymbolMap() === $old_map->getSymbolMap()) &&
|
|
|
|
($new_map->getRequiresMap() === $old_map->getRequiresMap()) &&
|
|
|
|
($new_map->getPackageMap() === $old_map->getPackageMap());
|
|
|
|
|
|
|
|
$this->assertTrue(
|
|
|
|
$maps_are_identical,
|
|
|
|
pht(
|
|
|
|
'When this test fails, it means the Celerity resource map is out '.
|
2015-05-22 09:27:56 +02:00
|
|
|
'of date. Run `%s` to rebuild it.',
|
|
|
|
'bin/celerity map'));
|
2014-09-22 10:50:20 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|