blob: c1317331e6418e9b251f4ca18999487995f98ff7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013, 2014 Tasktop Technologies and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.internal.tasks.index.tests;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Random;
import org.eclipse.mylyn.tasks.core.ITask;
import org.junit.Test;
public class TaskListIndexCorruptTest extends AbstractTaskListIndexTest {
private void setupCorruptIndex() throws Exception {
setupIndex();
context.createLocalTask();
index.waitUntilIdle();
index.close();
disposeIndex();
corruptIndex();
}
private void corruptIndex() throws IOException {
File[] files = tempDir.listFiles();
if (files == null || files.length == 0) {
throw new IllegalStateException("index has no files");
}
for (File file : files) {
if (file.isFile()) {
corruptFile(file);
}
}
}
private void corruptFile(File file) throws IOException {
Random random = new Random(123);
long length = file.length();
OutputStream stream = new FileOutputStream(file);
try {
byte[] bytes = new byte[1];
for (long i = 0; i < length; ++i) {
random.nextBytes(bytes);
stream.write(bytes[0]);
}
} finally {
stream.close();
}
}
@Test
public void testCorrupt() throws Exception {
setupCorruptIndex();
setupIndex();
ITask task = context.createLocalTask();
index.waitUntilIdle();
assertTrue(index.matches(task, task.getSummary()));
}
}