Exemplo n.º 1
0
def main():
    if len(sys.argv) > 1:
        paths = sys.argv[1:]
    else:
        paths = [os.getcwd()]
    paths = [pathlib2.Path(path) for path in paths]
    yaml_paths = []
    while paths:
        path = paths.pop()
        if path.is_dir():
            paths.extend(path.iterdir())
        elif path.is_file():
            if path.suffix == '.yaml':
                yaml_paths.append(path)
    bad = 0
    ok = 0
    for path in yaml_paths:
        try:
            p = parser.YamlParser()
            p.parse(str(path))
            ok += 1
        except Exception:
            print("Path %s was not ok!!" % path, file=sys.stderr)
            traceback.print_exc()
            bad += 1
    print("Validated %s yaml files, %s were"
          " ok, %s were bad." % (ok + bad, ok, bad))
    if bad:
        sys.exit(1)
    else:
        sys.exit(0)
    def test_incorrect_template_params(self):
        self.conf_filename = None
        config = self._get_config()

        yp = parser.YamlParser(config)
        yp.parse(
            os.path.join(self.fixtures_path,
                         "failure_formatting_component.yaml"))

        reg = registry.ModuleRegistry(config)
        reg.set_parser_data(yp.data)

        self.assertRaises(errors.JenkinsJobsException, yp.expandYaml, reg)
        self.assertIn("Problem formatting with args", self.logger.output)
Exemplo n.º 3
0
    def test_incorrect_template_dimensions(self):
        self.conf_filename = None
        config = self._get_config()

        yp = parser.YamlParser(config)
        yp.parse(
            os.path.join(self.fixtures_path,
                         "incorrect_template_dimensions.yaml"))

        reg = registry.ModuleRegistry(config)

        e = self.assertRaises(Exception, yp.expandYaml, reg)
        self.assertIn("'NoneType' object is not iterable", str(e))
        self.assertIn("- branch: current\n  current: null", self.logger.output)
Exemplo n.º 4
0
    def test_invalid_view(self):
        self.conf_filename = None
        config = self._get_config()

        yp = parser.YamlParser(config)
        yp.parse(os.path.join(self.fixtures_path, "invalid_view.yaml"))

        reg = registry.ModuleRegistry(config)
        _, view_data = yp.expandYaml(reg)

        # Generate the XML tree
        xml_generator = xml_config.XmlViewGenerator(reg)
        e = self.assertRaises(errors.JenkinsJobsException,
                              xml_generator.generateXML, view_data)
        self.assertIn("Unrecognized view type:", str(e))
Exemplo n.º 5
0
    def test_yaml_snippet(self):
        self.conf_filename = None
        config = self._get_config()

        yp = parser.YamlParser(config)
        yp.parse(
            os.path.join(self.fixtures_path,
                         "failure_formatting_{}.yaml".format(self.name)))

        reg = registry.ModuleRegistry(config)

        self.assertRaises(Exception, yp.expandYaml, reg)
        self.assertIn("Failure formatting {}".format(self.name),
                      self.logger.output)
        self.assertIn("Problem formatting with args", self.logger.output)
Exemplo n.º 6
0
    def test_incorrect_template_params(self):
        self.conf_filename = None
        config = self._get_config()

        yp = parser.YamlParser(config)
        yp.parse(
            os.path.join(self.fixtures_path,
                         "failure_formatting_component.yaml"))

        reg = registry.ModuleRegistry(config)
        reg.set_parser_data(yp.data)
        job_data_list, view_data_list = yp.expandYaml(reg)

        xml_generator = xml_config.XmlJobGenerator(reg)
        self.assertRaises(Exception, xml_generator.generateXML, job_data_list)
        self.assertIn("Failure formatting component", self.logger.output)
        self.assertIn("Problem formatting with args", self.logger.output)
Exemplo n.º 7
0
    def get_jobs(self, jobs_glob=None, fn=None):
        if fn:
            r = registry.ModuleRegistry(self.jjb_config, self.jenkins.plugins_list)
            p = parser.YamlParser(self.jjb_config)
            p.load_files(fn)
            p.expandYaml(r, jobs_glob)
            jobs = [j["name"] for j in p.jobs]
        else:
            jobs = [
                j["name"]
                for j in self.jenkins.get_jobs()
                if not jobs_glob or parser.matches(j["name"], jobs_glob)
            ]

        jobs = sorted(jobs)
        for duplicate in list_duplicates(jobs):
            logging.warning("Found duplicate job name '%s', likely bug.", duplicate)

        logging.debug("Builder.get_jobs: returning %r", jobs)

        return jobs
Exemplo n.º 8
0
def generate_xml(fn):
    yaml_parser = parser.YamlParser()
    yaml_parser.parse(fn)
    yaml_parser.expandYaml()
    assert 1 == len(yaml_parser.jobs), "Expected one job"
    return yaml_parser.getXMLForJob(yaml_parser.jobs[0]).output()