/**************************************************************************
OmegaT - Computer Assisted Translation (CAT) tool
with fuzzy matching, translation memory, keyword search,
glossaries, and translation leveraging into updated projects.
Copyright (C) 2008 Alex Buloichik
Home page: http://www.omegat.org/
Support center: http://groups.yahoo.com/group/OmegaT/
This file is part of OmegaT.
OmegaT is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OmegaT is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
**************************************************************************/
package svn;
import static org.junit.Assert.assertTrue;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
/**
* Test for copyright notes exists in source files.
*
* @author Alex Buloichik
*/
public class CopyrightTest {
protected static final String[] MUST_EXIST = new String[] { "OmegaT - Computer Assisted Translation (CAT) tool",
"Copyright (C)", "Home page: http://www.omegat.org/", "This file is part of OmegaT",
"OmegaT is free software: you can redistribute it and/or modify",
"it under the terms of the GNU General Public License as published by",
"the Free Software Foundation, either version 3 of the License, or", "(at your option) any later version.",
"OmegaT is distributed in the hope that it will be useful,",
"but WITHOUT ANY WARRANTY; without even the implied warranty of",
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the",
"GNU General Public License for more details.",
"You should have received a copy of the GNU General Public License",
"along with this program. If not, see <http://www.gnu.org/licenses/>." };
@Test
public void testCopyright() throws Exception {
List<File> sourceFiles = new ArrayList<File>();
list(new File("src"), sourceFiles);
list(new File("test"), sourceFiles);
ByteArrayOutputStream fdata = new ByteArrayOutputStream();
for (File f : sourceFiles) {
if (f.getPath().replace('\\', '/').startsWith("src/gen/")) {
// skip jaxb generated files
continue;
}
FileUtils.copyFile(f, fdata);
String data = fdata.toString("ISO-8859-1");
checkNote(f, data);
fdata.reset();
}
}
protected void checkNote(File f, String data) {
int pos = data.indexOf("\npackage ");
if (pos > 0)
data = data.substring(0, pos);
for (String con : MUST_EXIST) {
assertTrue("There is no copyright note in '" + f.getAbsolutePath() + "' : " + con, data.contains(con));
}
}
protected void list(File dir, List<File> files) {
for (File f : dir.listFiles()) {
String fn = f.getName();
if (f.getName().endsWith(".java")) {
files.add(f);
} else if (fn.equals("build.xml")) {
files.add(f);
} else if (fn.endsWith(".properties")) {
if (fn.startsWith("Version") || fn.startsWith("Bundle") || fn.startsWith("project")) {
files.add(f);
}
} else if (f.isDirectory()) {
list(f, files);
}
}
}
}