From d49ab73d81475a28aead948db6538e36cbb520c2 Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Tue, 4 Oct 2011 22:36:00 +0100 Subject: [PATCH] Unit tests and bug fixes for removable drive finders. --- .../file/LinuxRemovableDriveFinder.java | 5 ++-- .../plugins/file/MacRemovableDriveFinder.java | 5 ++-- test/build.xml | 2 ++ .../file/LinuxRemovableDriveFinderTest.java | 25 +++++++++++++++++++ .../file/MacRemovableDriveFinderTest.java | 23 +++++++++++++++++ 5 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 test/net/sf/briar/plugins/file/LinuxRemovableDriveFinderTest.java create mode 100644 test/net/sf/briar/plugins/file/MacRemovableDriveFinderTest.java diff --git a/components/net/sf/briar/plugins/file/LinuxRemovableDriveFinder.java b/components/net/sf/briar/plugins/file/LinuxRemovableDriveFinder.java index ccdf0bc0e2..4973d52243 100644 --- a/components/net/sf/briar/plugins/file/LinuxRemovableDriveFinder.java +++ b/components/net/sf/briar/plugins/file/LinuxRemovableDriveFinder.java @@ -10,8 +10,9 @@ class LinuxRemovableDriveFinder extends UnixRemovableDriveFinder { @Override protected String parseMountPoint(String line) { // The format is "/dev/foo on /bar/baz type bam (opt1,opt2)" - line = line.replaceFirst("^/dev/[^ ]+ on ", ""); - return line.replaceFirst(" type [^ ]+ \\([^)]+\\)$", ""); + String pattern = "^/dev/[^ ]+ on (.*) type [^ ]+ \\([^)]+\\)$"; + String path = line.replaceFirst(pattern, "$1"); + return path.equals(line) ? null : path; } @Override diff --git a/components/net/sf/briar/plugins/file/MacRemovableDriveFinder.java b/components/net/sf/briar/plugins/file/MacRemovableDriveFinder.java index ec1ae07086..453a3d836b 100644 --- a/components/net/sf/briar/plugins/file/MacRemovableDriveFinder.java +++ b/components/net/sf/briar/plugins/file/MacRemovableDriveFinder.java @@ -10,8 +10,9 @@ class MacRemovableDriveFinder extends UnixRemovableDriveFinder { @Override protected String parseMountPoint(String line) { // The format is "/dev/foo on /bar/baz (opt1, opt2)" - line = line.replaceFirst("^/dev/[^ ]+ on ", ""); - return line.replaceFirst(" \\([^)]+\\)$", ""); + String pattern = "^/dev/[^ ]+ on (.*) \\([^)]+\\)$"; + String path = line.replaceFirst(pattern, "$1"); + return path.equals(line) ? null : path; } @Override diff --git a/test/build.xml b/test/build.xml index 73ecb1176d..bb35591483 100644 --- a/test/build.xml +++ b/test/build.xml @@ -25,6 +25,8 @@ <test name='net.sf.briar.i18n.FontManagerTest'/> <test name='net.sf.briar.i18n.I18nTest'/> <test name='net.sf.briar.invitation.InvitationWorkerTest'/> + <test name='net.sf.briar.plugins.file.LinuxRemovableDriveFinderTest'/> + <test name='net.sf.briar.plugins.file.MacRemovableDriveFinderTest'/> <test name='net.sf.briar.plugins.file.RemovableDrivePluginTest'/> <test name='net.sf.briar.protocol.AckReaderTest'/> <test name='net.sf.briar.protocol.BatchReaderTest'/> diff --git a/test/net/sf/briar/plugins/file/LinuxRemovableDriveFinderTest.java b/test/net/sf/briar/plugins/file/LinuxRemovableDriveFinderTest.java new file mode 100644 index 0000000000..4a8a85b5d2 --- /dev/null +++ b/test/net/sf/briar/plugins/file/LinuxRemovableDriveFinderTest.java @@ -0,0 +1,25 @@ +package net.sf.briar.plugins.file; + +import junit.framework.TestCase; + +import org.junit.Test; + +public class LinuxRemovableDriveFinderTest extends TestCase { + + @Test + public void testParseMountPoint() { + LinuxRemovableDriveFinder f = new LinuxRemovableDriveFinder(); + String line = "/dev/sda3 on / type ext3" + + " (rw,errors=remount-ro,commit=0)"; + assertEquals("/", f.parseMountPoint(line)); + line = "gvfs-fuse-daemon on /home/alice/.gvfs" + + " type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=alice)"; + assertEquals(null, f.parseMountPoint(line)); // Can't be parsed + line = "fusectl on /sys/fs/fuse/connections type fusectl (rw)"; + assertEquals(null, f.parseMountPoint(line)); // Can't be parsed + line = "/dev/sdd1 on /media/HAZ SPACE(!) type vfat" + + " (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000," + + "shortname=mixed,dmask=0077,utf8=1,showexec,flush)"; + assertEquals("/media/HAZ SPACE(!)", f.parseMountPoint(line)); + } +} diff --git a/test/net/sf/briar/plugins/file/MacRemovableDriveFinderTest.java b/test/net/sf/briar/plugins/file/MacRemovableDriveFinderTest.java new file mode 100644 index 0000000000..0b1848033a --- /dev/null +++ b/test/net/sf/briar/plugins/file/MacRemovableDriveFinderTest.java @@ -0,0 +1,23 @@ +package net.sf.briar.plugins.file; + +import junit.framework.TestCase; + +import org.junit.Test; + +public class MacRemovableDriveFinderTest extends TestCase { + + @Test + public void testParseMountPoint() { + MacRemovableDriveFinder f = new MacRemovableDriveFinder(); + String line = "/dev/disk0s3 on / (local, journaled)"; + assertEquals("/", f.parseMountPoint(line)); + line = "devfs on /dev (local)"; + assertEquals(null, f.parseMountPoint(line)); // Can't be parsed + line = "<volfs> on /.vol"; + assertEquals(null, f.parseMountPoint(line)); // Can't be parsed + line = "automount -nsl [117] on /Network (automounted)"; + assertEquals(null, f.parseMountPoint(line)); // Can't be parsed + line = "/dev/disk1s1 on /Volumes/HAZ SPACE(!) (local, nodev, nosuid)"; + assertEquals("/Volumes/HAZ SPACE(!)", f.parseMountPoint(line)); + } +} -- GitLab