diff options
Diffstat (limited to 'third_party/nix/tests/plugins')
-rw-r--r-- | third_party/nix/tests/plugins/local.mk | 9 | ||||
-rw-r--r-- | third_party/nix/tests/plugins/plugintest.cc | 24 |
2 files changed, 33 insertions, 0 deletions
diff --git a/third_party/nix/tests/plugins/local.mk b/third_party/nix/tests/plugins/local.mk new file mode 100644 index 000000000000..1d2bac052fd2 --- /dev/null +++ b/third_party/nix/tests/plugins/local.mk @@ -0,0 +1,9 @@ +libraries += libplugintest + +libplugintest_DIR := $(d) + +libplugintest_SOURCES := $(d)/plugintest.cc + +libplugintest_ALLOW_UNDEFINED := 1 + +libplugintest_EXCLUDE_FROM_LIBRARY_LIST := 1 diff --git a/third_party/nix/tests/plugins/plugintest.cc b/third_party/nix/tests/plugins/plugintest.cc new file mode 100644 index 000000000000..c085d33295be --- /dev/null +++ b/third_party/nix/tests/plugins/plugintest.cc @@ -0,0 +1,24 @@ +#include "config.hh" +#include "primops.hh" + +using namespace nix; + +struct MySettings : Config +{ + Setting<bool> settingSet{this, false, "setting-set", + "Whether the plugin-defined setting was set"}; +}; + +MySettings mySettings; + +static GlobalConfig::Register rs(&mySettings); + +static void prim_anotherNull (EvalState & state, const Pos & pos, Value ** args, Value & v) +{ + if (mySettings.settingSet) + mkNull(v); + else + mkBool(v, false); +} + +static RegisterPrimOp rp("anotherNull", 0, prim_anotherNull); |