Esempio n. 1
0
 def jobs(self):
     """[(job, job_path)] sequence"""
     for path, _, filenames in os.walk(
             os.path.dirname(bootstrap.job_script(JOB))):
         for job in filenames:
             job_path = os.path.join(path, job)
             yield job, job_path
 def jobs(self):
     """[(job, job_path)] sequence"""
     for path, _, filenames in os.walk(
         os.path.dirname(bootstrap.job_script(JOB))):
         for job in filenames:
             job_path = os.path.join(path, job)
             yield job, job_path
Esempio n. 3
0
 def jobs(self):
     """[(job, job_path)] sequence"""
     dirname = os.path.dirname(bootstrap.job_script(JOB))
     for filenames in os.listdir(dirname):
         for job in filenames:
             if job.endswith('.sh'):
                 job_path = os.path.join(dirname, job)
                 yield job, job_path
Esempio n. 4
0
    def CheckBootstrapYaml(self, path, check):
        with open(os.path.join(os.path.dirname(__file__), path)) as fp:
            doc = yaml.safe_load(fp)

        project = None
        defined_templates = set()
        for item in doc:
            if not isinstance(item, dict):
                continue
            if isinstance(item.get('job-template'), dict):
                defined_templates.add(item['job-template']['name'])
            if not isinstance(item.get('project'), dict):
                continue
            project = item['project']
            self.assertIn('bootstrap-', project.get('name'))
            break
        else:
            self.fail('Could not find bootstrap-pull-jobs project')

        self.assertIn('jobs', project)
        used_templates = {j for j in project['jobs']}
        msg = '\nMissing templates: %s\nUnused templates: %s' % (
            ','.join(used_templates - defined_templates),
            ','.join(defined_templates - used_templates))
        self.assertEquals(defined_templates, used_templates, msg)

        jobs = project.get('suffix')
        if not jobs or not isinstance(jobs, list):
            self.fail('Could not find suffix list in %s' % project)

        for job in jobs:
            # Things to check on all bootstrap jobs
            if not isinstance(job, dict):
                self.fail('suffix items should be dicts', jobs)
            self.assertEquals(1, len(job), job)
            name = job.keys()[0]
            real_job = job[name]

            path = bootstrap.job_script(real_job.get('job-name'))
            self.assertTrue(os.path.isfile(path), path)
            for key, value in real_job.items():
                if not isinstance(value, (basestring, int)):
                    self.fail('Jobs may not contain child objects %s: %s' %
                              (key, value))
                if '{' in str(value):
                    self.fail('Jobs may not contain {expansions}' %
                              (key, value))  # Use simple strings
            # Things to check on specific flavors.
            self.assertIn('repo-name', real_job)
            self.assertIn('.', real_job['repo-name'])  # Has domain
            job_name = check(real_job, name)
            self.assertTrue(job_name)
            self.assertEquals(job_name, real_job.get('job-name'))
    def CheckBootstrapYaml(self, path, check, suffix='suffix'):
        with open(os.path.join(
            os.path.dirname(__file__), path)) as fp:
            doc = yaml.safe_load(fp)

        project = None
        defined_templates = set()
        for item in doc:
            if not isinstance(item, dict):
                continue
            if isinstance(item.get('job-template'), dict):
                defined_templates.add(item['job-template']['name'])
            if not isinstance(item.get('project'), dict):
                continue
            project = item['project']
            self.assertIn('bootstrap-', project.get('name'))
            break
        else:
            self.fail('Could not find bootstrap-pull-jobs project')

        self.assertIn('jobs', project)
        used_templates = {j for j in project['jobs']}
        msg = '\nMissing templates: %s\nUnused templates: %s' % (
            ','.join(used_templates - defined_templates),
            ','.join(defined_templates - used_templates))
        self.assertEquals(defined_templates, used_templates, msg)

        jobs = project.get(suffix)
        if not jobs or not isinstance(jobs, list):
            self.fail('Could not find %s list in %s' % (suffix, project))

        for job in jobs:
            # Things to check on all bootstrap jobs
            if not isinstance(job, dict):
                self.fail('suffix items should be dicts', jobs)
            self.assertEquals(1, len(job), job)
            name = job.keys()[0]
            real_job = job[name]

            path = bootstrap.job_script(real_job.get('job-name'))
            self.assertTrue(os.path.isfile(path), name)
            for key, value in real_job.items():
                if not isinstance(value, (basestring, int)):
                    self.fail('Jobs may not contain child objects %s: %s' % (
                        key, value))
                if '{' in str(value):
                    self.fail('Jobs may not contain {expansions}' % (
                        key, value))  # Use simple strings
            # Things to check on specific flavors.
            job_name = check(real_job, name)
            self.assertTrue(job_name)
            self.assertEquals(job_name, real_job.get('job-name'))