def test_get_biom_project_dir(self): """Getting the biom project directory functions as expected. This method is ported from QIIME (http://www.qiime.org). QIIME is a GPL project, but we obtained permission from the authors of this method to port it to the BIOM Format project (and keep it under BIOM's BSD license). """ # Do an explicit check on whether the file system containing # the current file is case insensitive. This is in response # to SF bug #2945548, where this test would fail on certain # unusual circumstances on case-insensitive file systems # because the case of abspath(__file__) was inconsistent. # (If you don't believe this, set case_insensitive_filesystem # to False, and rename your top-level biom-format directory as # Biom-format on OS X. That should cause this test to fail as # actual will be path/to/Biom-format and expected will be # path/to/biom-format.) Note that we don't need to change anything # in the get_biom_project_dir() function as if the # file system is case insenstive, the case of the returned # string is irrelevant. case_insensitive_filesystem = \ exists(__file__.upper()) and exists(__file__.lower()) actual = get_biom_project_dir() # I base the expected here off the imported location of # biom/util.py here, to handle cases where either the user # has biom-format in their PYTHONPATH, or when they've installed it # with setup.py. # If util.py moves this test will fail -- that # is what we want in this case, as the get_biom_project_dir() # function would need to be modified. import biom.util util_py_filepath = abspath(abspath(biom.util.__file__)) expected = dirname(dirname(dirname(util_py_filepath))) if case_insensitive_filesystem: # Make both lowercase if the file system is case insensitive. actual = actual.lower() expected = expected.lower() self.assertEqual(actual, expected)