From 5353af79ad4918c3da94ebe4890c3e20898ed3ba Mon Sep 17 00:00:00 2001 From: Mark McCaskey Date: Tue, 22 Oct 2019 17:29:19 -0700 Subject: [PATCH] Improve fd_close wasi test: explicitly close file --- lib/wasi-tests/wasitests/fd_close.out | 1 + lib/wasi-tests/wasitests/fd_close.rs | 9 +++++++++ lib/wasi-tests/wasitests/fd_close.wasm | Bin 82928 -> 83077 bytes 3 files changed, 10 insertions(+) diff --git a/lib/wasi-tests/wasitests/fd_close.out b/lib/wasi-tests/wasitests/fd_close.out index c42fc06c293..53c9c272713 100644 --- a/lib/wasi-tests/wasitests/fd_close.out +++ b/lib/wasi-tests/wasitests/fd_close.out @@ -1,2 +1,3 @@ +Successfully closed file! Successfully closed stderr! Successfully closed stdin! diff --git a/lib/wasi-tests/wasitests/fd_close.rs b/lib/wasi-tests/wasitests/fd_close.rs index 3d2104be667..e5cdaafd97b 100644 --- a/lib/wasi-tests/wasitests/fd_close.rs +++ b/lib/wasi-tests/wasitests/fd_close.rs @@ -23,10 +23,18 @@ fn main() { #[cfg(target_os = "wasi")] { + let file_fd = file.as_raw_fd(); let stdout_fd = std::io::stdout().as_raw_fd(); let stderr_fd = std::io::stderr().as_raw_fd(); let stdin_fd = std::io::stdin().as_raw_fd(); + let result = unsafe { fd_close(file_fd) }; + if result == 0 { + println!("Successfully closed file!") + } else { + println!("Could not close file"); + } + let result = unsafe { fd_close(stderr_fd) }; if result == 0 { println!("Successfully closed stderr!") @@ -48,6 +56,7 @@ fn main() { } #[cfg(not(target_os = "wasi"))] { + println!("Successfully closed file!"); println!("Successfully closed stderr!"); println!("Successfully closed stdin!"); } diff --git a/lib/wasi-tests/wasitests/fd_close.wasm b/lib/wasi-tests/wasitests/fd_close.wasm index a40a1bfda1eda6d84e0eedb1399d17925b4cca86..5ace5206203c7385f622705c2503474978339113 100755 GIT binary patch delta 13792 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 delta 13827 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 z z{1DuDbb|1Pro`V5oy5$#`<)l0W1PaL>q^CUTe0J@sjvepjy*`f@yFkz-@4<|==aax zK25*Bew#(VSDiT0vw@MQf74{A6#HMnG55R0-uf#z`QJ%A^4$&eg=YFcCJn0ps*>KV z^JiXkw+N%70ol!TPenb=mM5S*xzm@ITvni^ZUF21x00nO@V@@XAWzM!^vnw^$aAjy z{^`7O3sCC}t)X6Jg2*V=s_OfH2dQmc9{SEG&ot!!6=zVJ;3l-bm+(yQph zIC`z6Q5IlAJyU;u7q>46{o5LTctxmN(RL~me!}*r9gxxmUJHZ zJ9KZ8WP^nlC(!r0KV00_`G))@%^=V4uStROfc(FbqFSR0hW{OSuf@C(cCo_f1`)Fnpe zF!%F8bnSMumRFJkiz+BJ+-dX~Xs8yapOjePCe}F< z%Q)_aVfCJ%H1`B!s0W^@SFf2vPyeHVSmPZpq(!ZsLF?)cWz{0%f*0DrFNPKg*NOwR z#>hxW6Z>n8$0I>^7PF(MD~vsna2vUnemFn-f+?`t*dGOdZnO*Z zFk)0lG6C2BU$z1>Fx-d7*c6?sQSODtPb#c6jzojYrl4X>Y5@rm_f44+p=?)FCC(Vy z0ur6~Kj4c{4k|`=3urAaD8}Fx;D=;mVhc!xTw_rS7#BVrR3%GMluEiLODTG2|9|}cxva_6iU0)H=BZM`#75q73fy1OFQKwr$qNs5g zo;c_Rp6dQ_umjpwku3hxGA2H#(ZnZC(K17@15Q^wKqBNbv{yOER%>Efifx=$+f1IRWOXz)n*^e9!ij;LQT+&;(>hoX$G zJ{U+k&h(MS4;Zicpm+5p9~=sUyNoY0pnt?yajFtc6no>0>`dtA=ozmn!cf~oobhBP zxL}xJWJ0fK2J>GzwLGD6L@eAo_#M(-gGVTAE6wSHGF~8}O^I?EoVoI=8hca3pcfAcS0Fc}K|6 z3kj@IH=X_^(7#ZhQM5+=cJ$nMoMVVXp|HATCm8FA&PY?0fz