var fs = require('fs'); var system = require('system'); var TEST_DIR = "testdir", TEST_FILE = "testfile", START_CWD = fs.workingDirectory; test(function () { assert_is_true(fs.makeDirectory(TEST_DIR)); this.add_cleanup(function () { fs.removeTree(TEST_DIR); }); assert_is_true(fs.changeWorkingDirectory(TEST_DIR)); this.add_cleanup(function () { fs.changeWorkingDirectory(START_CWD); }); fs.write(TEST_FILE, TEST_FILE, "w"); var suffix = fs.join("", TEST_DIR, TEST_FILE), abs = fs.absolute(".." + suffix), lastIndex = abs.lastIndexOf(suffix); assert_not_equals(lastIndex, -1); assert_equals(lastIndex + suffix.length, abs.length); }, "manipulation of current working directory"); test(function () { fs.copyTree(phantom.libraryPath, TEST_DIR); this.add_cleanup(function () { fs.removeTree(TEST_DIR); }); assert_deep_equals(fs.list(phantom.libraryPath), fs.list(TEST_DIR)); }, "copying a directory tree"); test(function () { assert_type_of(fs.readLink, 'function'); // TODO: test the actual functionality once we can create symlinks. }, "fs.readLink exists"); generate_tests(function fs_join_test (parts, expected) { var actual = fs.join.apply(null, parts); assert_equals(actual, expected); }, [ [ "fs.join: []", [], "." ], [ "fs.join: nonsense", [[], null], "." ], [ "fs.join: 1 element", [""], "." ], [ "fs.join: 2 elements", ["", "a"], "/a" ], [ "fs.join: 3 elements", ["a", "b", "c"], "a/b/c" ], [ "fs.join: 4 elements", ["", "a", "b", "c"], "/a/b/c" ], [ "fs.join: empty elements", ["", "a", "", "b", "", "c"], "/a/b/c" ], [ "fs.join: empty elements 2", ["a", "", "b", "", "c"], "a/b/c" ] ]); generate_tests(function fs_split_test (input, expected) { var path = input.join(fs.separator); var actual = fs.split(path); assert_deep_equals(actual, expected); }, [ [ "fs.split: absolute", ["", "a", "b", "c", "d"], ["", "a", "b", "c", "d"] ], [ "fs.split: absolute, trailing", ["", "a", "b", "c", "d", ""], ["", "a", "b", "c", "d"] ], [ "fs.split: non-absolute", ["a", "b", "c", "d"], ["a", "b", "c", "d"] ], [ "fs.split: non-absolute, trailing", ["a", "b", "c", "d", ""], ["a", "b", "c", "d"] ], [ "fs.split: repeated separators", ["a", "", "", "", "b", "", "c", "", "", "d", "", "", ""], ["a", "b", "c", "d"] ] ]);