@@ -9,21 +9,8 @@ assert(type(system.compiler_name) == 'string')
99assert (type (system .compiler_version ) == ' table' )
1010assert (type (system .os ) == ' string' )
1111
12- local token = ' Banana'
13- function write_read_token (tmpdir )
14- local filename = tmpdir .. ' /foo.txt'
15- local fh = io.open (filename , ' w' )
16- fh :write (token .. ' \n ' )
17- fh :close ()
18- return io.open (filename ):read ' *l'
19- end
20-
21- -- with_tmpdir
22- assert (system .with_tmpdir (' .' , ' foo' , write_read_token ) == token )
23- assert (system .with_tmpdir (' foo' , write_read_token ) == token )
24-
25- -- tmpdirname
26- assert (type (system .tmpdirname ()) == ' string' , " tmpdirname should return a string" )
12+ -- currentdir
13+ assert (type (system .currentdir ()) == ' string' )
2714
2815-- env
2916assert (type (system .env ()) == ' table' )
@@ -35,10 +22,7 @@ assert(#system.ls('.') == #system.ls())
3522assert (pcall (system .ls , ' thisdoesnotexist' ) == false )
3623assert (pcall (system .ls , ' README.md' ) == false )
3724
38- -- currentdir
39- assert (type (system .currentdir ()) == ' string' )
40-
41- -- Complex scripts
25+ -- mkdir and rmdir
4226function in_tmpdir (callback )
4327 local orig_dir = system .currentdir ()
4428 return system .with_tmpdir (
@@ -52,6 +36,44 @@ function in_tmpdir (callback)
5236 )
5337end
5438
39+ function test_mkdir_rmdir ()
40+ -- mkdir
41+ assert (not pcall (system .mkdir , ' .' ), " should not be possible to create `.`" )
42+ assert (pcall (system .mkdir , ' foo' ), " normal dir creation" )
43+ assert (pcall (system .mkdir , ' foo' , true ), " dir creation if exists" )
44+ assert ((system .ls ())[1 ] == ' foo' )
45+ assert (not pcall (system .mkdir , ' bar/baz' ),
46+ " creation of nested dir" )
47+ assert (pcall (system .mkdir , ' bar/baz' , true ),
48+ " nested dir creation, including parent directories" )
49+ assert ((system .ls ' bar' )[1 ] == ' baz' )
50+
51+ -- rmdir
52+ assert (pcall (system .rmdir , ' foo' ), " delete empty directory" )
53+ assert (not pcall (system .rmdir , ' bar' ), " cannot delete non-empty dir" )
54+ assert (pcall (system .rmdir , ' bar' , true ), " delete dir recursively" )
55+ assert (# system .ls () == 0 , " dir should be empty" )
56+ end
57+ in_tmpdir (test_mkdir_rmdir )
58+
59+ -- tmpdirname
60+ assert (type (system .tmpdirname ()) == ' string' , " tmpdirname should return a string" )
61+
62+ -- with_tmpdir
63+ local token = ' Banana'
64+ function write_read_token (tmpdir )
65+ local filename = tmpdir .. ' /foo.txt'
66+ local fh = io.open (filename , ' w' )
67+ fh :write (token .. ' \n ' )
68+ fh :close ()
69+ return io.open (filename ):read ' *l'
70+ end
71+
72+ assert (system .with_tmpdir (' .' , ' foo' , write_read_token ) == token )
73+ assert (system .with_tmpdir (' foo' , write_read_token ) == token )
74+
75+
76+ -- Complex scripts
5577function create_then_count_files ()
5678 io.open (' README.org' , ' w' ):close ()
5779 return # system .ls ' .'
0 commit comments