You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by li...@apache.org on 2012/09/11 09:11:45 UTC
svn commit: r1383263 - in
/incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common:
FileProvider.java FileUtil.java Testspace.java
Author: liuzhe
Date: Tue Sep 11 07:11:45 2012
New Revision: 1383263
URL: http://svn.apache.org/viewvc?rev=1383263&view=rev
Log:
Add missed license header and some java doc
Modified:
incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileProvider.java
incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileUtil.java
incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/Testspace.java
Modified: incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileProvider.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileProvider.java?rev=1383263&r1=1383262&r2=1383263&view=diff
==============================================================================
--- incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileProvider.java (original)
+++ incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileProvider.java Tue Sep 11 07:11:45 2012
@@ -1,3 +1,24 @@
+/**************************************************************
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ *************************************************************/
+
package org.openoffice.test.common;
import java.io.BufferedReader;
@@ -32,9 +53,12 @@ public class FileProvider extends Suite
private final Object[] parameters;
- TestClassRunnerForParameters(Class<?> type, Object[] parameters) throws InitializationError {
+ private int index;
+
+ TestClassRunnerForParameters(Class<?> type, Object[] parameters, int index) throws InitializationError {
super(type);
this.parameters = parameters;
+ this.index = index;
}
@Override
@@ -44,7 +68,7 @@ public class FileProvider extends Suite
@Override
protected String getName() {
- return getTestClass().getJavaClass().getSimpleName() + Arrays.toString(parameters);
+ return getTestClass().getJavaClass().getSimpleName() + "[" + index + "]" + Arrays.toString(parameters);
}
@Override
@@ -77,11 +101,7 @@ public class FileProvider extends Suite
@Target(ElementType.FIELD)
public static @interface FileFilter {
}
-
- /**
- *
- * Only called reflectively. Do not use programmatically.
- */
+
public FileProvider(Class<?> klass) throws Throwable {
super(klass, NO_RUNNERS);
@@ -132,27 +152,39 @@ public class FileProvider extends Suite
ArrayList<Object[]> list = new ArrayList<Object[]>();
- if (reposFile.isDirectory()) {
- collectFromDir(reposFile, list, filterItems);
- } else {
- collectFromFile(reposFile, list, filterItems);
- }
+ if (!collectFromFile(reposFile, list, filterItems))
+ if (!collectFromFiles(reposFile, list, filterItems))
+ collectFromDir(reposFile, list, filterItems);
- for (Object[] t : list) {
- TestClassRunnerForParameters runner = new TestClassRunnerForParameters(getTestClass().getJavaClass(), t);
+ for (int i = 0; i < list.size(); i++) {
+ Object[] t = list.get(i);
+ TestClassRunnerForParameters runner = new TestClassRunnerForParameters(getTestClass().getJavaClass(), t, i);
runners.add(runner);
}
}
-
- /**
- * @param dir
- * @param list
- */
- public static void collectFromDir(File dir, ArrayList<Object[]> list, ArrayList<ArrayList<String>> filterItems) {
+
+ private static boolean collectFromFiles(File dir, ArrayList<Object[]> list, ArrayList<ArrayList<String>> filterItems) {
+ if (!dir.isDirectory())
+ return false;
+
+ boolean hasListFile = false;
+ File[] files = dir.listFiles();
+ for (File f : files) {
+ if (f.isFile() && f.getName().endsWith(".files")) {
+ hasListFile = true;
+ collectFromFile(f, list, filterItems);
+ }
+ }
+
+ return hasListFile;
+ }
+
+ private static boolean collectFromDir(File dir, ArrayList<Object[]> list, ArrayList<ArrayList<String>> filterItems) {
+ if (!dir.isDirectory())
+ return false;
+
File[] files = dir.listFiles();
- if (files == null)
- return;
Arrays.sort(files);
for (File file : files) {
if (file.isDirectory()) {
@@ -162,9 +194,14 @@ public class FileProvider extends Suite
filter(file.getAbsolutePath(), list, filterItems);
}
+
+ return true;
}
- public static void collectFromFile(File file, ArrayList<Object[]> list, ArrayList<ArrayList<String>> filterItems) {
+ private static boolean collectFromFile(File file, ArrayList<Object[]> list, ArrayList<ArrayList<String>> filterItems) {
+ if (!file.isFile())
+ return false;
+
BufferedReader reader = null;
try{
reader = new BufferedReader(new FileReader(file));
@@ -185,6 +222,8 @@ public class FileProvider extends Suite
//ignore;
}
}
+
+ return true;
}
private static void filter(String filePath, ArrayList<Object[]> list, ArrayList<ArrayList<String>> filterItems) {
Modified: incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileUtil.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileUtil.java?rev=1383263&r1=1383262&r2=1383263&view=diff
==============================================================================
--- incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileUtil.java (original)
+++ incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/FileUtil.java Tue Sep 11 07:11:45 2012
@@ -68,6 +68,11 @@ public class FileUtil {
}
+ /**
+ * Parse XML file to Document model
+ * @param path
+ * @return
+ */
public static Document parseXML(String path) {
try {
DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
@@ -79,6 +84,12 @@ public class FileUtil {
}
}
+ /**
+ * Get a string by XPATH from a xml file
+ * @param xml
+ * @param xpathStr
+ * @return
+ */
public static String getStringByXPath(String xml, String xpathStr) {
Document doc = parseXML(xml);
if (doc == null)
@@ -340,6 +351,11 @@ public class FileUtil {
}
+ /**
+ * Write string into a file
+ * @param filePath
+ * @param contents
+ */
public static void writeStringToFile(String filePath, String contents) {
FileWriter writer = null;
try {
@@ -473,6 +489,12 @@ public class FileUtil {
}
+ /**
+ * Pump data from an inputstream into a file
+ * @param from
+ * @param toFile
+ * @return
+ */
public static boolean writeToFile(InputStream from, File toFile) {
FileOutputStream to = null;
try {
@@ -504,6 +526,12 @@ public class FileUtil {
}
}
+ /**
+ * Pump data from an inputstream into an output stream
+ * @param from
+ * @param to
+ * @return
+ */
public static boolean pump(InputStream from, OutputStream to) {
try {
byte[] buffer = new byte[4096];
@@ -564,7 +592,7 @@ public class FileUtil {
}
/**
- * Delete a file
+ * Delete a file or directory
* @param file
* @return
*/
@@ -586,10 +614,20 @@ public class FileUtil {
return path.delete();
}
+ /**
+ * Delete a file or directory.
+ * @param path
+ * @return
+ */
public static boolean deleteFile(String path) {
return deleteFile(new File(path));
}
+ /**
+ * Check if a file exists
+ * @param file
+ * @return
+ */
public static boolean fileExists(String file) {
return new File(file).exists();
}
@@ -607,82 +645,87 @@ public class FileUtil {
return null;
return file.substring(i+1);
}
- /**
- * Get the file's size
- * @param file
- * @return KB
- */
+
+
+ /**
+ * Get file size. If it's a directory, it calculates the total size of files
+ * @param filePath
+ * @return
+ */
public static long getFileSize(String filePath){
- long totalSize = 0;
- FileInputStream f = null;
- File file = new File(filePath);
-
- try {
- f = new FileInputStream(file);
- totalSize = f.available();
- f.close();
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- return totalSize/1000;
+ return getFileSize(new File(filePath));
}
/**
- * Get the folder's size
- * @param folder's path
- * @return Kb
- */
- public static long getFolderSize(String dir){
- long totalSize = 0;
- File[] files = new File(dir).listFiles();
+ * Get file size. If it's a directory, it calculates the total size of files
+ * @param file
+ * @return
+ */
+ public static long getFileSize(File file){
+ if (file.isFile())
+ return file.length();
+
+ long size = 0;
+ File[] files = file.listFiles();
+ if (files == null)
+ return size;
- for(int i=0; i<files.length; i++){
- if(files[i].isDirectory())
- totalSize = totalSize + getFolderSize(files[i].getAbsolutePath())*1000;
- else
- totalSize = totalSize + files[i].length();
- }
-
- return totalSize/1000;
- }
-
- public static void unzipFile(String unzipfile, String unzipDest){
- try {
- File dest = new File(unzipDest);
- ZipInputStream zin = new ZipInputStream(new FileInputStream(unzipfile));
- ZipEntry entry;
- //Create folder
- while ( (entry = zin.getNextEntry()) != null){
- if (entry.isDirectory()) {
- File directory = new File(dest, entry.getName());
- if (!directory.exists())
- if (!directory.mkdirs())
- System.exit(0);
- zin.closeEntry();
- }
- if (!entry.isDirectory()) {
- File myFile = new File(entry.getName());
- FileOutputStream fout = new FileOutputStream(unzipDest + "/" + myFile.getPath());
- DataOutputStream dout = new DataOutputStream(fout);
- byte[] b = new byte[1024];
- int len = 0;
- while ( (len = zin.read(b)) != -1) {
- dout.write(b, 0, len);
- }
- dout.close();
- fout.close();
- zin.closeEntry();
- }
- }
- }
- catch (IOException e) {
- e.printStackTrace();
- System.out.println(e);
- }
+ for (File f : files) {
+ size += getFileSize(f);
+ }
+ return size;
}
+ /**
+ * Unzip a zip file into the destination directory
+ * @param zipFile
+ * @param dest
+ */
+ public static void unzip(String zipFile, String dest) {
+ ZipInputStream zin = null;
+ FileOutputStream fos = null;
+ try {
+ File destFile = new File(dest);
+ zin = new ZipInputStream(new FileInputStream(zipFile));
+ ZipEntry entry;
+ while ((entry = zin.getNextEntry()) != null) {
+ File entryFile = new File(destFile, entry.getName());
+ if (entry.isDirectory()) {
+ entryFile.mkdirs();
+ } else {
+ fos = new FileOutputStream(entryFile);
+ byte[] b = new byte[1024];
+ int len = 0;
+ while ((len = zin.read(b)) != -1) {
+ fos.write(b, 0, len);
+ }
+ fos.close();
+ zin.closeEntry();
+ }
+ }
+ } catch (IOException e) {
+ log.log(Level.SEVERE, "unzip [" + zipFile + "] -> [" + dest + "] Fail!", e);
+ } finally {
+ if (zin != null)
+ try {
+ zin.close();
+ } catch (IOException e) {
+ }
+ if (fos != null)
+ try {
+ fos.close();
+ } catch (IOException e) {
+ }
+ }
+ }
+
+ /**
+ * Get an unique name under the specified directory
+ * @param dir
+ * @param prefix
+ * @param suffix
+ * @return
+ */
public static File getUniqueFile(File dir, String prefix, String suffix) {
String name = prefix + "." + FILENAME_FORMAT.format(new Date()) + ".";
for (int i = 0; i < Integer.MAX_VALUE; i++) {
@@ -695,11 +738,24 @@ public class FileUtil {
return null;
}
+ /**
+ * Get an unique name under the specified directory
+ * @param dir
+ * @param prefix
+ * @param suffix
+ * @return
+ */
public static File getUniqueFile(String dir, String prefix, String suffix) {
return getUniqueFile(new File(dir), prefix, suffix);
}
+ /**
+ * Download a file from a url to the local file system
+ * @param urlString
+ * @param output
+ * @return
+ */
public static File download(String urlString, File output) {
InputStream in = null;
OutputStream out = null;
@@ -708,12 +764,10 @@ public class FileUtil {
URLConnection urlConnection = url.openConnection();
int totalSize = urlConnection.getContentLength();
in = urlConnection.getInputStream();
- if (output.isDirectory()) {
+ if (output.isDirectory())
output = new File(output, url.getPath());
- output.getParentFile().mkdirs();
- }
+ output.getParentFile().mkdirs();
out = new FileOutputStream(output);
-
byte[] buffer = new byte[1024 * 100]; // 100k
int count = 0;
int totalCount = 0;
@@ -750,7 +804,12 @@ public class FileUtil {
}
}
-
+
+ /**
+ * Convert a file path to URL like "file:///dir/some.file"
+ * @param file
+ * @return
+ */
@SuppressWarnings("deprecation")
public static String getUrl(File file) {
try {
@@ -764,11 +823,20 @@ public class FileUtil {
}
-
+ /**
+ * Convert a file path to URL like "file:///dir/some.file"
+ * @param file
+ * @return
+ */
public static String getUrl(String path) {
return getUrl(new File(path));
}
+ /**
+ * Check if the given address is valid URL
+ * @param address
+ * @return
+ */
public static boolean isUrl(String address) {
try {
new URL(address);
Modified: incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/Testspace.java
URL: http://svn.apache.org/viewvc/incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/Testspace.java?rev=1383263&r1=1383262&r2=1383263&view=diff
==============================================================================
--- incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/Testspace.java (original)
+++ incubator/ooo/trunk/test/testcommon/source/org/openoffice/test/common/Testspace.java Tue Sep 11 07:11:45 2012
@@ -25,6 +25,7 @@ package org.openoffice.test.common;
import java.io.File;
import java.io.InputStream;
+import java.net.URL;
/**
* A testspace is a directory on your hard drive where stores the files generated during testing, e.g. test result, logs, temp files.
@@ -118,6 +119,21 @@ public class Testspace {
return workingFile;
}
+ public static File getDataFile(String dataFilePath) {
+ File dataFile = new File(dataFilePath);
+ if (!dataFile.isAbsolute())
+ dataFile = new File(testdata, dataFilePath);
+ if (!dataFile.exists()) {
+ URL url = Testspace.class.getClassLoader().getResource(dataFilePath);
+ if (url == null)
+ return null;
+ return new File(url.getFile());
+ } else {
+ return dataFile;
+ }
+ }
+
+
public static boolean deleteFile(String path) {
return FileUtil.deleteFile(getPath(path));
}