- 
                Notifications
    
You must be signed in to change notification settings  - Fork 35
 
wasi:[email protected]: Add tests for unlink errors #137
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
89c4f76    to
    a6d9fc9      
    Compare
  
    a6d9fc9    to
    344e0ee      
    Compare
  
    | assert_eq!(rm("/etc/passwd").await, Err(ErrorCode::NotPermitted)); | ||
| assert_eq!(rm("/etc/passwd").await, Err(ErrorCode::NotPermitted)); | ||
| assert_eq!(rm("z.txt").await, Err(ErrorCode::NoEntry)); | ||
| assert_eq!(rm("parent/z.txt").await, Err(ErrorCode::NotPermitted)); | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All of these errors follow POSIX, and I think that if Windows diverges, there should be some adapter code. WDYT @alexcrichton ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In theory that seems reasonable to me yeah. Given how tricky this can be though I wouldn't be confident in saying it's the best solution until there's an implementation. For example a simple "map this code to that code" is totally fine, but if it otherwise requires a lot of other contextual information or flags-on-files or something then that's less reasonable. I'm not sure which bucket this would fall into.
344e0ee    to
    08b09f1      
    Compare
  
    08b09f1    to
    fc772af      
    Compare
  
    | async fn test_unlink_errors(dir: &Descriptor) { | ||
| let rm = |path: &str| dir.unlink_file_at(path.to_string()); | ||
| assert_eq!(rm("").await, Err(ErrorCode::NoEntry)); | ||
| assert_eq!(rm(".").await, Err(ErrorCode::IsDirectory)); | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Windows Wasmtime error:
Test filesystem-unlink-errors failed
[exit_code] 0 == 3
STDOUT:
STDERR:
thread '' (1) panicked at src/bin/filesystem-unlink-errors.rs:25:5:
assertion left == right failed
left: Err(ErrorCode { code: 0, name: "access", message: "Permission denied, similar to EACCES in POSIX." })
right: Err(ErrorCode { code: 13, name: "is-directory", message: "Is a directory, similar to EISDIR in POSIX." })
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
Error: failed to run main module tests\rust\testsuite\wasm32-wasip3\filesystem-unlink-errors.wasm
| async fn test_unlink_errors(dir: &Descriptor) { | ||
| let rm = |path: &str| dir.unlink_file_at(path.to_string()); | ||
| assert_eq!(rm("").await, Err(ErrorCode::NoEntry)); | ||
| assert_eq!(rm(".").await, Err(ErrorCode::IsDirectory)); | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
MacOS error:
Test filesystem-unlink-errors failed
[exit_code] 0 == 134
STDOUT:
STDERR:
thread '' (1) panicked at src/bin/filesystem-unlink-errors.rs:25:5:
assertion left == right failed
left: Err(ErrorCode { code: 30, name: "not-permitted", message: "Operation not permitted, similar to EPERM in POSIX." })
right: Err(ErrorCode { code: 13, name: "is-directory", message: "Is a directory, similar to EISDIR in POSIX." })
note: run with RUST_BACKTRACE=1 environment variable to display a backtrace
Error: failed to run main module tests/rust/testsuite/wasm32-wasip3/filesystem-unlink-errors.wasm
No description provided.