package test;
import java.io.File;
import java.util.Properties;
import aQute.bnd.osgi.Analyzer;
import aQute.bnd.osgi.Builder;
import aQute.bnd.osgi.Jar;
import aQute.bnd.osgi.Resource;
import aQute.lib.io.IO;
import aQute.libg.cryptography.SHA1;
import junit.framework.TestCase;
public class PreprocessTest extends TestCase {
/**
* Preprocess now tries not to preprocess binary files, it uses an exclusion
* list by default. This list contains JAR files.
*/
public static void testPreProcessDefaultExclusion() throws Exception {
Builder b = new Builder();
b.setProperty(Analyzer.INCLUDE_RESOURCE, "{src/test/tb1.jar} ");
b.build();
assertTrue(b.check());
Jar jar = b.getJar();
Resource resource = jar.getResource("tb1.jar");
assertNotNull(resource);
File f = IO.getFile("src/test/tb1.jar");
SHA1 d1 = SHA1.digest(f);
SHA1 d2 = SHA1.digest(resource.openInputStream());
assertEquals(d1, d2);
b.close();
}
/**
* Check if we can override
*
* @throws Exception
*/
public static void testPreProcessExcludeExtensionGlobal() throws Exception {
Builder b = new Builder();
b.setProperty(Analyzer.PREPROCESSMATCHERS, "!*.TXT:i,*");
b.setProperty(Analyzer.INCLUDE_RESOURCE,
"{src/test/builder-preprocess.txt},{src/test/builder-preprocess.txt2}");
b.setProperty("var", "Yes!");
;
b.build();
assertTrue(b.check());
System.out.println("testPreProcessExcludeExtensionsGlobal");
Jar jar = b.getJar();
Resource resource = jar.getResource("builder-preprocess.txt");
String s = IO.collect(resource.openInputStream());
System.out.println(s);
assertTrue(s.contains("${var}"));
assertFalse(s.contains("!Yes"));
resource = jar.getResource("builder-preprocess.txt2");
s = IO.collect(resource.openInputStream());
System.out.println(s);
assertTrue(s.contains("Yes!"));
assertFalse(s.contains("${var}"));
b.close();
}
/**
* Exclude a file with a specific extension from being processed
*/
public static void testPreProcessExcludeExtensionLocal() throws Exception {
Builder b = new Builder();
b.setProperty(Analyzer.INCLUDE_RESOURCE, "{src/test/builder-preprocess.txt};-preprocessmatchers='!*.TXT:i,*'");
b.setProperty("var", "Yes!");
;
b.build();
assertTrue(b.check());
Jar jar = b.getJar();
Resource resource = jar.getResource("builder-preprocess.txt");
assertNotNull(resource);
String s = IO.collect(resource.openInputStream());
assertNotNull(s);
assertTrue(s.contains("${var}"));
b.close();
}
/**
* Spaces at the end of a clause cause the preprocess to fail.
*
* @throws Exception
*/
public static void testPreProcess() throws Exception {
Properties base = new Properties();
base.put(Analyzer.INCLUDE_RESOURCE, "{src/test/top.mf} ");
Builder analyzer = new Builder();
analyzer.setProperties(base);
analyzer.build();
assertTrue(analyzer.check());
Jar jar = analyzer.getJar();
assertTrue(jar.getResource("top.mf") != null);
analyzer.close();
}
}