From 62d69b6fb572f0c42da2473a5b863a9ffec62d85 Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Thu, 14 Jul 2011 20:42:41 +0100 Subject: [PATCH] Don't use FileUtils.getBriarDirectory() in tests. --- api/net/sf/briar/api/i18n/FontManager.java | 8 ++++++-- .../net/sf/briar/i18n/FontManagerImpl.java | 10 +++------- installer/net/sf/briar/ui/setup/SetupMain.java | 5 ++++- test/net/sf/briar/TestUtils.java | 8 ++++++++ test/net/sf/briar/i18n/FontManagerTest.java | 10 +++++++--- test/net/sf/briar/i18n/I18nTest.java | 16 ++++++---------- util/net/sf/briar/util/FileUtils.java | 4 +--- 7 files changed, 35 insertions(+), 26 deletions(-) diff --git a/api/net/sf/briar/api/i18n/FontManager.java b/api/net/sf/briar/api/i18n/FontManager.java index 13249bb41a..b1bd3a1fb0 100644 --- a/api/net/sf/briar/api/i18n/FontManager.java +++ b/api/net/sf/briar/api/i18n/FontManager.java @@ -1,12 +1,16 @@ package net.sf.briar.api.i18n; import java.awt.Font; +import java.io.File; import java.util.Locale; public interface FontManager { - /** Initializes the FontManager for the given locale. */ - void initialize(Locale locale); + /** + * Initializes the FontManager for the given locale. Fonts are loaded from + * the given directory if they cannot be loaded from the running jar. + */ + void initialize(Locale locale, File dir); /** Returns the appropriate font for the given language. */ Font getFontForLanguage(String language); diff --git a/components/net/sf/briar/i18n/FontManagerImpl.java b/components/net/sf/briar/i18n/FontManagerImpl.java index 8787b62f10..783b6bef4e 100644 --- a/components/net/sf/briar/i18n/FontManagerImpl.java +++ b/components/net/sf/briar/i18n/FontManagerImpl.java @@ -18,7 +18,6 @@ import java.util.logging.Logger; import javax.swing.UIManager; import net.sf.briar.api.i18n.FontManager; -import net.sf.briar.util.FileUtils; // Needs to be public for installer public class FontManagerImpl implements FontManager { @@ -43,18 +42,15 @@ public class FontManagerImpl implements FontManager { private volatile Font defaultFont = null, uiFont = null; - public void initialize(Locale locale) { + public void initialize(Locale locale, File dir) { // Look for bundled fonts in the jar and the filesystem. If any fonts // are missing or fail to load, fall back to the default font. ClassLoader loader = getClass().getClassLoader(); for(BundledFont bf : BUNDLED_FONTS) { try { InputStream in = loader.getResourceAsStream(bf.filename); - if(in == null) { - File root = FileUtils.getBriarDirectory(); - File file = new File(root, "Data/" + bf.filename); - in = new FileInputStream(file); - } + if(in == null) + in = new FileInputStream(new File(dir, bf.filename)); Font font = Font.createFont(Font.TRUETYPE_FONT, in); font = font.deriveFont(bf.size); for(String language : bf.languages) fonts.put(language, font); diff --git a/installer/net/sf/briar/ui/setup/SetupMain.java b/installer/net/sf/briar/ui/setup/SetupMain.java index 5529703e57..5553dcb8fc 100644 --- a/installer/net/sf/briar/ui/setup/SetupMain.java +++ b/installer/net/sf/briar/ui/setup/SetupMain.java @@ -1,5 +1,6 @@ package net.sf.briar.ui.setup; +import java.io.File; import java.util.Locale; import javax.swing.UIManager; @@ -11,6 +12,7 @@ import net.sf.briar.api.setup.SetupWorkerFactory; import net.sf.briar.i18n.FontManagerImpl; import net.sf.briar.i18n.I18nImpl; import net.sf.briar.setup.SetupWorkerFactoryImpl; +import net.sf.briar.util.FileUtils; import net.sf.briar.util.OsUtils; public class SetupMain { @@ -30,7 +32,8 @@ public class SetupMain { SetupParameters parameters = new SetupParametersImpl(locationPanel); new SetupWorkerPanel(wizard, workerFactory, parameters, i18n); - fontManager.initialize(Locale.getDefault()); + File dir = new File(FileUtils.getBriarDirectory(), "Data"); + fontManager.initialize(Locale.getDefault(), dir); wizard.display(); } } diff --git a/test/net/sf/briar/TestUtils.java b/test/net/sf/briar/TestUtils.java index 6046f65443..d8c25231b7 100644 --- a/test/net/sf/briar/TestUtils.java +++ b/test/net/sf/briar/TestUtils.java @@ -47,6 +47,14 @@ public class TestUtils { throw new RuntimeException("Could not find build directory"); } + public static File getFontDirectory() { + File f = new File("i18n"); + if(f.exists() && f.isDirectory()) return f; + f = new File("../i18n"); + if(f.exists() && f.isDirectory()) return f; + throw new RuntimeException("Could not find font directory"); + } + public static byte[] getRandomId() { byte[] b = new byte[UniqueId.LENGTH]; random.nextBytes(b); diff --git a/test/net/sf/briar/i18n/FontManagerTest.java b/test/net/sf/briar/i18n/FontManagerTest.java index 0b5ebc415d..b423a1df9f 100644 --- a/test/net/sf/briar/i18n/FontManagerTest.java +++ b/test/net/sf/briar/i18n/FontManagerTest.java @@ -1,18 +1,22 @@ package net.sf.briar.i18n; import java.awt.Font; +import java.io.File; import java.util.Locale; import junit.framework.TestCase; +import net.sf.briar.TestUtils; import net.sf.briar.api.i18n.FontManager; import org.junit.Test; public class FontManagerTest extends TestCase { + private final File fontDir = TestUtils.getFontDirectory(); + @Test public void testBundledFontsAreLoaded() { FontManager fontManager = new FontManagerImpl(); - fontManager.initialize(Locale.UK); + fontManager.initialize(Locale.UK, fontDir); Font font = fontManager.getFontForLanguage("en"); // English assertEquals(12, font.getSize()); @@ -29,7 +33,7 @@ public class FontManagerTest extends TestCase { @Test public void testInternationalCharactersCanBeDisplayed() { FontManager fontManager = new FontManagerImpl(); - fontManager.initialize(Locale.UK); + fontManager.initialize(Locale.UK, fontDir); Font font = fontManager.getFontForLanguage("en"); // English assertTrue(font.canDisplay('a')); @@ -53,7 +57,7 @@ public class FontManagerTest extends TestCase { @Test public void testSetAndGetUiFont() { FontManager fontManager = new FontManagerImpl(); - fontManager.initialize(Locale.UK); + fontManager.initialize(Locale.UK, fontDir); Font font = fontManager.getUiFont(); assertEquals(12, font.getSize()); diff --git a/test/net/sf/briar/i18n/I18nTest.java b/test/net/sf/briar/i18n/I18nTest.java index f6be63182e..6545025a9a 100644 --- a/test/net/sf/briar/i18n/I18nTest.java +++ b/test/net/sf/briar/i18n/I18nTest.java @@ -18,25 +18,21 @@ import org.junit.Test; public class I18nTest extends TestCase { - final File base = + private final File base = new File(TestUtils.getBuildDirectory(), "i18n.properties"); - final File french = + private final File french = new File(TestUtils.getBuildDirectory(), "i18n_fr.properties"); - final File testDir = TestUtils.getTestDirectory(); + private final File testDir = TestUtils.getTestDirectory(); FontManager fontManager = null; I18n i18n = null; @Before public void setUp() throws IOException { - TestUtils.createFile(base, - "FOO=foo\r\n" + - "BAR=bar\r\n"); - TestUtils.createFile(french, - "FOO=le foo\r\n" + - "BAR=la bar\r\n"); + TestUtils.createFile(base, "FOO=foo\r\nBAR=bar\r\n"); + TestUtils.createFile(french, "FOO=le foo\r\nBAR=la bar\r\n"); fontManager = new FontManagerImpl(); - fontManager.initialize(Locale.UK); + fontManager.initialize(Locale.UK, TestUtils.getFontDirectory()); i18n = new I18nImpl(fontManager); } diff --git a/util/net/sf/briar/util/FileUtils.java b/util/net/sf/briar/util/FileUtils.java index e8052c79f4..360791e934 100644 --- a/util/net/sf/briar/util/FileUtils.java +++ b/util/net/sf/briar/util/FileUtils.java @@ -20,10 +20,8 @@ public class FileUtils { // Running from a jar - return the jar's grandparent f = f.getParentFile().getParentFile(); } else { - // Running from Eclipse or ant + // Running from Eclipse f = new File(f.getParentFile(), "Briar"); - if(!f.exists()) - f = new File(f.getParentFile().getParentFile(), "Briar"); // Ant } assert f.exists(); assert f.isDirectory(); -- GitLab