public static function newSpecsFromList(array $specs) { foreach ($specs as $key => $spec) { if (is_array($spec)) { $specs[$key] = PhutilArgumentSpecification::newQuickSpec($spec); } } return $specs; }
public function testSpecs() { $good_specs = array(array('name' => 'verbose'), array('name' => 'verbose', 'short' => 'v', 'help' => 'Derp.', 'param' => 'level', 'default' => 'y', 'conflicts' => array('quiet' => true), 'wildcard' => false), array('name' => 'files', 'wildcard' => true)); $bad_specs = array(array(), array('alias' => 'v'), array('name' => 'derp', 'fruit' => 'apple'), array('name' => 'x', 'default' => 'y'), array('name' => 'x', 'param' => 'y', 'default' => 'z', 'repeat' => true), array('name' => 'x', 'wildcard' => true, 'repeat' => true), array('name' => 'x', 'param' => 'y', 'wildcard' => true)); $cases = array(array(true, $good_specs), array(false, $bad_specs)); foreach ($cases as $case) { list($expect, $specs) = $case; foreach ($specs as $spec) { $caught = null; try { PhutilArgumentSpecification::newQuickSpec($spec); } catch (PhutilArgumentSpecificationException $ex) { $caught = $ex; } $this->assertEqual(!$expect, $caught instanceof Exception, "Spec validity for: " . print_r($spec, true)); } } }