zombiezen.com/go/lua@v0.0.0-20231013005828-290725fb9140/testdata/popen_unix.lua (about)

     1  -- Copyright 2023 Ross Light
     2  --
     3  -- Permission is hereby granted, free of charge, to any person obtaining a copy of
     4  -- this software and associated documentation files (the “Software”), to deal in
     5  -- the Software without restriction, including without limitation the rights to
     6  -- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
     7  -- the Software, and to permit persons to whom the Software is furnished to do so,
     8  -- subject to the following conditions:
     9  --
    10  -- The above copyright notice and this permission notice shall be included in all
    11  -- copies or substantial portions of the Software.
    12  --
    13  -- THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    14  -- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
    15  -- FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
    16  -- COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
    17  -- IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
    18  -- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    19  --
    20  -- SPDX-License-Identifier: MIT
    21  
    22  do
    23    local f = assert(io.popen("true"))
    24    local data = assert(f:read("a"))
    25    assert(data == "")
    26    assert(f:close())
    27  end
    28  
    29  do
    30    local f = assert(io.popen("sed -e \"/foo/d\" > foo.txt", "w"))
    31    assert(f:write("hi\nfoo\nbye\n"))
    32    assert(f:close())
    33  
    34    f = assert(io.open("foo.txt"))
    35    local data = assert(f:read("a"))
    36    assert(data == "hi\nbye\n", "content:\n"..data)
    37  end
    38  
    39  do
    40    local f = assert(io.popen("cat /dev/zero"))
    41    local data = assert(f:read(8))
    42    assert(data == "\x00\x00\x00\x00\x00\x00\x00\x00")
    43    assert(not f:close())
    44  end