Skip to content

Commit

Permalink
wasi-tests: expect fd_allocate to always fail now.
Browse files Browse the repository at this point in the history
rewrite the file_allocate test to just check for failure.

remove use of fd_allocate from fd_advise test, and remove test
configuration setting used for excluding use of fd_allocate on macos and
windows.
  • Loading branch information
Pat Hickey committed Apr 17, 2023
1 parent 33f7cd5 commit ccf347e
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 37 deletions.
8 changes: 1 addition & 7 deletions crates/test-programs/tests/wasm_tests/runtime/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ pub fn test_suite_environment() -> &'static [(&'static str, &'static str)] {
("ERRNO_MODE_WINDOWS", "1"),
// Windows does not support dangling links or symlinks in the filesystem.
("NO_DANGLING_FILESYSTEM", "1"),
// Windows does not support fd_allocate.
("NO_FD_ALLOCATE", "1"),
// Windows does not support renaming a directory to an empty directory -
// empty directory must be deleted.
("NO_RENAME_DIR_TO_EMPTY_DIR", "1"),
Expand All @@ -25,10 +23,6 @@ pub fn test_suite_environment() -> &'static [(&'static str, &'static str)] {
}
#[cfg(target_os = "macos")]
{
&[
("ERRNO_MODE_MACOS", "1"),
// MacOS does not support fd_allocate
("NO_FD_ALLOCATE", "1"),
]
&[("ERRNO_MODE_MACOS", "1")]
}
}
10 changes: 1 addition & 9 deletions crates/test-programs/wasi-tests/src/bin/fd_advise.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use std::{env, process};
use wasi_tests::{open_scratch_directory, TESTCONFIG};
use wasi_tests::open_scratch_directory;

unsafe fn test_fd_advise(dir_fd: wasi::Fd) {
// Create a file in the scratch directory.
Expand Down Expand Up @@ -40,14 +40,6 @@ unsafe fn test_fd_advise(dir_fd: wasi::Fd) {
let stat = wasi::fd_filestat_get(file_fd).expect("failed to fdstat 3");
assert_eq!(stat.size, 100, "file size should be 100");

if TESTCONFIG.support_fd_allocate() {
// Use fd_allocate to expand size to 200:
wasi::fd_allocate(file_fd, 100, 100).expect("allocating size");

let stat = wasi::fd_filestat_get(file_fd).expect("failed to fdstat 3");
assert_eq!(stat.size, 200, "file size should be 200");
}

wasi::fd_close(file_fd).expect("failed to close");
wasi::path_unlink_file(dir_fd, "file").expect("failed to unlink");
}
Expand Down
26 changes: 11 additions & 15 deletions crates/test-programs/wasi-tests/src/bin/file_allocate.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use std::{env, process};
use wasi_tests::{open_scratch_directory, TESTCONFIG};
use wasi_tests::open_scratch_directory;

unsafe fn test_file_allocate(dir_fd: wasi::Fd) {
// Create a file in the scratch directory.
Expand All @@ -25,22 +25,18 @@ unsafe fn test_file_allocate(dir_fd: wasi::Fd) {
let mut stat = wasi::fd_filestat_get(file_fd).expect("reading file stats");
assert_eq!(stat.size, 0, "file size should be 0");

if TESTCONFIG.support_fd_allocate() {
// Allocate some size
wasi::fd_allocate(file_fd, 0, 100).expect("allocating size");
stat = wasi::fd_filestat_get(file_fd).expect("reading file stats");
assert_eq!(stat.size, 100, "file size should be 100");
let err = wasi::fd_allocate(file_fd, 0, 100)
.err()
.expect("fd_allocate must fail");
assert_eq!(
err,
wasi::ERRNO_NOTSUP,
"fd_allocate should fail with NOTSUP"
);

// Allocate should not modify if less than current size
wasi::fd_allocate(file_fd, 10, 10).expect("allocating size less than current size");
stat = wasi::fd_filestat_get(file_fd).expect("reading file stats");
assert_eq!(stat.size, 100, "file size should remain unchanged at 100");
stat = wasi::fd_filestat_get(file_fd).expect("reading file stats");
assert_eq!(stat.size, 0, "file size should still be 0");

// Allocate should modify if offset+len > current_len
wasi::fd_allocate(file_fd, 90, 20).expect("allocating size larger than current size");
stat = wasi::fd_filestat_get(file_fd).expect("reading file stats");
assert_eq!(stat.size, 110, "file size should increase from 100 to 110");
}
wasi::fd_close(file_fd).expect("closing a file");
wasi::path_unlink_file(dir_fd, "file").expect("removing a file");
}
Expand Down
6 changes: 0 additions & 6 deletions crates/test-programs/wasi-tests/src/config.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
pub struct TestConfig {
errno_mode: ErrnoMode,
no_dangling_filesystem: bool,
no_fd_allocate: bool,
no_rename_dir_to_empty_dir: bool,
no_fdflags_sync_support: bool,
}
Expand All @@ -25,13 +24,11 @@ impl TestConfig {
ErrnoMode::Permissive
};
let no_dangling_filesystem = std::env::var("NO_DANGLING_FILESYSTEM").is_ok();
let no_fd_allocate = std::env::var("NO_FD_ALLOCATE").is_ok();
let no_rename_dir_to_empty_dir = std::env::var("NO_RENAME_DIR_TO_EMPTY_DIR").is_ok();
let no_fdflags_sync_support = std::env::var("NO_FDFLAGS_SYNC_SUPPORT").is_ok();
TestConfig {
errno_mode,
no_dangling_filesystem,
no_fd_allocate,
no_rename_dir_to_empty_dir,
no_fdflags_sync_support,
}
Expand All @@ -57,9 +54,6 @@ impl TestConfig {
pub fn support_dangling_filesystem(&self) -> bool {
!self.no_dangling_filesystem
}
pub fn support_fd_allocate(&self) -> bool {
!self.no_fd_allocate
}
pub fn support_rename_dir_to_empty_dir(&self) -> bool {
!self.no_rename_dir_to_empty_dir
}
Expand Down

0 comments on commit ccf347e

Please sign in to comment.