Skip to content
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

Added skip #778

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions HACKING.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,4 +135,15 @@ Try to avoid making unnecessary changes; this makes review harder and clutters u
`ocamlformat` may be useful to get badly messed up code to a baseline unformatted state,
from which human formatting can be added where needed.

## AI-generated Code

Contributing to Eio should not be done _solely_ using "AI tools" such as ChatGPT. This is for a few reasons:

1. **It obfuscates how you think**. Purely AI-generated code tells us little about how you think and the problems you might be having. This makes it harder to provide good feedback on PRs and issues.
2. **It is often more work to review**. Particularly for the OCaml ecosystem and libraries like Eio, it seems that these tools are not very good and generate a lot of believable code that is in actual fact completely wrong. PR comments and the code submitted with them can say completely different things.
3. **It is a grey area for licensing**. Models like ChatGPT have been trained on lots of code with different licenses and has been known to simply copy code as an answer to a prompt. We would like to avoid this headache as best we can.

Use AI tools, if you wish, to help you understand OCaml and Eio. Do not offload all of the work of a PR or a comment to these tools.

[dscheck]: https://github.com/ocaml-multicore/dscheck

6 changes: 4 additions & 2 deletions lib_eio/core/fiber.ml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@ let fork_daemon ~sw f =
(* The daemon was cancelled because all non-daemon fibers are finished. *)
()
| exception ex ->
Switch.fail sw ex; (* The [with_daemon] ensures this will succeed *)
let bt = Printexc.get_raw_backtrace () in
Switch.fail ~bt sw ex; (* The [with_daemon] ensures this will succeed *)
) (* else the fiber should report the error to [sw], but [sw] is failed anyway *)

let fork_promise ~sw f =
Expand All @@ -65,7 +66,8 @@ let fork_promise_exn ~sw f =
match Switch.with_op sw f with
| x -> Promise.resolve r x
| exception ex ->
Switch.fail sw ex (* The [with_op] ensures this will succeed *)
let bt = Printexc.get_raw_backtrace () in
Switch.fail ~bt sw ex (* The [with_op] ensures this will succeed *)
);
p

Expand Down
1 change: 1 addition & 0 deletions lib_eio/unix/dune
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
(library
(name eio_unix)
(public_name eio.unix)
(public_headers include/fork_action.h)
(foreign_stubs
(language c)
(include_dirs include)
Expand Down
20 changes: 17 additions & 3 deletions lib_eio_linux/tests/test.ml
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
exception Skip_test of string
let skip _stdenv =
raise (Skip_test "io_uring not available in Docker")

open Eio.Std

let skip_io_uring msg =
Eio.traceln "Skipping test: %s" msg;
Alcotest.skip ()

let handle_fallback = function
| `Msg msg ->
Eio.traceln "Fallback triggered with message: %s" msg;
skip_io_uring msg


module Trace = Eio.Private.Trace

let () =
Expand Down Expand Up @@ -32,7 +46,7 @@ let test_poll_add () =
assert (sent = 1);
let result = Promise.await_exn thread in
Alcotest.(check string) "Received data" "!" result

)
let test_poll_add_busy () =
Eio_linux.run ~queue_depth:2 @@ fun _stdenv ->
Switch.run @@ fun sw ->
Expand All @@ -50,7 +64,7 @@ let test_poll_add_busy () =
Alcotest.(check string) "Received data" "!" a;
let b = Promise.await_exn b in
Alcotest.(check string) "Received data" "!" b

)
(* Write a string to a pipe and read it out again. *)
let test_copy () =
Eio_linux.run ~queue_depth:3 @@ fun _stdenv ->
Expand Down Expand Up @@ -259,4 +273,4 @@ let () =
test_case "signal_race" `Quick test_signal_race;
test_case "alloc-fixed-or-wait" `Quick test_alloc_fixed_or_wait;
];
]
]
4 changes: 4 additions & 0 deletions lib_eio_windows/test/test_fs.ml
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,9 @@ let test_symlink env () =
Unix.mkdir "another" 0o700;
print_endline @@ Unix.realpath "to-subdir" |}
*)
if not (Unix.has_symlink ()) then
Printf.printf "Skipping test_symlink on systems that don't support symlinks.\n"
else
let cwd = Eio.Stdenv.cwd env in
try_mkdir (cwd / "sandbox");
Unix.symlink ~to_dir:true ".." "sandbox\\to-root";
Expand Down Expand Up @@ -277,4 +280,5 @@ let tests env = [
"unlink", `Quick, test_unlink env;
"failing-unlink", `Quick, try_failing_unlink env;
"rmdir", `Quick, test_remove_dir env;
"mkdirs", `Quick, test_mkdirs env;
]
Loading