#!/usr/bin/env python import setpath import unittest import compiler import os from bike import testdata from bike.testutils import * from bike.mock import Mock from pathutils import getPathOfModuleOrPackage from pathutils import * import pathutils as loadmodule class TestGetFilesForName(BRMTestCase): def testGetFilesForName_recursivelyReturnsFilesInBreadthFirstOrder(self): createPackageStructure("pass", "pass") files = getFilesForName(pkgstructureBasedir) for f in files: assert f in \ [os.path.join(pkgstructureBasedir, '__init__.py'), os.path.join(pkgstructureBasedir, 'foo.py'), os.path.join(pkgstructureChilddir, '__init__.py'), os.path.join(pkgstructureChilddir, 'bah.py')] def testGetFilesForName_globsStars(self): createPackageStructure("pass", "pass") assert getFilesForName(os.path.join(pkgstructureBasedir, "fo*")) == [os.path.join(pkgstructureBasedir, 'foo.py')] removePackageStructure() def testGetFilesForName_doesntListFilesWithDotAtFront(self): writeFile(os.path.join(".foobah.py"),"") files = getFilesForName("a") self.assertEqual([],files) class TestGetRootDirectory(BRMTestCase): def test_returnsParentDirectoryIfFileNotInPackage(self): try: # this doesnt have __init__.py file, so # isnt package os.makedirs("a") writeFile(os.path.join("a", "foo.py"), "pass") dir = loadmodule.getRootDirectory(os.path.join("a", "foo.py")) assert dir == "a" finally: os.remove(os.path.join("a", "foo.py")) os.removedirs(os.path.join("a")) def test_returnsFirstNonPackageParentDirectoryIfFileInPackage(self): try: os.makedirs(os.path.join("root", "a", "b")) writeFile(os.path.join("root", "a", "__init__.py"), "# ") writeFile(os.path.join("root", "a", "b", "__init__.py"), "# ") writeFile(os.path.join("root", "a", "b", "foo.py"), "pass") dir = loadmodule.getRootDirectory(os.path.join("root", "a", "b", "foo.py")) assert dir == "root" finally: os.remove(os.path.join("root", "a", "__init__.py")) os.remove(os.path.join("root", "a", "b", "__init__.py")) os.remove(os.path.join("root", "a", "b", "foo.py")) os.removedirs(os.path.join("root", "a", "b")) def test_returnsFirstNonPackageParentDirectoryIfPathIsAPackage(self): try: os.makedirs(os.path.join("root", "a", "b")) writeFile(os.path.join("root", "a", "__init__.py"), "# ") writeFile(os.path.join("root", "a", "b", "__init__.py"), "# ") writeFile(os.path.join("root", "a", "b", "foo.py"), "pass") dir = loadmodule.getRootDirectory(os.path.join("root", "a", "b")) assert dir == "root" finally: os.remove(os.path.join("root", "a", "__init__.py")) os.remove(os.path.join("root", "a", "b", "__init__.py")) os.remove(os.path.join("root", "a", "b", "foo.py")) os.removedirs(os.path.join("root", "a", "b")) def test_returnsDirIfDirIsTheRootDirectory(self): try: os.makedirs(os.path.join("root", "a", "b")) writeFile(os.path.join("root", "a", "__init__.py"), "# ") writeFile(os.path.join("root", "a", "b", "__init__.py"), "# ") writeFile(os.path.join("root", "a", "b", "foo.py"), "pass") dir = loadmodule.getRootDirectory("root") assert dir == "root" finally: os.remove(os.path.join("root", "a", "__init__.py")) os.remove(os.path.join("root", "a", "b", "__init__.py")) os.remove(os.path.join("root", "a", "b", "foo.py")) os.removedirs(os.path.join("root", "a", "b")) class getPackageBaseDirectory(BRMTestCase): def test_returnsBasePackageIfFileInPackageHierarchy(self): try: createPackageStructure("","") dir = loadmodule.getPackageBaseDirectory(pkgstructureFile2) self.assertEqual(pkgstructureBasedir, dir) finally: removePackageStructure() def test_returnsFileDirectoryIfFileNotInPackage(self): try: createPackageStructure("","") dir = loadmodule.getPackageBaseDirectory(pkgstructureFile0) self.assertEqual(pkgstructureRootDir, dir) finally: removePackageStructure() class TestGetPathOfModuleOrPackage(BRMTestCase): def test_worksForFullPath(self): try: createPackageStructure("pass","pass") import sys self.assertEqual(getPathOfModuleOrPackage("a.b.bah", [pkgstructureRootDir]), pkgstructureFile2) finally: removePackageStructure() if __name__ == "__main__": unittest.main()