#include #include "rbx/test/DataModelFixture.h" #include "Script/ModuleScript.h" #include "Script/Script.h" #include "V8DataModel/BasicPartInstance.h" #include "V8DataModel/Value.h" using namespace RBX; BOOST_AUTO_TEST_SUITE(ModuleScriptTest) BOOST_AUTO_TEST_CASE(ModuleScriptsDoNotRunOnTheirOwn) { shared_ptr moduleScript = Creatable::create(); moduleScript->setSource(ProtectedString::fromTestSource( "Instance.new(\"BUG\", Workspace) " "return 1")); moduleScript->setName("Module"); DataModelFixture dm; { DataModel::LegacyLock l(&dm, DataModelJob::Write); moduleScript->setParent(dm->getWorkspace()); ServiceProvider::create(&dm)->run(); dm->create(); } BOOST_CHECK(ModuleScript::NotRunYet == moduleScript->vmState( dm->find()->getGlobalState(Security::GameScript_)).getCurrentState()); BOOST_CHECK(dm->getWorkspace()->findFirstChildByName("BUG") == NULL); } BOOST_AUTO_TEST_CASE(ScopeOfScriptInReturnedFunctions) { shared_ptr moduleScript = Creatable::create(); moduleScript->setSource(ProtectedString::fromTestSource( "return function () return script.Name .. \"2\" end")); moduleScript->setName("Module"); shared_ptr