[apparmor] [PATCH v2 8/8] utils: Fix apparmor.easyprof import in test-aa-easyprof.py
Tyler Hicks
tyhicks at canonical.com
Wed Mar 1 22:25:41 UTC 2017
On 03/01/2017 04:11 PM, Seth Arnold wrote:
> On Wed, Mar 01, 2017 at 08:52:06PM +0000, Tyler Hicks wrote:
>> The test-aa-easyprof.py script was attempting to do its own special
>> setup to import the in-tree easyprof module. However, this proved to be
>> very flaky and resulted in the test periodically failing due to an
>> AttributeError the first time easyprof.parse_args() was called.
>>
>> This patch removes the flakiness by trusting that PYTHONPATH is set up
>> appropriately before the test script is ran. PYTHONPATH is already
>> initialized appropriately by utils/test/Makefile according to the
>> USE_SYSTEM make variable.
>>
>> Signed-off-by: Tyler Hicks <tyhicks at canonical.com>
>> Cc: Christian Boltz <apparmor at cboltz.de>
>
> Acked-by: Seth Arnold <seth.arnold at canonical.com>
>
> This feels so much less brittle. :)
Agreed! I wish I understood why the old code intermittently failed but
this change is such a no-brainer that I didn't think a deeper
investigation was worth it.
Thanks for the review!
Tyler
>
> Thanks
>
>> ---
>> utils/test/test-aa-easyprof.py | 26 ++------------------------
>> 1 file changed, 2 insertions(+), 24 deletions(-)
>>
>> diff --git a/utils/test/test-aa-easyprof.py b/utils/test/test-aa-easyprof.py
>> index e7916de..ff69c42 100755
>> --- a/utils/test/test-aa-easyprof.py
>> +++ b/utils/test/test-aa-easyprof.py
>> @@ -18,6 +18,8 @@ import sys
>> import tempfile
>> import unittest
>>
>> +import apparmor.easyprof as easyprof
>> +
>> topdir = None
>> debugging = False
>>
>> @@ -2673,40 +2675,16 @@ POLICYGROUPS_DIR="%s/templates"
>> # Main
>> #
>> if __name__ == '__main__':
>> - def cleanup(files):
>> - for f in files:
>> - if os.path.exists(f):
>> - os.unlink(f)
>> -
>> absfn = os.path.abspath(sys.argv[0])
>> topdir = os.path.dirname(os.path.dirname(absfn))
>>
>> if len(sys.argv) > 1 and (sys.argv[1] == '-d' or sys.argv[1] == '--debug'):
>> debugging = True
>>
>> - created = []
>> -
>> - # Create the necessary files to import aa-easyprof
>> - init = os.path.join(os.path.dirname(absfn), '__init__.py')
>> - if not os.path.exists(init):
>> - open(init, 'a').close()
>> - created.append(init)
>> -
>> - symlink = os.path.join(os.path.dirname(absfn), 'easyprof.py')
>> - if not os.path.exists(symlink):
>> - os.symlink(os.path.join(topdir, 'apparmor', 'easyprof.py'), symlink)
>> - created.append(symlink)
>> - created.append(symlink + 'c')
>> -
>> - # Now that we have everything we need, import aa-easyprof
>> - import easyprof
>> -
>> # run the tests
>> suite = unittest.TestSuite()
>> suite.addTest(unittest.TestLoader().loadTestsFromTestCase(T))
>> rc = unittest.TextTestRunner(verbosity=2).run(suite)
>>
>> - cleanup(created)
>> -
>> if not rc.wasSuccessful():
>> sys.exit(1)
>>
>>
More information about the AppArmor
mailing list