Exemplo n.º 1
0
def main():
    """Starting point of a program"""
    args = parse_args()
    if not os.path.isfile(args.config):
        conf = config_setup(args.config)
    else:
        with open(args.config) as f:
            conf = yaml.load(f)
    auth = HTTPBasicAuth(conf['jenkins']['user'], conf['jenkins']['password'])
    regex = re.compile(args.re, args.flags)
    if args.command == 'list':
        for bn in args.builds:
            build = Build(auth, conf['jenkins']['url'], conf['jenkins']['job'], bn)
            grouped = group_by_regex(build.console_output(), regex, args.key_group, args.values_group)
            if args.keys_only:
                for key in grouped.keys():
                    print(key)
            else:
                for key, values in grouped.items():
                    print(key)
                    for value in values:
                        print("\t{}".format(value))
                    print()
    elif args.command == 'diff':
        build_a = Build(auth, conf['jenkins']['url'], conf['jenkins']['job'], args.build_a)
        build_b = Build(auth, conf['jenkins']['url'], conf['jenkins']['job'], args.build_b)
        groups_a = group_by_regex(build_a.console_output(), regex, args.key_group, args.values_group)
        groups_b = group_by_regex(build_b.console_output(), regex, args.key_group, args.values_group)
        diff = dict_diff(groups_a, groups_b)
        sys.stdout.write(format_diff(diff, color=args.color).getvalue())
Exemplo n.º 2
0
 def test_parse_tests_should_have_named_groups(self):
     self.assertRaises(
         ValueError,
         lambda: group_by_regex(self.console_output, re.compile('^(\w+)\.py\s(\w+)$', re.M), 'keys', 'values')
     )
     self.assertRaises(
         ValueError,
         lambda: group_by_regex(self.console_output, re.compile('^(?P<abra>\w+)\.py\s(?P<cadabra>\w+)$', re.M),
                                'keys', 'values')
     )
Exemplo n.º 3
0
 def test_parse_tests_should_return_proper_dict(self):
     tests = group_by_regex(self.console_output, re.compile('^(?P<test_file>\w+)\.py\s(?P<test_case>\w+)$', re.M),
                            'test_file', 'test_case')
     self.assertEquals(len(tests['test1']), 2)
     self.assertEquals(len(tests['test2']), 1)
     self.assertEquals(len(tests['test3']), 1)
     self.assertTrue('test_case1' in tests['test1'])
     self.assertTrue('test_case2' in tests['test1'])
Exemplo n.º 4
0
def main():
    """Starting point of a program"""
    args = parse_args()
    if not os.path.isfile(args.config):
        conf = config_setup(args.config)
    else:
        with open(args.config) as f:
            conf = yaml.load(f)
    auth = HTTPBasicAuth(conf['jenkins']['user'], conf['jenkins']['password'])
    regex = re.compile(args.re, args.flags)
    if args.command == 'list':
        for bn in args.builds:
            build = Build(auth, conf['jenkins']['url'], conf['jenkins']['job'],
                          bn)
            grouped = group_by_regex(build.console_output(), regex,
                                     args.key_group, args.values_group)
            if args.keys_only:
                for key in grouped.keys():
                    print(key)
            else:
                for key, values in grouped.items():
                    print(key)
                    for value in values:
                        print("\t{}".format(value))
                    print()
    elif args.command == 'diff':
        build_a = Build(auth, conf['jenkins']['url'], conf['jenkins']['job'],
                        args.build_a)
        build_b = Build(auth, conf['jenkins']['url'], conf['jenkins']['job'],
                        args.build_b)
        groups_a = group_by_regex(build_a.console_output(), regex,
                                  args.key_group, args.values_group)
        groups_b = group_by_regex(build_b.console_output(), regex,
                                  args.key_group, args.values_group)
        diff = dict_diff(groups_a, groups_b)
        sys.stdout.write(format_diff(diff, color=args.color).getvalue())