From 6fab17d8605488a7fa382d31b59127463ccc7a5e Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Fri, 4 Jul 2014 09:30:46 -0700 Subject: [PATCH] Add basic tests for lfs --- .travis.yml | 1 + Makefile.target | 2 +- automation/tests/aegisub.cpp | 6 +++ automation/tests/modules/lfs.moon | 69 +++++++++++++++++++++++++++++++ 4 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 automation/tests/modules/lfs.moon diff --git a/.travis.yml b/.travis.yml index 1ea18e95f..0957f5c2b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,6 +12,7 @@ install: - sudo apt-get install -y -qq libasound2-dev libfftw3-dev libhunspell-dev yasm libfribidi-dev libass-dev libffms2-dev libwxgtk3.0-dev libicu-dev luarocks - sudo luarocks install busted 1.10.0 > /dev/null - sudo luarocks install moonscript > /dev/null + - sudo luarocks install uuid > /dev/null - git submodule --quiet init - git submodule --quiet update vendor/googletest diff --git a/Makefile.target b/Makefile.target index 4c9157e96..5ca482f81 100644 --- a/Makefile.target +++ b/Makefile.target @@ -1,5 +1,5 @@ ifneq (yes, $(INCLUDING_CHILD_MAKEFILES)) -COMMANDS := all install clean distclean test depclean osx-bundle osx-dmg +COMMANDS := all install clean distclean test depclean osx-bundle osx-dmg test-automation .PHONY: $(COMMANDS) .DEFAULT_GOAL := all diff --git a/automation/tests/aegisub.cpp b/automation/tests/aegisub.cpp index b860901ac..8592ad87e 100644 --- a/automation/tests/aegisub.cpp +++ b/automation/tests/aegisub.cpp @@ -18,6 +18,9 @@ #include #include +#include +#include + #include #include @@ -38,6 +41,9 @@ int main(int argc, char **argv) { return 1; } + agi::dispatch::Init([](agi::dispatch::Thunk f) { }); + agi::log::log = new agi::log::LogSink; + // Init lua state lua_State *L = lua_open(); agi::lua::preload_modules(L); diff --git a/automation/tests/modules/lfs.moon b/automation/tests/modules/lfs.moon new file mode 100644 index 000000000..e72b314a6 --- /dev/null +++ b/automation/tests/modules/lfs.moon @@ -0,0 +1,69 @@ +-- 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 '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'