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