Skip to content

Commit

Permalink
Filesystem tests.
Browse files Browse the repository at this point in the history
  • Loading branch information
andrews committed Sep 15, 2009
1 parent 9156589 commit 0f9435a
Show file tree
Hide file tree
Showing 4 changed files with 149 additions and 4 deletions.
1 change: 1 addition & 0 deletions .gitignore
@@ -1,3 +1,4 @@
*~
*.pyc
.coverage
test_data
3 changes: 3 additions & 0 deletions Makefile
Expand Up @@ -4,6 +4,8 @@ clean:
@rm -rf build
@echo "removing (.coverage)"
@rm -f .coverage
@echo "removing (test_data)"
@rm -rf `pwd`/test_data
@echo "Done!"

unit: clean
Expand All @@ -14,6 +16,7 @@ unit: clean

functional: clean
@echo "Running unit tests..."
@mkdir `pwd`/test_data
@export PYTHONPATH=`pwd`:`pwd`/staticgenerator::$$PYTHONPATH && \
nosetests -d -s --verbose --with-coverage --cover-inclusive --cover-package=staticgenerator \
staticgenerator/tests/functional
Expand Down
10 changes: 6 additions & 4 deletions staticgenerator/filesystem.py
Expand Up @@ -15,7 +15,7 @@ def tempfile(self, directory):
return tempfile.mkstemp(dir=directory)

def write(self, f, content):
os.write(f, content)
return os.write(f, content)

def close(self, f):
os.close(f)
Expand All @@ -24,16 +24,18 @@ def chmod(self, filename, flags):
os.chmod(filename, flags)

def rename(self, from_file, to_file):
os.rename(tmpname, filename)
os.rename(from_file, to_file)

def remove(self, path):
os.remove(path)

def rmdir(self, directory):
os.rmdir(directory)

def join(self, root, path):
return os.path.join(root, path.lstrip('/'))
def join(self, *paths):
if not paths:
return ""
return os.path.join(paths[0], *[path.lstrip("/") for path in paths[1:]])

def dirname(self, path):
return os.path.dirname(path)
Expand Down
139 changes: 139 additions & 0 deletions staticgenerator/tests/functional/test_filesystem.py
@@ -0,0 +1,139 @@
#!/usr/bin/env python
#-*- coding:utf-8 -*-

import os
from os.path import abspath, join, dirname, exists
import tempfile

from staticgenerator.staticgenerator import FileSystem

ROOT_DIR = join(abspath(os.curdir), "test_data")

def test_can_create_filesystem():
fs = FileSystem()

assert fs
assert isinstance(fs, FileSystem)

def test_current_directory_exists():
fs = FileSystem()
assert fs.exists(ROOT_DIR)

def test_directory_not_exists():
fs = FileSystem()
assert not fs.exists('/fake/dir')

def test_can_create_directory():
fs = FileSystem()

path = join(ROOT_DIR, "test")

fs.makedirs(path)

assert exists(path)

os.rmdir(path)

def test_can_create_tempfile():
fs = FileSystem()

temp_file = fs.tempfile(ROOT_DIR)

assert len(temp_file) == 2

os.remove(temp_file[1])

def test_can_write_content_in_tempfile():
fs = FileSystem()

temp_file = tempfile.mkstemp()
bytes = fs.write(temp_file[0], "foo")

assert bytes == 3

def test_can_close_tempfile():
fs = FileSystem()

temp_file = tempfile.mkstemp()
fs.close(temp_file[0])

try:
fs.close(temp_file[0])
assert False
except OSError:
pass

def test_can_rename_file():
fs = FileSystem()

file_path = join(ROOT_DIR, "some_file")
f = open(file_path, "w")
f.write("content")
f.close()

new_file_path = join(ROOT_DIR, "new_file")
fs.rename(file_path, new_file_path)

f = open(new_file_path, "r")
assert f.read() == "content"

f.close()

def test_can_remove_file():
fs = FileSystem()

file_path = join(ROOT_DIR, "some_file")
f = open(file_path, "w")
f.write("content")
f.close()

fs.remove(file_path)

assert not exists(file_path)

def test_can_remove_dir():
fs = FileSystem()

dir_path = join(ROOT_DIR, "some_dir")
os.mkdir(dir_path)

fs.rmdir(dir_path)

assert not exists(dir_path)

def test_join_many_paths():
fs = FileSystem()
assert fs.join("/fake", "/dir", "/other") == "/fake/dir/other"

def test_join_single_path():
fs = FileSystem()
assert fs.join("/fake") == "/fake"

def test_join_two_paths():
fs = FileSystem()
assert fs.join("/fake", "/dir") == "/fake/dir"

def test_join_two_paths_when_second_is_not_rooted():
fs = FileSystem()
assert fs.join("/fake", "dir") == "/fake/dir"

def test_join_two_paths_when_second_is_virtual():
fs = FileSystem()
assert fs.join("/fake", "../dir") == "/fake/../dir"

def test_join_returns_empty_string_when_empty():
fs = FileSystem()
assert fs.join('') == ''

def test_join_returns_empty_string_when_null():
fs = FileSystem()
assert fs.join() == ''

def test_join_returns_rooted_path_when_second_path_is_empty():
fs = FileSystem()
assert fs.join("/root","") == '/root/'

def test_dirname_returns_last_dir():
fs = FileSystem()
assert fs.dirname("/root/test/index.html") == '/root/test'

0 comments on commit 0f9435a

Please sign in to comment.