erlang: file:read_file/write_file/delete BIFs (+10 eval tests, 633/633)

This commit is contained in:
2026-05-14 20:14:31 +00:00
parent 3d092dd78e
commit 29fd70f17a
5 changed files with 134 additions and 11 deletions

View File

@@ -1340,6 +1340,55 @@
(er-eval-test "capstone soft_purge clean after hard = true"
(get (nth (get er-rt-cap-result :elements) 4) :name) "true")
;; ── Phase 8: file module BIFs ───────────────────────────────────
(er-modules-reset!)
;; write + read round-trip
(er-eval-test "file:write_file ok"
(nm (ev "file:write_file(\"/tmp/er-test-1.txt\", \"hello\")"))
"ok")
(er-eval-test "file:read_file ok tag"
(nm (ev "element(1, file:read_file(\"/tmp/er-test-1.txt\"))"))
"ok")
(er-eval-test "file:read_file payload is binary"
(ev "case file:read_file(\"/tmp/er-test-1.txt\") of {ok, B} -> is_binary(B) end")
(er-mk-atom "true"))
(er-eval-test "file:read_file content bytes"
(ev "case file:read_file(\"/tmp/er-test-1.txt\") of {ok, B} -> byte_size(B) end")
5)
;; missing file → {error, enoent}
(er-eval-test "file:read_file missing tag"
(nm (ev "element(1, file:read_file(\"/tmp/er-no-such-file-xyz\"))"))
"error")
(er-eval-test "file:read_file missing reason"
(nm (ev "element(2, file:read_file(\"/tmp/er-no-such-file-xyz\"))"))
"enoent")
;; delete
(er-eval-test "file:delete ok"
(nm (ev "file:write_file(\"/tmp/er-test-del.txt\", \"x\"), file:delete(\"/tmp/er-test-del.txt\")"))
"ok")
(er-eval-test "file:read_file after delete"
(nm (ev "file:write_file(\"/tmp/er-test-del2.txt\", \"x\"), file:delete(\"/tmp/er-test-del2.txt\"), element(2, file:read_file(\"/tmp/er-test-del2.txt\"))"))
"enoent")
;; write to inaccessible dir → {error, enoent}
(er-eval-test "file:write_file bad path"
(nm (ev "element(2, file:write_file(\"/tmp/no-such-dir-xyz/x\", \"y\"))"))
"enoent")
;; binary input round-trip (the bytes go through write)
(er-eval-test "file:write_file binary payload round-trip"
(ev "file:write_file(\"/tmp/er-test-2.bin\", <<1, 2, 3, 4, 5>>), case file:read_file(\"/tmp/er-test-2.bin\") of {ok, B} -> byte_size(B) end")
5)
(define
er-eval-test-summary
(str "eval " er-eval-test-pass "/" er-eval-test-count))