<div dir="ltr"><span style="font-size:12.8px">Hi,</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">I followed these steps to set up a Python 3.6 build environment:</span><br style="font-size:12.8px"><br style="font-size:12.8px"><a href="https://lists.buildbot.net/pipermail/devel/2017-February/012310.html" target="_blank" style="font-size:12.8px">https://lists.buildbot.net/<wbr>pipermail/devel/2017-February/<wbr>012310.html</a><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">If invoke trial like this:</span><div>







<p class="gmail-p1"><span class="gmail-s1">trial buildbot.test.unit.test_scripts_checkconfig.TestConfigLoader</span></p><p class="gmail-p1">then these two tests fail:<br></p>test_success_import_packagetest_success_imports<br><br>The weird thing is if I run all the tests individually they pass.<br><br>I focused on the test_success_imports case to track the problem down.</div><div><br></div><div>That test does the following:</div><div><br></div><div>(1)  creates a minimal file othermodule.py in some directory</div><div>(2)  creates a master.cfg file in the same directory, with a line that does:</div><div>          "from othermodule import ...."</div><div>(3)  reads the master.cfg file via the buildbot functions</div><div><br></div><div>It works fine on Python 2, but fails in this weird way with Python 3.</div><div><br></div><div>I traced the problem down to the loadConfigDict() function here:</div><div><br></div><div><a href="https://github.com/buildbot/buildbot/blob/master/master/buildbot/config.py#L103">https://github.com/buildbot/buildbot/blob/master/master/buildbot/config.py#L103</a><br></div><div><br></div><div>What that function is supposed to do is:</div><div><br></div><div>(1)  Sets the '__file__' local environment variable to the full path of master.cfg</div><div>(2)  Sets the basedir local environment variable to the full path of the directory where</div><div>      master.cfg is located</div><div>(3)  Puts the basedir into sys.path</div><div>(4)  Reads master.cfg creating a big string, and then calls exec() on the string.</div><div><br></div><div>For some reason, on Python 3, it cannot consistently find othermodule,</div><div>because othermodule was not in the PYTHONPATH used when originally</div><div>starting buildbot.</div><div><br></div><div>If I put othermodule.py into some directory in PYTHONPATH</div><div>separate from master.cfg, then this works on Python 3, but that is not ideal.</div><div><br></div><div>I spent a lot of time trying to figure out how to fix this,</div><div>but couldn't get anything to work.</div><div><br></div><div>If someone can help, that would be great!!</div><div><br></div><div>--</div><div>Craig</div><div><br></div><div><br></div><div><br></div></div>