-- Copyright (c) 2014, Thomas Goyne -- -- Permission to use, copy, modify, and distribute this software for any -- purpose with or without fee is hereby granted, provided that the above -- copyright notice and this permission notice appear in all copies. -- -- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. lfs = require 'aegisub.lfs' uuid = require 'uuid' uuid.randomseed os.time() get_pwd = -> pwd = io.popen 'pwd' dir = pwd\read! pwd.close! dir original_dir = get_pwd! describe 'lfs', -> after_each -> lfs.chdir original_dir describe 'currentdir', -> it 'should give the same result as pwd', -> dir = lfs.currentdir() assert.is.equal dir, get_pwd! describe 'chdir', -> it 'should change the current directory', -> dir = get_pwd! lfs.chdir '/' new_dir = get_pwd! assert.is.equal '/', new_dir lfs.chdir dir assert.is.equal get_pwd!, dir it 'should fail on an invalid path', -> name = '/tmp/' .. uuid! .. '/' .. uuid! res, msg = lfs.chdir name assert.is.nil res assert.is.not.nil msg describe 'mkdir', -> it 'should be able to create new directories', -> name = '/tmp/' .. uuid! lfs.mkdir name assert.is.equal lfs.attributes(name, 'mode'), 'directory' res, msg = lfs.rmdir name assert.is.nil lfs.attributes name, 'mode' describe 'touch', -> it 'should create files if given a nonexistent filename', -> name = '/tmp/' .. uuid! lfs.touch name assert.is.equal lfs.attributes(name).mode, 'file' os.remove(name) assert.is.nil lfs.attributes name, 'mode'