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