From ee53374becbbf944571d83a64253c713c532a1d9 Mon Sep 17 00:00:00 2001 From: Guillaume Petiot Date: Mon, 12 Feb 2024 17:35:19 +0000 Subject: [PATCH] Always include include-blocks but not execute when skip is used --- lib/block.ml | 10 ++++++++-- lib/test/mdx_test.ml | 2 ++ test/bin/mdx-test/expect/exec-include/test-case.md | 8 ++++++-- .../expect/parts-begin-end/test-case.md.expected | 9 +++++++++ 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/lib/block.ml b/lib/block.ml index 64df66dd..80e4e7aa 100644 --- a/lib/block.ml +++ b/lib/block.ml @@ -562,7 +562,7 @@ let from_raw raw = ~delim:None let is_active ?section:s t = - let active = + let active_section = match s with | Some p -> ( match t.section with @@ -570,4 +570,10 @@ let is_active ?section:s t = | None -> Re.execp (Re.Perl.compile_pat p) "") | None -> true in - active && t.version_enabled && t.os_type_enabled && not t.skip + let can_update_content = + match t.value with + (* include blocks are always updated even if not executed *) + | Include _ -> true + | _ -> not t.skip + in + active_section && t.version_enabled && t.os_type_enabled && can_update_content diff --git a/lib/test/mdx_test.ml b/lib/test/mdx_test.ml index a756623a..f0c68423 100644 --- a/lib/test/mdx_test.ml +++ b/lib/test/mdx_test.ml @@ -368,6 +368,8 @@ let run_exn ~non_deterministic ~silent_eval ~record_backtrace ~syntax ~silent in let updated_block = match ocaml_value with + (* including without executing *) + | Some _ when t.skip -> new_block | Some ocaml_value -> run_ocaml_value new_block ocaml_value | _ -> new_block in diff --git a/test/bin/mdx-test/expect/exec-include/test-case.md b/test/bin/mdx-test/expect/exec-include/test-case.md index 1a120870..91c9109f 100644 --- a/test/bin/mdx-test/expect/exec-include/test-case.md +++ b/test/bin/mdx-test/expect/exec-include/test-case.md @@ -4,9 +4,10 @@ val f : int -> int ``` -Use `skip` to not include the .mli files: +.mli files are still included when `skip` is used: ```ocaml +val f : int -> int ``` .ml files are included and executed: @@ -24,11 +25,14 @@ Line 1, characters 9-10: Error: Unbound value x ``` -Use `skip` to not include the .ml files: + +.ml files are still included but no longer executed when `skip` is used: ```ocaml +let f x = x + 1 ``` ```ocaml +let k = x = 1 ``` diff --git a/test/bin/mdx-test/expect/parts-begin-end/test-case.md.expected b/test/bin/mdx-test/expect/parts-begin-end/test-case.md.expected index 92cb4426..94249cb9 100644 --- a/test/bin/mdx-test/expect/parts-begin-end/test-case.md.expected +++ b/test/bin/mdx-test/expect/parts-begin-end/test-case.md.expected @@ -112,4 +112,13 @@ let () = ``` ```ocaml skip,file=parts-begin-end.ml,part=toto +let x = 34 +let f = 42.3 +let s = "toto" +let fn x u = u x + +let () = + print_int x; + print_float f +;; ```