def test_compare_shared_object(self):
        tester = AFSImageComparator("","","")

        res = tester.compare_shared_object('unit_test_files/so_.text_same/local_camera.omap4.so', 'unit_test_files/so_.text_same/remote_camera.omap4.so')
        self.assertTrue(res)

        res = tester.compare_shared_object('unit_test_files/so_.text_differ/local_libbcc.so', 'unit_test_files/so_.text_differ/remote_libbcc.so')
        self.assertFalse(res)
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--internal_package", "-i", help="path to fresh build", required=True)
    group = parser.add_mutually_exclusive_group(required=True)
    group.add_argument("--external_package", "-e", help="path to latest daily build")
    group.add_argument("--external_dir", "-d", help="path to daily builds folder")
    parser.add_argument("--tmp-dir", help="path to tmp-dir", required=False)
    parser.add_argument("--pattern", "-p", help="archive package name pattern, used with -d option", required=False, default = "*.gz")
    args = parser.parse_args()

    nowString = re.sub('\..*$','',datetime.datetime.now().isoformat('-'))
   
    if not (os.path.isfile(args.internal_package) and os.access(args.internal_package, os.R_OK)):
        print FAIL_COLOR + "Problems with reading internal package" + END_COLOR + '\n'
        parser.print_help()
        sys.exit(1)

    if args.external_package:
        if not (os.path.isfile(args.external_package) and os.access(args.external_package, os.R_OK)):
            print FAIL_COLOR + "Problems with reading external package" + END_COLOR + '\n'
            parser.print_help()
            sys.exit(1)
        externalPackage = args.external_package
    else:
        print "Ext dir is " + args.external_dir
        externalPackage = findNewestBuild(args.external_dir, args.pattern)
    
    print "Comparing to " + externalPackage 
    if args.tmp_dir:
        tmpDir = args.tmp_dir if args.tmp_dir.endswith('/') else args.tmp_dir + '/'
    else:
        tmpDir = '/tmp/'
    workPath =  tmpDir + nowString + '/'
    os.mkdir(workPath)
    internalSysImageRetlist = extractSystemImage(args.internal_package, workPath)
    if internalSysImageRetlist is None:
        print FAIL_COLOR + 'Failed to extract internal sysImage' + END_COLOR + "\nfrom " + args.internal_package
        sys.exit(1)
    externalSysImageRetlist = extractSystemImage(externalPackage, workPath)
    if externalSysImageRetlist is None:
        print FAIL_COLOR + 'Failed to extract external sysImage' + END_COLOR + "\nfrom " + externalPackage
        sys.exit(1)
    
    systemComparator = AFSImageComparator(internalSysImageRetlist[0], externalSysImageRetlist[0], workPath)
    
    systemComparator.run()
    OK = systemComparator.run()
    del systemComparator
    if OK:
        print OK_COLOR + "SysImages are same" + END_COLOR
        result = 0
    else:
        result = 255

    print "You might want to cleanup\n    rm -rf " + workPath
    sys.exit(result)