Files
sx/examples/1612-platform-fs-roundtrip.sx
agra 4e942b5373 test: migrate examples to XXXX-category-name layout + split expected streams
Rename all example tests/companions to the XXXX-category-test-name scheme
(per-category 100-blocks: basic 0010, types 0100, ... errors 1000,
diagnostics 1100, ffi 1200, ffi-objc 1300, ffi-jni 1400, vectors 1500,
platform 1600). Companions and dir/C fixtures move in lockstep with their
parent test; #import/#source/#include paths rewritten to match.

Expected output now lives in examples/expected/ (a sibling dir of the
tests) split into three streams per the new convention:
  <name>.exit / <name>.stdout / <name>.stderr  (+ optional <name>.ir)

run_examples.sh rewritten: scans examples/ and issues/ for an
expected/<name>.exit marker, captures stdout and stderr separately (no
more 2>&1), compares each stream + exit + optional IR snapshot.

Behavior validated unchanged: every renamed test reproduces its prior
merged output + exit (diffs limited to file paths/basenames embedded in
diagnostics + traces, which correctly reflect the new names). Suite:
292 passed, 0 failed. 50-smoke.sx split + issue relocation + docs follow
in subsequent commits.
2026-06-01 19:05:15 +03:00

44 lines
2.1 KiB
Plaintext

#import "modules/std.sx";
#import "modules/fs.sx";
// fs.sx smoke test: every primitive the bundling phase needs.
// Creates a temp tree, writes/reads/copies/renames/chmod/deletes
// through it, then exercises basename/dirname.
main :: () {
if !create_dir_all("/tmp/sx_fs_test/a/b/c") { print("FAIL mkdir_all\n"); return; }
if !exists("/tmp/sx_fs_test/a/b/c") { print("FAIL exists after mkdir_all\n"); return; }
if !write_file("/tmp/sx_fs_test/hello.txt", "hello fs") { print("FAIL write_file\n"); return; }
if r := read_file("/tmp/sx_fs_test/hello.txt") {
if r.len != 8 { print("FAIL read length: got {}\n", r.len); return; }
print("read: {}\n", r);
} else {
print("FAIL read_file\n");
return;
}
if !copy_file("/tmp/sx_fs_test/hello.txt", "/tmp/sx_fs_test/hello.copy") { print("FAIL copy\n"); return; }
if !exists("/tmp/sx_fs_test/hello.copy") { print("FAIL exists after copy\n"); return; }
if !move("/tmp/sx_fs_test/hello.copy", "/tmp/sx_fs_test/renamed.txt") { print("FAIL rename\n"); return; }
if exists("/tmp/sx_fs_test/hello.copy") { print("FAIL old still exists after rename\n"); return; }
if !exists("/tmp/sx_fs_test/renamed.txt") { print("FAIL new missing after rename\n"); return; }
if !set_mode("/tmp/sx_fs_test/hello.txt", 493) { print("FAIL chmod\n"); return; }
if !delete_file("/tmp/sx_fs_test/hello.txt") { print("FAIL delete_file\n"); return; }
if !delete_file("/tmp/sx_fs_test/renamed.txt") { print("FAIL delete renamed\n"); return; }
if !delete_dir("/tmp/sx_fs_test/a/b/c") { print("FAIL delete c\n"); return; }
if !delete_dir("/tmp/sx_fs_test/a/b") { print("FAIL delete b\n"); return; }
if !delete_dir("/tmp/sx_fs_test/a") { print("FAIL delete a\n"); return; }
if !delete_dir("/tmp/sx_fs_test") { print("FAIL delete root\n"); return; }
print("basename(/a/b/c.txt) = {}\n", basename("/a/b/c.txt"));
print("basename(foo) = {}\n", basename("foo"));
print("dirname(/a/b/c.txt) = {}\n", dirname("/a/b/c.txt"));
print("dirname(foo) = {}\n", dirname("foo"));
print("ok\n");
}