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)
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)
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))
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)
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)
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
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()