I'm using arc as the tool for code reviewing. The bin/arc is not in the git repo, but I wanna add a test engine in the git repo. Thus I create directories test-engine, in the test-engine:
__phutil_library_init__.php
__phutil_library_map__.php,
src/PyEngine.php
the phutil_library_init.php:
<?php
phutil_register_library('PyEngine', __FILE__);
the __phutil_library_map__.php:
phutil_register_library_map(array(
'__library_version__' => 2,
'class' =>
array(
'PyEngine' => 'src/PyEngine.php',
),
'function' =>
array(
),
'xmap' =>
array(
'PyEngine' => 'ArcanistUnitTestEngine',
),
));
the .arcconfig:
{
"phabricator.uri" : "blabla",
"load" : [
"test-engine"
],
"unit.engine" : "PyEngine"
}
but when I run arc unit, it reports error:
phutil_register_library_map(array(
'__library_version__' => 2,
'class' =>
array(
'PyEngine' => 'src/PyEngine.php',
),
'function' =>
array(
),
'xmap' =>
array(
'PyEngine' => 'ArcanistUnitTestEngine',
),
));[2015-09-08 09:11:55] ERROR 8: Undefined index: PyEngine at [~/Documents/codes/arcanist/libphutil/src/moduleutils/PhutilBootloader.php:136]
PyEngine(head=dev, ref.master=fc7de2baac4e, ref.dev=615bad5693e1), arcanist(head=master, ref.master=968f4ae5d73e), phutil(head=master, ref.master=55f554b618b9)
#0 PhutilBootloader::getLibraryMap(string) called at [<phutil>/src/symbols/PhutilSymbolLoader.php:194]
#1 PhutilSymbolLoader::selectAndLoadSymbols() called at [<phutil>/src/moduleutils/PhutilBootloader.php:78]
#2 PhutilBootloader::registerLibrary(string, string) called at [<phutil>/src/moduleutils/core.php:4]
#3 phutil_register_library(string, string) called at [<PyEngine>/__phutil_library_init__.php:3]
#4 include_once(string) called at [<phutil>/src/moduleutils/PhutilBootloader.php:226]
#5 PhutilBootloader::executeInclude(string) called at [<phutil>/src/moduleutils/PhutilBootloader.php:207]
#6 PhutilBootloader::loadLibrary(string) called at [<phutil>/src/moduleutils/core.php:12]
#7 phutil_load_library(string) called at [<arcanist>/scripts/arcanist.php:611]
#8 arcanist_load_libraries(array, boolean, string, ArcanistWorkingCopyIdentity) called at [<arcanist>/scripts/arcanist.php:162]
phutil_register_library_map(array(
'__library_version__' => 2,
'class' =>
array(
'PyEngine' => 'src/PyEngine.php',
),
'function' =>
array(
),
'xmap' =>
array(
'PyEngine' => 'ArcanistUnitTestEngine',
),
));[2015-09-08 09:11:55] ERROR 8: Undefined index: PyEngine at [~/Documents/codes/arcanist/libphutil/src/moduleutils/PhutilBootloader.php:136]
PyEngine(head=dev, ref.master=fc7de2baac4e, ref.dev=615bad5693e1), arcanist(head=master, ref.master=968f4ae5d73e), phutil(head=master, ref.master=55f554b618b9)
#0 PhutilBootloader::getLibraryMap(string) called at [<phutil>/src/symbols/PhutilSymbolLoader.php:194]
#1 PhutilSymbolLoader::selectAndLoadSymbols() called at [<phutil>/src/__phutil_library_init__.php:22]
#2 __phutil_autoload(string)
#3 spl_autoload_call(string)
#4 call_user_func_array(array, array) called at [<phutil>/src/console/format.php:7]
#5 phutil_console_format(string, string) called at [<arcanist>/scripts/arcanist.php:413]
[2015-09-08 09:11:55] EXCEPTION: (Exception) libphutil v1 libraries are no longer supported. at [<phutil>/src/moduleutils/PhutilBootloader.php:144]
PyEngine(head=dev, ref.master=fc7de2baac4e, ref.dev=615bad5693e1), arcanist(head=master, ref.master=968f4ae5d73e), phutil(head=master, ref.master=55f554b618b9)
#0 PhutilBootloader::getLibraryMap(string) called at [<phutil>/src/symbols/PhutilSymbolLoader.php:194]
#1 PhutilSymbolLoader::selectAndLoadSymbols() called at [<phutil>/src/__phutil_library_init__.php:22]
#2 __phutil_autoload(string)
#3 spl_autoload_call(string)
#4 call_user_func_array(array, array) called at [<phutil>/src/console/format.php:7]
#5 phutil_console_format(string, string) called at [<arcanist>/scripts/arcanist.php:413]
How can I add the unit engine properly?
Did you ran arc liberate
again after adding your class (and was it used to actually create your lib in the first place)?
You can get a little info (this is not officially supported yet) here: https://secure.phabricator.com/book/phabcontrib/article/adding_new_classes/