1402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/******************************************************************************* 2402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Copyright (c) 2000, 2006 IBM Corporation and others. 3402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * All rights reserved. This program and the accompanying materials 4402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * are made available under the terms of the Eclipse Public License v1.0 5402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * which accompanies this distribution, and is available at 6402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * http://www.eclipse.org/legal/epl-v10.html 7402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * 8402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Contributors: 9402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * IBM Corporation - initial API and implementation 10402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll *******************************************************************************/ 11402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpackage org.eclipse.releng.generators; 12402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 13402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.IOException; 14402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.Enumeration; 15402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.Hashtable; 16402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.io.File; 17402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 18402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport java.util.Vector; 19402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport javax.xml.parsers.DocumentBuilderFactory; 20402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport javax.xml.parsers.DocumentBuilder; 21402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport javax.xml.parsers.ParserConfigurationException; 22402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 23402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.w3c.dom.Document; 24402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.w3c.dom.Element; 25402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.w3c.dom.Node; 26402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.w3c.dom.NodeList; 27402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollimport org.xml.sax.SAXException; 28402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 29402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll/** 30402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @version 1.0 31402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @author 32402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 33402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Mollpublic class ErrorTracker { 34402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 35402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // List of test logs expected at end of build 36402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private Vector testLogs = new Vector(); 37402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 38402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 39402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Platforms keyed on 40402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private Hashtable platforms = new Hashtable(); 41402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private Hashtable logFiles = new Hashtable(); 42402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private Hashtable typesMap = new Hashtable(); 43402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private Vector typesList = new Vector(); 44402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 45402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public static void main(String[] args) { 46402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 47402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // For testing only. Should not be invoked 48402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 49402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll ErrorTracker anInstance = new ErrorTracker(); 50402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll anInstance.loadFile("C:\\junk\\testManifest.xml"); 51402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String[] theTypes = anInstance.getTypes(); 52402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int i=0; i < theTypes.length; i++) { 53402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // System.out.println("Type: " + theTypes[i]); 54402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll PlatformStatus[] thePlatforms = anInstance.getPlatforms(theTypes[i]); 55402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int j=0; j < thePlatforms.length; j++) { 56402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // System.out.println("Out ID: " + thePlatforms[j].getId()); 57402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 58402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 59402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 60402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 61402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void loadFile(String fileName) { 62402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 63402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll DocumentBuilder parser=null; 64402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 65402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll parser = docBuilderFactory.newDocumentBuilder(); 66402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (ParserConfigurationException e1) { 67402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll e1.printStackTrace(); 68402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 69402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll try { 70402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 71402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Document document = parser.parse(fileName); 72402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll NodeList elements = document.getElementsByTagName("platform"); 73402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int elementCount = elements.getLength(); 74402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int i = 0; i < elementCount; i++) { 75402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll PlatformStatus aPlatform = new PlatformStatus((Element) elements.item(i)); 76402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //System.out.println("ID: " + aPlatform.getId()); 77402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll platforms.put(aPlatform.getId(), aPlatform); 78402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 79402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Node zipType = elements.item(i).getParentNode(); 80402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String zipTypeName = (String) zipType.getAttributes().getNamedItem("name").getNodeValue(); 81402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 82402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Vector aVector = (Vector) typesMap.get(zipTypeName); 83402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (aVector == null) { 84402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll typesList.add(zipTypeName); 85402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aVector = new Vector(); 86402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll typesMap.put(zipTypeName, aVector); 87402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 88402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aVector.add(aPlatform.getId()); 89402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 90402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 91402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 92402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll NodeList effectedFiles = document.getElementsByTagName("effectedFile"); 93402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int effectedFilesCount = effectedFiles.getLength(); 94402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int i = 0; i < effectedFilesCount; i++) { 95402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Node anEffectedFile = effectedFiles.item(i); 96402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Node logFile = anEffectedFile.getParentNode(); 97402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String logFileName = (String) logFile.getAttributes().getNamedItem("name").getNodeValue(); 98402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll logFileName=convertPathDelimiters(logFileName); 99402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String effectedFileID = (String) anEffectedFile.getAttributes().getNamedItem("id").getNodeValue(); 100402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //System.out.println(logFileName); 101402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Vector aVector = (Vector) logFiles.get(logFileName); 102402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (aVector == null) { 103402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aVector = new Vector(); 104402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll logFiles.put(logFileName, aVector); 105402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 106402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 107402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll PlatformStatus ps=(PlatformStatus) platforms.get(effectedFileID); 108402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (ps!=null) 109402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aVector.addElement(ps); 110402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 111402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 112402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // store a list of the test logs expected after testing 113402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll NodeList testLogList = document.getElementsByTagName("logFile"); 114402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll int testLogCount = testLogList.getLength(); 115402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int i = 0; i < testLogCount; i++) { 116402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 117402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Node testLog = testLogList.item(i); 118402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String testLogName = (String) testLog.getAttributes().getNamedItem("name").getNodeValue(); 119402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Node typeNode=testLog.getAttributes().getNamedItem("type"); 120402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll String type="test"; 121402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (typeNode!=null){ 122402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll type = typeNode.getNodeValue(); 123402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 124402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (testLogName.endsWith(".xml")&&type.equals("test")){ 125402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll testLogs.add(testLogName); 126402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll //System.out.println(testLogName); 127402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 128402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 129402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 130402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 131402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 132402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// // Test this mess. 133402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// Object[] results = platforms.values().toArray(); 134402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// for (int i=0; i < results.length; i++) { 135402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// PlatformStatus ap = (PlatformStatus) results[i]; 136402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// System.out.println("ID: " + ap.getId() + " passed: " + ap.getPassed()); 137402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// } 138402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// 139402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// Enumeration anEnumeration = logFiles.keys(); 140402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// while (anEnumeration.hasMoreElements()) { 141402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// String aKey = (String) anEnumeration.nextElement(); 142402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// System.out.println("Whack a key: " + aKey); 143402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// ((PlatformStatus) logFiles.get(aKey)).setPassed(false); 144402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// } 145402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// 146402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// results = platforms.values().toArray(); 147402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// for (int i=0; i < results.length; i++) { 148402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// PlatformStatus ap = (PlatformStatus) results[i]; 149402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// System.out.println("ID: " + ap.getId() + " passed: " + ap.getPassed()); 150402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll// } 151402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 152402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 153402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 154402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 155402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 156402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (IOException e) { 157402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println("IOException: " + fileName); 158402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // e.printStackTrace(); 159402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 160402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } catch (SAXException e) { 161402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll System.out.println("SAXException: " + fileName); 162402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll e.printStackTrace(); 163402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 164402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 165402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 166402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 167402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public void registerError(String fileName) { 168402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // System.out.println("Found an error in: " + fileName); 169402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (logFiles.containsKey(fileName)) { 170402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Vector aVector = (Vector) logFiles.get(fileName); 171402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int i = 0; i < aVector.size(); i++) { 172402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll ((PlatformStatus) aVector.elementAt(i)).registerError(); 173402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 174402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } else { 175402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 176402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // If a log file is not specified explicitly it effects 177402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // all "platforms" except JDT 178402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 179402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Enumeration values = platforms.elements(); 180402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll while (values.hasMoreElements()) { 181402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll PlatformStatus aValue = (PlatformStatus) values.nextElement(); 182402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll if (!aValue.getId().equals("JA") && 183402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll !aValue.getId().equals("EW") && 184402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll !aValue.getId().equals("EA")) { 185402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll aValue.registerError(); 186402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 187402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 188402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 189402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 190402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 191402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public boolean hasErrors(String id) { 192402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return ((PlatformStatus) platforms.get(id)).hasErrors(); 193402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 194402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 195402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Answer a string array of the zip type names in the order they appear in 196402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // the .xml file. 197402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public String[] getTypes() { 198402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return (String[]) typesList.toArray(new String[typesList.size()]); 199402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 200402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 201402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll // Answer an array of PlatformStatus objects for a given type. 202402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 203402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public PlatformStatus[] getPlatforms(String type) { 204402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll Vector platformIDs = (Vector) typesMap.get(type); 205402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll PlatformStatus[] result = new PlatformStatus[platformIDs.size()]; 206402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll for (int i = 0; i < platformIDs.size(); i++) { 207402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll result[i] = (PlatformStatus) platforms.get((String) platformIDs.elementAt(i)); 208402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 209402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return result; 210402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 211402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 212402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll /** 213402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * Returns the testLogs. 214402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll * @return Vector 215402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll */ 216402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll public Vector getTestLogs() { 217402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return testLogs; 218402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 219402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 220402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll private String convertPathDelimiters(String path){ 221402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll return new File(path).getPath(); 222402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll } 223402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll 224402794e73aed8611d62eb4b01cd155e2d76fcb87Raphael Moll} 225