public <T> T fromXmlPartial(String partial, Class<T> o) throws Exception {
        return fromXmlPartial(toInputStream(partial, UTF_8), o);
    }
@Test
    void shouldLoadPipelineWithMultipleMaterials() throws Exception {
        String pipelineXmlPartial =
                """
                        <pipeline name="pipeline">
                          <materials>
                            <svn url="/hgrepo1" dest="folder1" />
                            <svn url="/hgrepo2" dest="folder2" />
                            <svn url="/hgrepo3" dest="folder3" />
                          </materials>
                          <stage name="mingle">
                            <jobs>
                              <job name="functional">
                                <artifacts>
                                  <log src="artifact1.xml" dest="cruise-output" />
                                </artifacts>
                              </job>
                            </jobs>
                          </stage>
                        </pipeline>
                        """;
        PipelineConfig pipeline = xmlLoader.fromXmlPartial(pipelineXmlPartial, PipelineConfig.class);
        assertThat(pipeline.materialConfigs().size()).isEqualTo(3);
        ScmMaterialConfig material = (ScmMaterialConfig) pipeline.materialConfigs().get(0);
        assertThat(material.getFolder()).isEqualTo("folder1");
    }