[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