From fd9a2205decb793304840573ee9072747dfd4311 Mon Sep 17 00:00:00 2001
From: david-sarah <david-sarah@jacaranda.org>
Date: Sun, 8 Aug 2010 11:50:05 -0700
Subject: [PATCH] test_runner.py: correct and simplify normalization of package
 directory for case-insensitive filesystems.

---
 src/allmydata/__init__.py         |  2 +-
 src/allmydata/test/test_runner.py | 20 +++++++++-----------
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/src/allmydata/__init__.py b/src/allmydata/__init__.py
index 14110062..efa3e7fb 100644
--- a/src/allmydata/__init__.py
+++ b/src/allmydata/__init__.py
@@ -170,7 +170,7 @@ def get_package_versions_from_setuptools():
     return dict([(p.project_name, (p.version, p.location)) for p in pkg_resources.require(__appname__)])
 
 def package_dir(srcfile):
-    return os.path.dirname(os.path.dirname(os.path.realpath(srcfile)))
+    return os.path.dirname(os.path.dirname(os.path.normcase(os.path.realpath(srcfile))))
 
 def get_package_versions_and_locations():
     # because there are a few dependencies that are outside setuptools's ken
diff --git a/src/allmydata/test/test_runner.py b/src/allmydata/test/test_runner.py
index 8c571982..8345bb10 100644
--- a/src/allmydata/test/test_runner.py
+++ b/src/allmydata/test/test_runner.py
@@ -16,11 +16,11 @@ import allmydata
 timeout = 240
 
 srcfile = allmydata.__file__
-srcdir = os.path.dirname(os.path.dirname(os.path.realpath(srcfile)))
+srcdir = os.path.dirname(os.path.dirname(os.path.normcase(os.path.realpath(srcfile))))
 
 rootdir = os.path.dirname(srcdir)
-if os.path.normcase(os.path.basename(srcdir)) == 'site-packages':
-    if re.search(r'python.+\..+', os.path.normcase(os.path.basename(rootdir))):
+if os.path.basename(srcdir) == 'site-packages':
+    if re.search(r'python.+\..+', os.path.basename(rootdir)):
         rootdir = os.path.dirname(rootdir)
     rootdir = os.path.dirname(rootdir)
 
@@ -49,14 +49,13 @@ class SkipMixin:
 
 class BinTahoe(common_util.SignalMixin, unittest.TestCase, SkipMixin):
     def test_the_right_code(self):
-        cwd = os.getcwd()
-        root_from_cwd = os.path.normcase(os.path.normpath(os.path.join(cwd, "..")))
-        root_from_test = os.path.normcase(os.path.normpath(rootdir))
+        cwd = os.path.normcase(os.path.realpath("."))
+        root_from_cwd = os.path.dirname(cwd)
 
-        same = (root_from_cwd == root_from_test)
+        same = (root_from_cwd == rootdir)
         if not same:
             try:
-                same = os.path.samefile(root_from_cwd, root_from_test)
+                same = os.path.samefile(root_from_cwd, rootdir)
             except AttributeError, e:
                 e  # hush pyflakes
 
@@ -64,10 +63,9 @@ class BinTahoe(common_util.SignalMixin, unittest.TestCase, SkipMixin):
             msg = ("We seem to be testing the code at %r,\n"
                    "(according to the source filename %r),\n"
                    "but expected to be testing the code at %r.\n"
-                   % (root_from_test, srcfile, root_from_cwd))
+                   % (rootdir, srcfile, root_from_cwd))
             if (not isinstance(cwd, unicode) and
-                (os.path.normcase(os.path.normpath(cwd))).decode(get_filesystem_encoding(), 'replace')
-                  != os.path.normcase(os.path.normpath(os.getcwdu()))):
+                cwd.decode(get_filesystem_encoding(), 'replace') != os.path.normcase(os.path.realpath(os.getcwdu()))):
                 msg += ("However, this may be a false alarm because the current directory path\n"
                         "is not representable in the filesystem encoding. Please run the tests\n"
                         "from the root of the Tahoe-LAFS distribution at a non-Unicode path.")
-- 
2.45.2