- Changes to build SCons packages on IRIX (and other *NIces).
+ - Don't create a directory Node when a file already exists there,
+ and vice versa.
+
From Charles Crain:
- Internal cleanup of environment passing to function Actions.
path_comp = path_comp[1:]
else:
path_comp = [ path_first, ] + path_comp[1:]
+
# Lookup the directory
for path_name in path_comp[:-1]:
path_norm = _my_normcase(path_name)
except KeyError:
if not create:
raise UserError
+
+ # look at the actual filesystem and make sure there isn't
+ # a file already there
+ path = os.path.join(str(directory), path_name)
+ if os.path.isfile(path):
+ raise TypeError, \
+ "File %s found where directory expected." % path
+
dir_temp = Dir(path_name, directory)
directory.entries[path_norm] = dir_temp
directory.add_wkid(dir_temp)
except KeyError:
if not create:
raise UserError
+
+ # make sure we don't create File nodes when there is actually
+ # a directory at that path on the disk, and vice versa
+ path = os.path.join(str(directory), path_comp[-1])
+ if fsclass == File:
+ if os.path.isdir(path):
+ raise TypeError, \
+ "Directory %s found where file expected." % path
+ elif fsclass == Dir:
+ if os.path.isfile(path):
+ raise TypeError, \
+ "File %s found where directory expected." % path
+
ret = fsclass(path_comp[-1], directory)
directory.entries[file_name] = ret
directory.add_wkid(ret)
parents = f1.get_parents()
assert parents == [ d1 ], parents
+ test.write("i_am_not_a_directory", "\n")
+ exc_caught = 0
+ try:
+ fs.Dir(test.workpath("i_am_not_a_directory"))
+ except TypeError:
+ exc_caught = 1
+ assert exc_caught, "Should have caught a TypeError"
+ test.unlink("i_am_not_a_directory")
+
+ exc_caught = 0
+ try:
+ fs.File(sub_dir)
+ except TypeError:
+ exc_caught = 1
+ assert exc_caught, "Should have caught a TypeError"
class find_fileTestCase(unittest.TestCase):
def runTest(self):