If I have a ModuleScript (ModuleA) which returns a table, it will return a pointer to that table. This means that if I have multiple scripts on the server (ScriptA, ScriptB, ScriptC etc.) which all require ModuleA, the pointers will all be the same, e.g. table: 101B56F0. So if I edit a value in the returned table in ScriptA, then the table will also change for ScriptB and ScriptC if they also required ModuleA (because the pointers all point to the same table).
Now, if I start a Test Server and require ModuleA, the pointer is suddenly different from the pointers returned by the Scripts: e.g. table: 11067C98. This shouldn’t be the case. If I require ModuleA through the command bar in the Test Server it should return a pointer to the same table instead (table: 101B56F0). It seems that right now the game world and the command bar in a Test Server are treated as different environments. This is really unfortunate because it makes testing and debugging harder if the testing process includes editing tables returned by ModuleScripts.
For the game I’m working on I have a ModuleScript which saves data for every player. If I want to give one of the test players extra currency I cannot use the command bar in a Test Server because of this behavior. Using the console in an online server does work correctly though which makes me believe this is a bug with the command bar.