aboutsummaryrefslogtreecommitdiff
path: root/spec/fs_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'spec/fs_spec.lua')
-rw-r--r--spec/fs_spec.lua76
1 files changed, 76 insertions, 0 deletions
diff --git a/spec/fs_spec.lua b/spec/fs_spec.lua
new file mode 100644
index 00000000..d5e93c4b
--- /dev/null
+++ b/spec/fs_spec.lua
@@ -0,0 +1,76 @@
1local test_env = require("spec.util.test_env")
2
3local lfs = require("lfs")
4local testing_paths = test_env.testing_paths
5local get_tmp_path = test_env.get_tmp_path
6
7describe("luarocks.fs #integration", function()
8
9 local fs
10
11 describe("fs.download #mock", function()
12 local tmpfile
13 local tmpdir
14
15 lazy_setup(function()
16 test_env.setup_specs(nil, "mock")
17 local cfg = require("luarocks.core.cfg")
18 fs = require("luarocks.fs")
19 cfg.init()
20 fs.init()
21 test_env.mock_server_init()
22 end)
23
24 lazy_teardown(function()
25 test_env.mock_server_done()
26 end)
27
28 after_each(function()
29 if tmpfile then
30 os.remove(tmpfile)
31 tmpfile = nil
32 end
33 if tmpdir then
34 lfs.rmdir(tmpdir)
35 tmpdir = nil
36 end
37 end)
38
39 it("returns true and fetches the url argument into the specified filename", function()
40 tmpfile = get_tmp_path()
41 assert.truthy(fs.download("http://localhost:8080/file/a_rock.lua", tmpfile))
42 local fd = assert(io.open(tmpfile, "r"))
43 local downloadcontent = assert(fd:read("*a"))
44 fd:close()
45 fd = assert(io.open(testing_paths.fixtures_dir .. "/a_rock.lua", "r"))
46 local originalcontent = assert(fd:read("*a"))
47 fd:close()
48 assert.same(downloadcontent, originalcontent)
49 end)
50
51 it("returns true and fetches the url argument into a file whose name matches the basename of the url if the filename argument is not given", function()
52 tmpdir = get_tmp_path()
53 lfs.mkdir(tmpdir)
54 fs.change_dir(tmpdir)
55 assert.truthy(fs.download("http://localhost:8080/file/a_rock.lua"))
56 tmpfile = tmpdir .. "/a_rock.lua"
57 local fd = assert(io.open(tmpfile, "r"))
58 local downloadcontent = assert(fd:read("*a"))
59 fd:close()
60 fd = assert(io.open(testing_paths.fixtures_dir .. "/a_rock.lua", "r"))
61 local originalcontent = assert(fd:read("*a"))
62 fd:close()
63 assert.same(downloadcontent, originalcontent)
64 fs.pop_dir()
65 end)
66
67 it("returns false and does nothing if the url argument contains a nonexistent file", function()
68 tmpfile = get_tmp_path()
69 assert.falsy(fs.download("http://localhost:8080/file/nonexistent", tmpfile))
70 end)
71
72 it("returns false and does nothing if the url argument is invalid", function()
73 assert.falsy(fs.download("invalidurl"))
74 end)
75 end)
76end)