file = NULL;
}
public function tearDown() {
if ($this->file) {
unlink($this->file);
}
parent::tearDown();
}
public function testGood_file() {
$this->file = tempnam(sys_get_temp_dir(), 'infoxml-');
file_put_contents($this->file, "foozamboni");
$info = CRM_Extension_Info::loadFromFile($this->file);
$this->assertEquals('test.foo', $info->key);
$this->assertEquals('foo', $info->file);
$this->assertEquals('zamboni', $info->typeInfo['extra']);
}
public function testBad_file() {
// vs file>
$this->file = tempnam(sys_get_temp_dir(), 'infoxml-');
file_put_contents($this->file, "file>foo");
$exc = NULL;
try {
$info = CRM_Extension_Info::loadFromFile($this->file);
}
catch (CRM_Extension_Exception $e) {
$exc = $e;
}
$this->assertTrue(is_object($exc));
}
public function testGood_string() {
$data = "foozamboni";
$info = CRM_Extension_Info::loadFromString($data);
$this->assertEquals('test.foo', $info->key);
$this->assertEquals('foo', $info->file);
$this->assertEquals('zamboni', $info->typeInfo['extra']);
$this->assertEquals([], $info->requires);
}
public function testGood_string_extras() {
$data = "testbar
org.civicrm.aorg.civicrm.b
";
$info = CRM_Extension_Info::loadFromString($data);
$this->assertEquals('test.bar', $info->key);
$this->assertEquals('testbar', $info->file);
$this->assertEquals('Civi\\', $info->classloader[0]['prefix']);
$this->assertEquals('Civi', $info->classloader[0]['path']);
$this->assertEquals(['org.civicrm.a', 'org.civicrm.b'], $info->requires);
}
public function testBad_string() {
// vs file>
$data = "file>foo";
$exc = NULL;
try {
$info = CRM_Extension_Info::loadFromString($data);
}
catch (CRM_Extension_Exception $e) {
$exc = $e;
}
$this->assertTrue(is_object($exc));
}
public function test_requirements() {
// Quicksearch requirement should get filtered out per extension-compatibility.json
$data = "fooexample.testcom.ixiam.modules.quicksearch";
$info = CRM_Extension_Info::loadFromString($data);
$this->assertEquals(['example.test'], $info->requires);
}
}