xref: /freebsd/libexec/nuageinit/tests/addfile.lua (revision 19a7ea3cc4de5af80e2913fda70bd65ad72835c0)
1*19a7ea3cSBaptiste Daroussin#!/bin/libexec/flua
2*19a7ea3cSBaptiste Daroussin
3*19a7ea3cSBaptiste Daroussinlocal n = require("nuage")
4*19a7ea3cSBaptiste Daroussinlocal lfs = require("lfs")
5*19a7ea3cSBaptiste Daroussin
6*19a7ea3cSBaptiste Daroussinlocal f = {
7*19a7ea3cSBaptiste Daroussin	content = "plop"
8*19a7ea3cSBaptiste Daroussin}
9*19a7ea3cSBaptiste Daroussin
10*19a7ea3cSBaptiste Daroussinlocal r, err = n.addfile(f, false)
11*19a7ea3cSBaptiste Daroussinif r or err ~= "No path provided for the file to write" then
12*19a7ea3cSBaptiste Daroussin	n.err("addfile should not accept a file to write without a path")
13*19a7ea3cSBaptiste Daroussinend
14*19a7ea3cSBaptiste Daroussin
15*19a7ea3cSBaptiste Daroussinlocal function addfile_and_getres(file)
16*19a7ea3cSBaptiste Daroussin	local r, err = n.addfile(file, false)
17*19a7ea3cSBaptiste Daroussin	if not r then
18*19a7ea3cSBaptiste Daroussin		n.err(err)
19*19a7ea3cSBaptiste Daroussin	end
20*19a7ea3cSBaptiste Daroussin	local root = os.getenv("NUAGE_FAKE_ROOTDIR")
21*19a7ea3cSBaptiste Daroussin	if not root then
22*19a7ea3cSBaptiste Daroussin		root = ""
23*19a7ea3cSBaptiste Daroussin	end
24*19a7ea3cSBaptiste Daroussin	local filepath = root .. file.path
25*19a7ea3cSBaptiste Daroussin	local resf = assert(io.open(filepath, "r"))
26*19a7ea3cSBaptiste Daroussin	local str = resf:read("*all")
27*19a7ea3cSBaptiste Daroussin	resf:close()
28*19a7ea3cSBaptiste Daroussin	return str
29*19a7ea3cSBaptiste Daroussinend
30*19a7ea3cSBaptiste Daroussin
31*19a7ea3cSBaptiste Daroussin-- simple file
32*19a7ea3cSBaptiste Daroussinf.path="/tmp/testnuage"
33*19a7ea3cSBaptiste Daroussinlocal str = addfile_and_getres(f)
34*19a7ea3cSBaptiste Daroussinif str ~= f.content then
35*19a7ea3cSBaptiste Daroussin	n.err("Invalid file content")
36*19a7ea3cSBaptiste Daroussinend
37*19a7ea3cSBaptiste Daroussin
38*19a7ea3cSBaptiste Daroussin-- the file is overwriten
39*19a7ea3cSBaptiste Daroussinf.content = "test"
40*19a7ea3cSBaptiste Daroussin
41*19a7ea3cSBaptiste Daroussinstr = addfile_and_getres(f)
42*19a7ea3cSBaptiste Daroussinif str ~= f.content then
43*19a7ea3cSBaptiste Daroussin	n.err("Invalid file content, not overwritten")
44*19a7ea3cSBaptiste Daroussinend
45*19a7ea3cSBaptiste Daroussin
46*19a7ea3cSBaptiste Daroussin-- try to append now
47*19a7ea3cSBaptiste Daroussinf.content = "more"
48*19a7ea3cSBaptiste Daroussinf.append = true
49*19a7ea3cSBaptiste Daroussin
50*19a7ea3cSBaptiste Daroussinstr = addfile_and_getres(f)
51*19a7ea3cSBaptiste Daroussinif str ~= "test" .. f.content then
52*19a7ea3cSBaptiste Daroussin	n.err("Invalid file content, not appended")
53*19a7ea3cSBaptiste Daroussinend
54*19a7ea3cSBaptiste Daroussin
55*19a7ea3cSBaptiste Daroussin-- base64
56*19a7ea3cSBaptiste Daroussinf.content = "YmxhCg=="
57*19a7ea3cSBaptiste Daroussinf.encoding = "base64"
58*19a7ea3cSBaptiste Daroussinf.append = false
59*19a7ea3cSBaptiste Daroussin
60*19a7ea3cSBaptiste Daroussinstr = addfile_and_getres(f)
61*19a7ea3cSBaptiste Daroussinif str ~= "bla\n" then
62*19a7ea3cSBaptiste Daroussin	n.err("Invalid file content, base64 decode")
63*19a7ea3cSBaptiste Daroussinend
64*19a7ea3cSBaptiste Daroussin
65*19a7ea3cSBaptiste Daroussin-- b64
66*19a7ea3cSBaptiste Daroussinf.encoding = "b64"
67*19a7ea3cSBaptiste Daroussinstr = addfile_and_getres(f)
68*19a7ea3cSBaptiste Daroussinif str ~= "bla\n" then
69*19a7ea3cSBaptiste Daroussin	n.err("Invalid file content, b64 decode")
70*19a7ea3cSBaptiste Daroussin	print("==>" .. str .. "<==")
71*19a7ea3cSBaptiste Daroussinend
72