1 //////////////////////////////////////////////////////////////////////////////// 2 // checkstyle: Checks Java source code for adherence to a set of rules. 3 // Copyright (C) 2001-2019 the original author or authors. 4 // 5 // This library is free software; you can redistribute it and/or 6 // modify it under the terms of the GNU Lesser General Public 7 // License as published by the Free Software Foundation; either 8 // version 2.1 of the License, or (at your option) any later version. 9 // 10 // This library is distributed in the hope that it will be useful, 11 // but WITHOUT ANY WARRANTY; without even the implied warranty of 12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 // Lesser General Public License for more details. 14 // 15 // You should have received a copy of the GNU Lesser General Public 16 // License along with this library; if not, write to the Free Software 17 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 //////////////////////////////////////////////////////////////////////////////// 19 20 package com.puppycrawl.tools.checkstyle; 21 22 import java.io.File; 23 import java.io.IOException; 24 import java.nio.charset.StandardCharsets; 25 import java.nio.file.Files; 26 import java.nio.file.Paths; 27 28 public abstract class AbstractPathTestSupport { 29 30 protected static final String LF_REGEX = "\\\\n"; 31 32 protected static final String CRLF_REGEX = "\\\\r\\\\n"; 33 34 /** 35 * Returns the exact location for the package where the file is present. 36 * @return path for the package name for the file. 37 */ 38 protected abstract String getPackageLocation(); 39 40 /** 41 * Returns canonical path for the file with the given file name. 42 * The path is formed base on the root location. 43 * This implementation uses 'src/test/resources/' 44 * as a root location. 45 * @param filename file name. 46 * @return canonical path for the file name. 47 * @throws IOException if I/O exception occurs while forming the path. 48 */ 49 protected final String getPath(String filename) throws IOException { 50 return new File("src/test/resources/" + getPackageLocation() + "/" + filename) 51 .getCanonicalPath(); 52 } 53 54 protected final String getResourcePath(String filename) { 55 return "/" + getPackageLocation() + "/" + filename; 56 } 57 58 /** Reads the contents of a file. 59 * @param filename the name of the file whose contents are to be read 60 * @return contents of the file with all {@code \r\n} replaced by {@code \n} 61 * @throws IOException if I/O exception occurs while reading 62 */ 63 protected static String readFile(String filename) throws IOException { 64 return new String(Files.readAllBytes( 65 Paths.get(filename)), StandardCharsets.UTF_8) 66 .replaceAll(CRLF_REGEX, LF_REGEX); 67 } 68 69 }