def test_yaml_snippet(self): config = self._get_config() expected_xml = self._read_utf8_content() parser = YamlParser(config) parser.parse(self.in_filename) registry = ModuleRegistry(config) registry.set_parser_data(parser.data) job_data_list = parser.expandYaml(registry) # Generate the XML tree xml_generator = XmlJobGenerator(registry) xml_jobs = xml_generator.generateXML(job_data_list) xml_jobs.sort(key=operator.attrgetter('name')) # Prettify generated XML pretty_xml = u"\n".join(job.output().decode('utf-8') for job in xml_jobs) self.assertThat( pretty_xml, testtools.matchers.DocTestMatches(expected_xml, doctest.ELLIPSIS | doctest.REPORT_NDIFF) )
def _generate_xmljobs(self, options, jjb_config=None): builder = JenkinsManager(jjb_config) logger.info("Updating jobs in {0} ({1})".format( options.path, options.names)) orig = time.time() # Generate XML parser = YamlParser(jjb_config) registry = ModuleRegistry(jjb_config, builder.plugins_list) xml_job_generator = XmlJobGenerator(registry) xml_view_generator = XmlViewGenerator(registry) parser.load_files(options.path) registry.set_parser_data(parser.data) job_data_list, view_data_list = parser.expandYaml( registry, options.names) xml_jobs = xml_job_generator.generateXML(job_data_list) xml_views = xml_view_generator.generateXML(view_data_list) jobs = parser.jobs step = time.time() logging.debug('%d XML files generated in %ss', len(jobs), str(step - orig)) return builder, xml_jobs, xml_views
def test_yaml_snippet(self): config = self._get_config() expected_xml = self._read_utf8_content() parser = YamlParser(config) parser.parse(self.in_filename) registry = ModuleRegistry(config) registry.set_parser_data(parser.data) job_data_list, view_data_list = parser.expandYaml(registry) # Generate the XML tree xml_generator = XmlJobGenerator(registry) xml_jobs = xml_generator.generateXML(job_data_list) xml_jobs.sort(key=AlphanumSort) # Prettify generated XML pretty_xml = u"\n".join(job.output().decode('utf-8') for job in xml_jobs) self.assertThat( pretty_xml, testtools.matchers.DocTestMatches( expected_xml, doctest.ELLIPSIS | doctest.REPORT_NDIFF))
def _generate_xmljobs(self, options, jjb_config=None): builder = Builder(jjb_config) logger.info("Updating jobs in {0} ({1})".format( options.path, options.names)) orig = time.time() # Generate XML parser = YamlParser(jjb_config) registry = ModuleRegistry(jjb_config, builder.plugins_list) xml_generator = XmlJobGenerator(registry) parser.load_files(options.path) registry.set_parser_data(parser.data) job_data_list = parser.expandYaml(registry, options.names) xml_jobs = xml_generator.generateXML(job_data_list) jobs = parser.jobs step = time.time() logging.debug('%d XML files generated in %ss', len(jobs), str(step - orig)) return builder, xml_jobs
def test_yaml_snippet(self): config = self._get_config() expected_xml = (self._read_utf8_content().strip().replace( "<BLANKLINE>", "").replace("\n\n", "\n")) parser = YamlParser(config) parser.parse(self.in_filename) plugins_info = None if self.plugins_info_filename: plugins_info = self._read_yaml_content(self.plugins_info_filename) self.addDetail("plugins-info-filename", text_content(self.plugins_info_filename)) self.addDetail("plugins-info", text_content(str(plugins_info))) registry = ModuleRegistry(config, plugins_info) registry.set_parser_data(parser.data) job_data_list, view_data_list = parser.expandYaml(registry) # Generate the XML tree xml_generator = XmlJobGenerator(registry) xml_jobs = xml_generator.generateXML(job_data_list) xml_jobs.sort(key=AlphanumSort) # check reference files are under correct path for folders prefix = os.path.dirname(self.in_filename) # split using '/' since fullname uses URL path separator expected_folders = list( set([ os.path.normpath( os.path.join(prefix, "/".join(job_data["name"].split("/")[:-1]))) for job_data in job_data_list ])) actual_folders = [os.path.dirname(f) for f in self.out_filenames] six.assertCountEqual( self, expected_folders, actual_folders, "Output file under wrong path, was '%s', should be '%s'" % ( self.out_filenames[0], os.path.join(expected_folders[0], os.path.basename(self.out_filenames[0])), ), ) # Prettify generated XML pretty_xml = (u"\n".join(job.output().decode("utf-8") for job in xml_jobs).strip().replace( "\n\n", "\n")) self.assertThat( pretty_xml, testtools.matchers.DocTestMatches( expected_xml, doctest.ELLIPSIS | doctest.REPORT_NDIFF), )
def test_yaml_snippet(self): config = self._get_config() expected_xml = self._read_utf8_content().strip() \ .replace('<BLANKLINE>', '').replace('\n\n', '\n') parser = YamlParser(config) parser.parse(self.in_filename) plugins_info = None if self.plugins_info_filename: plugins_info = self._read_yaml_content(self.plugins_info_filename) self.addDetail("plugins-info-filename", text_content(self.plugins_info_filename)) self.addDetail("plugins-info", text_content(str(plugins_info))) registry = ModuleRegistry(config, plugins_info) registry.set_parser_data(parser.data) job_data_list, view_data_list = parser.expandYaml(registry) # Generate the XML tree xml_generator = XmlJobGenerator(registry) xml_jobs = xml_generator.generateXML(job_data_list) xml_jobs.sort(key=AlphanumSort) # check reference files are under correct path for folders prefix = os.path.dirname(self.in_filename) # split using '/' since fullname uses URL path separator expected_folders = list(set([ os.path.normpath( os.path.join(prefix, '/'.join(job_data['name'].split('/')[:-1]))) for job_data in job_data_list ])) actual_folders = [os.path.dirname(f) for f in self.out_filenames] six.assertCountEqual( self, expected_folders, actual_folders, "Output file under wrong path, was '%s', should be '%s'" % (self.out_filenames[0], os.path.join(expected_folders[0], os.path.basename(self.out_filenames[0])))) # Prettify generated XML pretty_xml = u"\n".join(job.output().decode('utf-8') for job in xml_jobs) \ .strip().replace('\n\n', '\n') self.assertThat( pretty_xml, testtools.matchers.DocTestMatches(expected_xml, doctest.ELLIPSIS | doctest.REPORT_NDIFF))
def test_yaml_snippet(self): config = self._get_config() expected_xml = self._read_utf8_content() parser = YamlParser(config) parser.parse(self.in_filename) registry = ModuleRegistry(config) registry.set_parser_data(parser.data) job_data_list, view_data_list = parser.expandYaml(registry) # Generate the XML tree xml_generator = XmlJobGenerator(registry) xml_jobs = xml_generator.generateXML(job_data_list) xml_jobs.sort(key=AlphanumSort) # check reference files are under correct path for folders prefix = os.path.dirname(self.in_filename) # split using '/' since fullname uses URL path separator expected_folders = list( set([ os.path.normpath( os.path.join(prefix, '/'.join(job_data['name'].split('/')[:-1]))) for job_data in job_data_list ])) actual_folders = [os.path.dirname(f) for f in self.out_filenames] six.assertCountEqual( self, expected_folders, actual_folders, "Output file under wrong path, was '%s', should be '%s'" % (self.out_filenames[0], os.path.join(expected_folders[0], os.path.basename(self.out_filenames[0])))) # Prettify generated XML pretty_xml = u"\n".join(job.output().decode('utf-8') for job in xml_jobs) self.assertThat( pretty_xml, testtools.matchers.DocTestMatches( expected_xml, doctest.ELLIPSIS | doctest.REPORT_NDIFF))
def assert_case(case_name): case_source, case_result = (os.path.join(BASE_PATH, case_name + ext) for ext in ['.yml', '.xml']) jjb_config = JJBConfig() builder = Builder(jjb_config) # Generate XML parser = YamlParser(jjb_config) registry = ModuleRegistry(jjb_config, builder.plugins_list) xml_generator = XmlJobGenerator(registry) parser.load_files(case_source) registry.set_parser_data(parser.data) job_data_list = parser.expandYaml(registry, []) xml_jobs = xml_generator.generateXML(job_data_list) result_xml = ET.XML(xml_jobs[0].output()) expected_xml = ET.XML(open(case_result).read()) assert ET.tostring(result_xml) == ET.tostring(expected_xml)