From 97a43ca114e33ef03ba001ba3898642e2c334105 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Drvo=C5=A1t=C4=9Bp?= Date: Thu, 18 Sep 2025 00:19:43 +0200 Subject: [PATCH 1/6] Try to filter test items without constructing the AST --- Project.toml | 4 +++ src/ReTestItems.jl | 3 +- src/include_test_file.jl | 74 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 src/include_test_file.jl diff --git a/Project.toml b/Project.toml index e809287..3c979d3 100644 --- a/Project.toml +++ b/Project.toml @@ -4,21 +4,25 @@ version = "1.34.0" [deps] Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" +JuliaSyntax = "70703baa-626e-46a2-a12c-08ffd08c73b4" Logging = "56ddb016-857b-54e1-b83d-db4d58db5568" Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" Serialization = "9e88b42a-f829-5b0c-bbe9-9e923198166b" Sockets = "6462fe0b-24de-5631-8697-dd941f90decc" +StringViews = "354b36f9-a18e-4713-926e-db85100087ba" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" TestEnv = "1e6cf692-eddd-4d53-88a5-2d735e33781b" [compat] Dates = "1" +JuliaSyntax = "1" Logging = "1" Pkg = "1" Profile = "1" Random = "1" Serialization = "1" Sockets = "1" +StringViews = "1" Test = "1" TestEnv = "1.8" julia = "1.8" diff --git a/src/ReTestItems.jl b/src/ReTestItems.jl index ecb0554..812759d 100644 --- a/src/ReTestItems.jl +++ b/src/ReTestItems.jl @@ -102,6 +102,7 @@ include("junit_xml.jl") include("testcontext.jl") include("log_capture.jl") include("filtering.jl") +include("include_test_file.jl") function __init__() if ccall(:jl_generating_output, Cint, ()) == 0 # not precompiling @@ -874,7 +875,7 @@ function include_task(walkdir_channel, setup_channel, project_root, ti_filter) for (file_path, file_node) in walkdir_channel @debugv 1 "Including test items from file `$(file_path)`" task_local_storage(:__RE_TEST_ITEMS__, (file_node, empty!(testitem_names))) do - Base.include(ti_filter, Main, file_path) + include_test_file(ti_filter, file_path) end end end diff --git a/src/include_test_file.jl b/src/include_test_file.jl new file mode 100644 index 0000000..9c39fae --- /dev/null +++ b/src/include_test_file.jl @@ -0,0 +1,74 @@ +using JuliaSyntax: ParseStream, @K_str, build_tree, bump_trivia, kind, parse!, peek_full_token, peek_token +using StringViews + +function include_test_file(ti_filter, path::String) + bytes = read(path) + stream = ParseStream(bytes) + tls = task_local_storage() + tls[:SOURCE_PATH] = path # This is also done by Base.include + try + while true + bump_trivia(stream, skip_newlines=true) + t = peek_token(stream, 1) + k = kind(t) + k == K"EndMarker" && break + if k == K"@" + tf = peek_full_token(stream, 2) + v = @inbounds @view(bytes[tf.first_byte:tf.last_byte]) + if v == b"testitem" ; _eval_from_stream(stream, path, ti_filter, bytes) + elseif v == b"testsetup"; _eval_from_stream(stream, path) + elseif v == b"test_rel" ; _eval_from_stream(stream, path, ti_filter) + else + error("Test files must only include `@testitem` and `@testsetup` calls, got an `@$(StringView(v))` at $(path)") # TODO + end + else + error("Test files must only include `@testitem` and `@testsetup` calls, got a $t at $(path)") # TODO + end + empty!(stream) + end + finally + delete!(tls, :SOURCE_PATH) + end +end + +_contains(s::AbstractString, pattern::Regex) = occursin(pattern, s) +_contains(s::AbstractString, pattern::AbstractString) = s == pattern + +# unconditionally eval +function _eval_from_stream(stream, path) + parse!(stream; rule=:statement) + ast = build_tree(Expr, stream; filename=path) + Core.eval(Main, ast) + return nothing +end + +# test_rel -> apply ti_filter on the parsed ast +function _eval_from_stream(stream, path, ti_filter) + parse!(stream; rule=:statement) + ast = build_tree(Expr, stream; filename=path) + filtered = ti_filter(ast) + filtered === nothing || Core.eval(Main, filtered) + return nothing +end + +# like above, but tries to avoid parsing the ast if it sees from the name identifier token +# it won't pass the filter +function _eval_from_stream(stream, path, ti_filter, bytes) + if ti_filter.name isa Nothing + parse!(stream; rule=:statement) + ast = build_tree(Expr, stream; filename=path) + filtered = ti_filter(ast) + filtered === nothing || Core.eval(Main, filtered) + return nothing + end + + name_t = peek_full_token(stream, 4) # 3 was '\"' + name = @inbounds StringView(@view(bytes[name_t.first_byte:name_t.last_byte])) + parse!(stream; rule=:statement) + if _contains(name, ti_filter.name) + ast = build_tree(Expr, stream; filename=path) + filtered = ti_filter(ast) + filtered === nothing || Core.eval(Main, filtered) + end + return nothing +end From 60fea81f6a6b591a22252b0831e1c819caeeab42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Drvo=C5=A1t=C4=9Bp?= Date: Thu, 18 Sep 2025 09:21:19 +0200 Subject: [PATCH 2/6] . --- Project.toml | 2 +- src/ReTestItems.jl | 2 +- src/include_test_file.jl | 18 +++++++++--------- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Project.toml b/Project.toml index 3c979d3..451e3ab 100644 --- a/Project.toml +++ b/Project.toml @@ -15,7 +15,7 @@ TestEnv = "1e6cf692-eddd-4d53-88a5-2d735e33781b" [compat] Dates = "1" -JuliaSyntax = "1" +JuliaSyntax = "0.4, 1" Logging = "1" Pkg = "1" Profile = "1" diff --git a/src/ReTestItems.jl b/src/ReTestItems.jl index 812759d..638ed64 100644 --- a/src/ReTestItems.jl +++ b/src/ReTestItems.jl @@ -866,7 +866,7 @@ end # Parses and evals files found by the `walkdir_task`. During macro expansion of `@testitem` # test items are push!d onto the FileNode stored in task local storage as `:__RE_TEST_ITEMS__`. -function include_task(walkdir_channel, setup_channel, project_root, ti_filter) +function include_task(walkdir_channel, setup_channel, project_root, ti_filter::TestItemFilter) try testitem_names = Set{String}() # to enforce that names in the same file are unique task_local_storage(:__RE_TEST_RUNNING__, true) do diff --git a/src/include_test_file.jl b/src/include_test_file.jl index 9c39fae..308f38d 100644 --- a/src/include_test_file.jl +++ b/src/include_test_file.jl @@ -1,7 +1,7 @@ using JuliaSyntax: ParseStream, @K_str, build_tree, bump_trivia, kind, parse!, peek_full_token, peek_token using StringViews -function include_test_file(ti_filter, path::String) +function include_test_file(ti_filter::TestItemFilter, path::String) bytes = read(path) stream = ParseStream(bytes) tls = task_local_storage() @@ -43,22 +43,22 @@ function _eval_from_stream(stream, path) end # test_rel -> apply ti_filter on the parsed ast -function _eval_from_stream(stream, path, ti_filter) +function _eval_from_stream(stream, path, ti_filter::TestItemFilter) parse!(stream; rule=:statement) ast = build_tree(Expr, stream; filename=path) - filtered = ti_filter(ast) - filtered === nothing || Core.eval(Main, filtered) + filtered = ti_filter(ast)::Union{Nothing, Expr} + filtered === nothing || Core.eval(Main, filtered::Expr) return nothing end # like above, but tries to avoid parsing the ast if it sees from the name identifier token # it won't pass the filter -function _eval_from_stream(stream, path, ti_filter, bytes) +function _eval_from_stream(stream, path, ti_filter::TestItemFilter, bytes) if ti_filter.name isa Nothing parse!(stream; rule=:statement) ast = build_tree(Expr, stream; filename=path) - filtered = ti_filter(ast) - filtered === nothing || Core.eval(Main, filtered) + filtered = ti_filter(ast)::Union{Nothing, Expr} + filtered === nothing || Core.eval(Main, filtered::Expr) return nothing end @@ -67,8 +67,8 @@ function _eval_from_stream(stream, path, ti_filter, bytes) parse!(stream; rule=:statement) if _contains(name, ti_filter.name) ast = build_tree(Expr, stream; filename=path) - filtered = ti_filter(ast) - filtered === nothing || Core.eval(Main, filtered) + filtered = ti_filter(ast)::Union{Nothing, Expr} + filtered === nothing || Core.eval(Main, filtered::Expr) end return nothing end From d124aa877015c804a6baf7195a4a49c57ed9de1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Drvo=C5=A1t=C4=9Bp?= Date: Thu, 18 Sep 2025 12:42:00 +0200 Subject: [PATCH 3/6] . --- src/filtering.jl | 20 ++++--- src/include_test_file.jl | 11 ++-- test/integrationtests.jl | 6 +- test/packages/DontPass.jl/Manifest.toml | 59 +++++++++++-------- test/packages/MonoRepo.jl/Manifest.toml | 59 +++++++++++-------- test/packages/NoDeps.jl/Manifest.toml | 59 +++++++++++-------- test/packages/TestEndExpr.jl/Manifest.toml | 49 ++++++++------- .../packages/TestProjectFile.jl/Manifest.toml | 2 +- test/packages/TestsInSrc.jl/Manifest.toml | 59 +++++++++++-------- 9 files changed, 188 insertions(+), 136 deletions(-) diff --git a/src/filtering.jl b/src/filtering.jl index e1ede43..0202e0b 100644 --- a/src/filtering.jl +++ b/src/filtering.jl @@ -52,14 +52,7 @@ function filter_testitem(f, expr) @assert expr.head == :macrocall macro_name = expr.args[1] if macro_name === Symbol("@testitem") - # `@testitem` have have at least: macro_name, line_number, name, body - length(expr.args) < 4 && return expr - name = try_get_name(expr) - name === nothing && return expr - tags = try_get_tags(expr) - tags === nothing && return expr - ti = TestItemMetadata(name, tags) - return f(ti) ? expr : nothing + return __filter_ti(f, expr) elseif macro_name === Symbol("@testsetup") return expr elseif macro_name === ___RAI_MACRO_NAME_DONT_USE # TODO: drop this branch when we can @@ -98,6 +91,17 @@ function try_get_tags(expr::Expr) return tags end +function __filter_ti(f, expr) + # `@testitem` have have at least: macro_name, line_number, name, body + length(expr.args) < 4 && return expr + name = try_get_name(expr) + name === nothing && return expr + tags = try_get_tags(expr) + tags === nothing && return expr + ti = TestItemMetadata(name, tags) + return f(ti) ? expr : nothing +end + # Macro used by RAI (corporate sponsor of this package) # TODO: drop support for this when RAI codebase is fully switched to ReTestItems.jl const ___RAI_MACRO_NAME_DONT_USE = Symbol("@test_rel") diff --git a/src/include_test_file.jl b/src/include_test_file.jl index 308f38d..2657819 100644 --- a/src/include_test_file.jl +++ b/src/include_test_file.jl @@ -24,7 +24,7 @@ function include_test_file(ti_filter::TestItemFilter, path::String) else error("Test files must only include `@testitem` and `@testsetup` calls, got a $t at $(path)") # TODO end - empty!(stream) + empty!(stream) # TODO: SourceFile created on a reset stream always start line number at 1 end finally delete!(tls, :SOURCE_PATH) @@ -46,7 +46,8 @@ end function _eval_from_stream(stream, path, ti_filter::TestItemFilter) parse!(stream; rule=:statement) ast = build_tree(Expr, stream; filename=path) - filtered = ti_filter(ast)::Union{Nothing, Expr} + any_error(stream) && throw(ParseError(stream, filename=path)) + filtered = __filter_rai(ti_filter, ast)::Union{Nothing, Expr} filtered === nothing || Core.eval(Main, filtered::Expr) return nothing end @@ -57,7 +58,8 @@ function _eval_from_stream(stream, path, ti_filter::TestItemFilter, bytes) if ti_filter.name isa Nothing parse!(stream; rule=:statement) ast = build_tree(Expr, stream; filename=path) - filtered = ti_filter(ast)::Union{Nothing, Expr} + any_error(stream) && throw(ParseError(stream, filename=path)) + filtered = __filter_ti(ti_filter, ast)::Union{Nothing, Expr} filtered === nothing || Core.eval(Main, filtered::Expr) return nothing end @@ -67,7 +69,8 @@ function _eval_from_stream(stream, path, ti_filter::TestItemFilter, bytes) parse!(stream; rule=:statement) if _contains(name, ti_filter.name) ast = build_tree(Expr, stream; filename=path) - filtered = ti_filter(ast)::Union{Nothing, Expr} + any_error(stream) && throw(ParseError(stream, filename=path)) + filtered = __filter_ti(ti_filter, ast)::Union{Nothing, Expr} filtered === nothing || Core.eval(Main, filtered::Expr) end return nothing diff --git a/test/integrationtests.jl b/test/integrationtests.jl index 201e6ef..3fa5379 100644 --- a/test/integrationtests.jl +++ b/test/integrationtests.jl @@ -816,7 +816,7 @@ end end @testset "error on code outside `@testitem`/`@testsetup`" begin - err_msg = "Test files must only include `@testitem` and `@testsetup` calls." + err_msg = "Test files must only include `@testitem` and `@testsetup` calls" filter_func(ti) = false @test_throws err_msg runtests(joinpath(TEST_FILES_DIR, "_misuse_file1_test.jl")) @test_throws err_msg runtests(joinpath(TEST_FILES_DIR, "_misuse_file2_test.jl")) @@ -868,9 +868,9 @@ end file = joinpath(TEST_FILES_DIR, "_duplicate_names_test.jl") relfpath = relpath(file, pkgdir(ReTestItems)) expected_msg = if Base.Sys.iswindows() - Regex("Duplicate test item name `dup` in file") + "Duplicate test item name `dup` in file" else - Regex("Duplicate test item name `dup` in file `$(relfpath)` at line 4") + "Duplicate test item name `dup` in file `$(relfpath)` at line 4" end @test_throws expected_msg runtests(file; nworkers=0) @test_throws expected_msg runtests(file; nworkers=1) diff --git a/test/packages/DontPass.jl/Manifest.toml b/test/packages/DontPass.jl/Manifest.toml index e3c55e6..fefe167 100644 --- a/test/packages/DontPass.jl/Manifest.toml +++ b/test/packages/DontPass.jl/Manifest.toml @@ -1,6 +1,6 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.8.2" +julia_version = "1.10.10" manifest_format = "2.0" project_hash = "31dabfddf1e36ecf2dc5cff56cdddc361b29f16f" @@ -30,24 +30,34 @@ uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +[[deps.JuliaSyntax]] +git-tree-sha1 = "0d4b3dab95018bcf3925204475693d9f09dc45b8" +uuid = "70703baa-626e-46a2-a12c-08ffd08c73b4" +version = "1.0.2" + [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" +version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" +version = "8.4.0+0" [[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +[[deps.LibGit2_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.6.4+0" + [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" +version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" @@ -55,12 +65,6 @@ uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "cedb76b37bc5a6c702ade66be44f831fa23c681e" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.0" - [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" @@ -68,20 +72,20 @@ uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.0+0" +version = "2.28.2+1" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.2.1" +version = "2023.1.10" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" version = "1.2.0" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.8.0" +version = "1.10.0" [[deps.Printf]] deps = ["Unicode"] @@ -92,14 +96,14 @@ deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.Random]] -deps = ["SHA", "Serialization"] +deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.ReTestItems]] -deps = ["Dates", "Logging", "LoggingExtras", "Pkg", "Serialization", "Sockets", "Test", "TestEnv"] +deps = ["Dates", "JuliaSyntax", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] path = "../../.." uuid = "817f1d60-ba6b-4fd5-9520-3cf149f6a823" -version = "0.1.0" +version = "1.34.0" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" @@ -111,15 +115,20 @@ uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +[[deps.StringViews]] +git-tree-sha1 = "d3c7a06c80622b8404b1105886c732abcb25cc2b" +uuid = "354b36f9-a18e-4713-926e-db85100087ba" +version = "1.3.5" + [[deps.TOML]] deps = ["Dates"] uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.0" +version = "1.0.3" [[deps.Tar]] deps = ["ArgTools", "SHA"] uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.1" +version = "1.10.0" [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] @@ -127,9 +136,9 @@ uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.TestEnv]] deps = ["Pkg"] -git-tree-sha1 = "b5a483bcc8c9f0df569101df166601e5e699f346" +git-tree-sha1 = "aec63ef091b11d67040b8b35d2dcdfdc4567c4d0" uuid = "1e6cf692-eddd-4d53-88a5-2d735e33781b" -version = "1.9.3" +version = "1.102.2" [[deps.UUIDs]] deps = ["Random", "SHA"] @@ -141,14 +150,14 @@ uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.12+3" +version = "1.2.13+1" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" +version = "1.52.0+1" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" +version = "17.4.0+2" diff --git a/test/packages/MonoRepo.jl/Manifest.toml b/test/packages/MonoRepo.jl/Manifest.toml index c8cc1e5..e1eb4f9 100644 --- a/test/packages/MonoRepo.jl/Manifest.toml +++ b/test/packages/MonoRepo.jl/Manifest.toml @@ -1,6 +1,6 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.8.2" +julia_version = "1.10.10" manifest_format = "2.0" project_hash = "94b07ce18ac1025b2606fb89a0790c8a17a20e02" @@ -47,24 +47,34 @@ uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +[[deps.JuliaSyntax]] +git-tree-sha1 = "0d4b3dab95018bcf3925204475693d9f09dc45b8" +uuid = "70703baa-626e-46a2-a12c-08ffd08c73b4" +version = "1.0.2" + [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" +version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" +version = "8.4.0+0" [[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +[[deps.LibGit2_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.6.4+0" + [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" +version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" @@ -72,12 +82,6 @@ uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "cedb76b37bc5a6c702ade66be44f831fa23c681e" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.0" - [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" @@ -85,20 +89,20 @@ uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.0+0" +version = "2.28.2+1" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.2.1" +version = "2023.1.10" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" version = "1.2.0" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.8.0" +version = "1.10.0" [[deps.Printf]] deps = ["Unicode"] @@ -109,14 +113,14 @@ deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.Random]] -deps = ["SHA", "Serialization"] +deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.ReTestItems]] -deps = ["Dates", "Logging", "LoggingExtras", "Pkg", "Serialization", "Sockets", "Test", "TestEnv"] +deps = ["Dates", "JuliaSyntax", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] path = "../../.." uuid = "817f1d60-ba6b-4fd5-9520-3cf149f6a823" -version = "0.1.0" +version = "1.34.0" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" @@ -128,15 +132,20 @@ uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +[[deps.StringViews]] +git-tree-sha1 = "d3c7a06c80622b8404b1105886c732abcb25cc2b" +uuid = "354b36f9-a18e-4713-926e-db85100087ba" +version = "1.3.5" + [[deps.TOML]] deps = ["Dates"] uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.0" +version = "1.0.3" [[deps.Tar]] deps = ["ArgTools", "SHA"] uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.1" +version = "1.10.0" [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] @@ -144,9 +153,9 @@ uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.TestEnv]] deps = ["Pkg"] -git-tree-sha1 = "b5a483bcc8c9f0df569101df166601e5e699f346" +git-tree-sha1 = "aec63ef091b11d67040b8b35d2dcdfdc4567c4d0" uuid = "1e6cf692-eddd-4d53-88a5-2d735e33781b" -version = "1.9.3" +version = "1.102.2" [[deps.UUIDs]] deps = ["Random", "SHA"] @@ -158,14 +167,14 @@ uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.12+3" +version = "1.2.13+1" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" +version = "1.52.0+1" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" +version = "17.4.0+2" diff --git a/test/packages/NoDeps.jl/Manifest.toml b/test/packages/NoDeps.jl/Manifest.toml index e3c55e6..fefe167 100644 --- a/test/packages/NoDeps.jl/Manifest.toml +++ b/test/packages/NoDeps.jl/Manifest.toml @@ -1,6 +1,6 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.8.2" +julia_version = "1.10.10" manifest_format = "2.0" project_hash = "31dabfddf1e36ecf2dc5cff56cdddc361b29f16f" @@ -30,24 +30,34 @@ uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +[[deps.JuliaSyntax]] +git-tree-sha1 = "0d4b3dab95018bcf3925204475693d9f09dc45b8" +uuid = "70703baa-626e-46a2-a12c-08ffd08c73b4" +version = "1.0.2" + [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" +version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" +version = "8.4.0+0" [[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +[[deps.LibGit2_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.6.4+0" + [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" +version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" @@ -55,12 +65,6 @@ uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "cedb76b37bc5a6c702ade66be44f831fa23c681e" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.0" - [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" @@ -68,20 +72,20 @@ uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.0+0" +version = "2.28.2+1" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.2.1" +version = "2023.1.10" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" version = "1.2.0" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.8.0" +version = "1.10.0" [[deps.Printf]] deps = ["Unicode"] @@ -92,14 +96,14 @@ deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.Random]] -deps = ["SHA", "Serialization"] +deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.ReTestItems]] -deps = ["Dates", "Logging", "LoggingExtras", "Pkg", "Serialization", "Sockets", "Test", "TestEnv"] +deps = ["Dates", "JuliaSyntax", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] path = "../../.." uuid = "817f1d60-ba6b-4fd5-9520-3cf149f6a823" -version = "0.1.0" +version = "1.34.0" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" @@ -111,15 +115,20 @@ uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +[[deps.StringViews]] +git-tree-sha1 = "d3c7a06c80622b8404b1105886c732abcb25cc2b" +uuid = "354b36f9-a18e-4713-926e-db85100087ba" +version = "1.3.5" + [[deps.TOML]] deps = ["Dates"] uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.0" +version = "1.0.3" [[deps.Tar]] deps = ["ArgTools", "SHA"] uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.1" +version = "1.10.0" [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] @@ -127,9 +136,9 @@ uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.TestEnv]] deps = ["Pkg"] -git-tree-sha1 = "b5a483bcc8c9f0df569101df166601e5e699f346" +git-tree-sha1 = "aec63ef091b11d67040b8b35d2dcdfdc4567c4d0" uuid = "1e6cf692-eddd-4d53-88a5-2d735e33781b" -version = "1.9.3" +version = "1.102.2" [[deps.UUIDs]] deps = ["Random", "SHA"] @@ -141,14 +150,14 @@ uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.12+3" +version = "1.2.13+1" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" +version = "1.52.0+1" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" +version = "17.4.0+2" diff --git a/test/packages/TestEndExpr.jl/Manifest.toml b/test/packages/TestEndExpr.jl/Manifest.toml index 499c1c7..fcced16 100644 --- a/test/packages/TestEndExpr.jl/Manifest.toml +++ b/test/packages/TestEndExpr.jl/Manifest.toml @@ -1,6 +1,6 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.9.2" +julia_version = "1.10.10" manifest_format = "2.0" project_hash = "31dabfddf1e36ecf2dc5cff56cdddc361b29f16f" @@ -30,24 +30,34 @@ uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +[[deps.JuliaSyntax]] +git-tree-sha1 = "0d4b3dab95018bcf3925204475693d9f09dc45b8" +uuid = "70703baa-626e-46a2-a12c-08ffd08c73b4" +version = "1.0.2" + [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" +version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" +version = "8.4.0+0" [[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +[[deps.LibGit2_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.6.4+0" + [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" +version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" @@ -55,12 +65,6 @@ uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "a03c77519ab45eb9a34d3cfe2ca223d79c064323" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.1" - [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" @@ -68,11 +72,11 @@ uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.2+0" +version = "2.28.2+1" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.10.11" +version = "2023.1.10" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" @@ -81,7 +85,7 @@ version = "1.2.0" [[deps.Pkg]] deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.9.2" +version = "1.10.0" [[deps.Printf]] deps = ["Unicode"] @@ -92,14 +96,14 @@ deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.Random]] -deps = ["SHA", "Serialization"] +deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.ReTestItems]] -deps = ["Dates", "Logging", "LoggingExtras", "Pkg", "Serialization", "Sockets", "Test", "TestEnv"] +deps = ["Dates", "JuliaSyntax", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] path = "../../.." uuid = "817f1d60-ba6b-4fd5-9520-3cf149f6a823" -version = "1.16.0" +version = "1.34.0" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" @@ -111,6 +115,11 @@ uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +[[deps.StringViews]] +git-tree-sha1 = "d3c7a06c80622b8404b1105886c732abcb25cc2b" +uuid = "354b36f9-a18e-4713-926e-db85100087ba" +version = "1.3.5" + [[deps.TOML]] deps = ["Dates"] uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" @@ -141,14 +150,14 @@ uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.13+0" +version = "1.2.13+1" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" +version = "1.52.0+1" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" +version = "17.4.0+2" diff --git a/test/packages/TestProjectFile.jl/Manifest.toml b/test/packages/TestProjectFile.jl/Manifest.toml index 81f2191..49a2161 100644 --- a/test/packages/TestProjectFile.jl/Manifest.toml +++ b/test/packages/TestProjectFile.jl/Manifest.toml @@ -1,6 +1,6 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.8.4" +julia_version = "1.10.10" manifest_format = "2.0" project_hash = "2ca1c6c58cb30e79e021fb54e5626c96d05d5fdc" diff --git a/test/packages/TestsInSrc.jl/Manifest.toml b/test/packages/TestsInSrc.jl/Manifest.toml index e3c55e6..fefe167 100644 --- a/test/packages/TestsInSrc.jl/Manifest.toml +++ b/test/packages/TestsInSrc.jl/Manifest.toml @@ -1,6 +1,6 @@ # This file is machine-generated - editing it directly is not advised -julia_version = "1.8.2" +julia_version = "1.10.10" manifest_format = "2.0" project_hash = "31dabfddf1e36ecf2dc5cff56cdddc361b29f16f" @@ -30,24 +30,34 @@ uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" +[[deps.JuliaSyntax]] +git-tree-sha1 = "0d4b3dab95018bcf3925204475693d9f09dc45b8" +uuid = "70703baa-626e-46a2-a12c-08ffd08c73b4" +version = "1.0.2" + [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" +version = "0.6.4" [[deps.LibCURL_jll]] deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" +version = "8.4.0+0" [[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] +deps = ["Base64", "LibGit2_jll", "NetworkOptions", "Printf", "SHA"] uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" +[[deps.LibGit2_jll]] +deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll"] +uuid = "e37daf67-58a4-590a-8e99-b0245dd2ffc5" +version = "1.6.4+0" + [[deps.LibSSH2_jll]] deps = ["Artifacts", "Libdl", "MbedTLS_jll"] uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" +version = "1.11.0+1" [[deps.Libdl]] uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" @@ -55,12 +65,6 @@ uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" [[deps.Logging]] uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "cedb76b37bc5a6c702ade66be44f831fa23c681e" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "1.0.0" - [[deps.Markdown]] deps = ["Base64"] uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" @@ -68,20 +72,20 @@ uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" [[deps.MbedTLS_jll]] deps = ["Artifacts", "Libdl"] uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.0+0" +version = "2.28.2+1" [[deps.MozillaCACerts_jll]] uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.2.1" +version = "2023.1.10" [[deps.NetworkOptions]] uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" version = "1.2.0" [[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] +deps = ["Artifacts", "Dates", "Downloads", "FileWatching", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.8.0" +version = "1.10.0" [[deps.Printf]] deps = ["Unicode"] @@ -92,14 +96,14 @@ deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" [[deps.Random]] -deps = ["SHA", "Serialization"] +deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.ReTestItems]] -deps = ["Dates", "Logging", "LoggingExtras", "Pkg", "Serialization", "Sockets", "Test", "TestEnv"] +deps = ["Dates", "JuliaSyntax", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] path = "../../.." uuid = "817f1d60-ba6b-4fd5-9520-3cf149f6a823" -version = "0.1.0" +version = "1.34.0" [[deps.SHA]] uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" @@ -111,15 +115,20 @@ uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" [[deps.Sockets]] uuid = "6462fe0b-24de-5631-8697-dd941f90decc" +[[deps.StringViews]] +git-tree-sha1 = "d3c7a06c80622b8404b1105886c732abcb25cc2b" +uuid = "354b36f9-a18e-4713-926e-db85100087ba" +version = "1.3.5" + [[deps.TOML]] deps = ["Dates"] uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.0" +version = "1.0.3" [[deps.Tar]] deps = ["ArgTools", "SHA"] uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.1" +version = "1.10.0" [[deps.Test]] deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] @@ -127,9 +136,9 @@ uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" [[deps.TestEnv]] deps = ["Pkg"] -git-tree-sha1 = "b5a483bcc8c9f0df569101df166601e5e699f346" +git-tree-sha1 = "aec63ef091b11d67040b8b35d2dcdfdc4567c4d0" uuid = "1e6cf692-eddd-4d53-88a5-2d735e33781b" -version = "1.9.3" +version = "1.102.2" [[deps.UUIDs]] deps = ["Random", "SHA"] @@ -141,14 +150,14 @@ uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" [[deps.Zlib_jll]] deps = ["Libdl"] uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.12+3" +version = "1.2.13+1" [[deps.nghttp2_jll]] deps = ["Artifacts", "Libdl"] uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" +version = "1.52.0+1" [[deps.p7zip_jll]] deps = ["Artifacts", "Libdl"] uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" +version = "17.4.0+2" From 33b7073c03389b556c24493b9b5eb0e9249b97f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Drvo=C5=A1t=C4=9Bp?= Date: Fri, 19 Sep 2025 15:31:51 +0200 Subject: [PATCH 4/6] Try a line number workaround --- src/include_test_file.jl | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/include_test_file.jl b/src/include_test_file.jl index 2657819..1735a70 100644 --- a/src/include_test_file.jl +++ b/src/include_test_file.jl @@ -1,9 +1,10 @@ -using JuliaSyntax: ParseStream, @K_str, build_tree, bump_trivia, kind, parse!, peek_full_token, peek_token +using JuliaSyntax: ParseError, ParseStream, @K_str, any_error, build_tree, bump_trivia, kind, last_byte, parse!, peek_full_token, peek_token using StringViews function include_test_file(ti_filter::TestItemFilter, path::String) bytes = read(path) stream = ParseStream(bytes) + line_starts = Int32[Int32(i) for (i, x) in enumerate(bytes) if x == 0x0a] # :( tls = task_local_storage() tls[:SOURCE_PATH] = path # This is also done by Base.include try @@ -13,11 +14,12 @@ function include_test_file(ti_filter::TestItemFilter, path::String) k = kind(t) k == K"EndMarker" && break if k == K"@" + line = searchsortedfirst(line_starts, last_byte(stream)) tf = peek_full_token(stream, 2) v = @inbounds @view(bytes[tf.first_byte:tf.last_byte]) - if v == b"testitem" ; _eval_from_stream(stream, path, ti_filter, bytes) - elseif v == b"testsetup"; _eval_from_stream(stream, path) - elseif v == b"test_rel" ; _eval_from_stream(stream, path, ti_filter) + if v == b"testitem" ; _eval_from_stream(stream, path, line, ti_filter, bytes) + elseif v == b"testsetup"; _eval_from_stream(stream, path, line) + elseif v == b"test_rel" ; _eval_from_stream(stream, path, line, ti_filter) else error("Test files must only include `@testitem` and `@testsetup` calls, got an `@$(StringView(v))` at $(path)") # TODO end @@ -35,17 +37,17 @@ _contains(s::AbstractString, pattern::Regex) = occursin(pattern, s) _contains(s::AbstractString, pattern::AbstractString) = s == pattern # unconditionally eval -function _eval_from_stream(stream, path) +function _eval_from_stream(stream, path, line) parse!(stream; rule=:statement) - ast = build_tree(Expr, stream; filename=path) + ast = build_tree(Expr, stream; filename=path, first_line=line) Core.eval(Main, ast) return nothing end # test_rel -> apply ti_filter on the parsed ast -function _eval_from_stream(stream, path, ti_filter::TestItemFilter) +function _eval_from_stream(stream, path, line, ti_filter::TestItemFilter) parse!(stream; rule=:statement) - ast = build_tree(Expr, stream; filename=path) + ast = build_tree(Expr, stream; filename=path, first_line=line) any_error(stream) && throw(ParseError(stream, filename=path)) filtered = __filter_rai(ti_filter, ast)::Union{Nothing, Expr} filtered === nothing || Core.eval(Main, filtered::Expr) @@ -54,10 +56,10 @@ end # like above, but tries to avoid parsing the ast if it sees from the name identifier token # it won't pass the filter -function _eval_from_stream(stream, path, ti_filter::TestItemFilter, bytes) +function _eval_from_stream(stream, path, line, ti_filter::TestItemFilter, bytes) if ti_filter.name isa Nothing parse!(stream; rule=:statement) - ast = build_tree(Expr, stream; filename=path) + ast = build_tree(Expr, stream; filename=path, first_line=line) any_error(stream) && throw(ParseError(stream, filename=path)) filtered = __filter_ti(ti_filter, ast)::Union{Nothing, Expr} filtered === nothing || Core.eval(Main, filtered::Expr) @@ -68,7 +70,7 @@ function _eval_from_stream(stream, path, ti_filter::TestItemFilter, bytes) name = @inbounds StringView(@view(bytes[name_t.first_byte:name_t.last_byte])) parse!(stream; rule=:statement) if _contains(name, ti_filter.name) - ast = build_tree(Expr, stream; filename=path) + ast = build_tree(Expr, stream; filename=path, first_line=line) any_error(stream) && throw(ParseError(stream, filename=path)) filtered = __filter_ti(ti_filter, ast)::Union{Nothing, Expr} filtered === nothing || Core.eval(Main, filtered::Expr) From 456f1d1cf296d1ffea8afce6d832afca20f7ebef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Drvo=C5=A1t=C4=9Bp?= Date: Sat, 20 Sep 2025 14:52:45 +0200 Subject: [PATCH 5/6] Also try to early filter-out test_rels --- src/include_test_file.jl | 76 ++++++++++++++++++++++++---------------- 1 file changed, 46 insertions(+), 30 deletions(-) diff --git a/src/include_test_file.jl b/src/include_test_file.jl index 1735a70..95e869b 100644 --- a/src/include_test_file.jl +++ b/src/include_test_file.jl @@ -1,4 +1,5 @@ -using JuliaSyntax: ParseError, ParseStream, @K_str, any_error, build_tree, bump_trivia, kind, last_byte, parse!, peek_full_token, peek_token +using JuliaSyntax: JuliaSyntax, ParseError, ParseStream, @K_str +using JuliaSyntax: any_error, build_tree, first_byte, kind, parse!, peek_full_token, peek_token using StringViews function include_test_file(ti_filter::TestItemFilter, path::String) @@ -8,23 +9,23 @@ function include_test_file(ti_filter::TestItemFilter, path::String) tls = task_local_storage() tls[:SOURCE_PATH] = path # This is also done by Base.include try - while true - bump_trivia(stream, skip_newlines=true) + @inbounds while true + JuliaSyntax.bump_trivia(stream, skip_newlines=true) t = peek_token(stream, 1) k = kind(t) k == K"EndMarker" && break + line = _source_line_index(line_starts, first_byte(stream)) if k == K"@" - line = searchsortedfirst(line_starts, last_byte(stream)) tf = peek_full_token(stream, 2) - v = @inbounds @view(bytes[tf.first_byte:tf.last_byte]) - if v == b"testitem" ; _eval_from_stream(stream, path, line, ti_filter, bytes) - elseif v == b"testsetup"; _eval_from_stream(stream, path, line) - elseif v == b"test_rel" ; _eval_from_stream(stream, path, line, ti_filter) + v = @view(bytes[tf.first_byte:tf.last_byte]) + if v == b"testitem" ; _eval_test_item_stream(stream, path, line, ti_filter, bytes) + elseif v == b"testsetup"; _eval_test_setup_stream(stream, path, line) + elseif v == b"test_rel" ; _eval_test_rel_stream(stream, path, line, ti_filter, bytes) else - error("Test files must only include `@testitem` and `@testsetup` calls, got an `@$(StringView(v))` at $(path)") # TODO + error("Test files must only include `@testitem` and `@testsetup` calls, got an `@$(StringView(v))` at $(path):$(line)") # TODO end else - error("Test files must only include `@testitem` and `@testsetup` calls, got a $t at $(path)") # TODO + error("Test files must only include `@testitem` and `@testsetup` calls, got a $t at $(path):$(line)") # TODO end empty!(stream) # TODO: SourceFile created on a reset stream always start line number at 1 end @@ -33,11 +34,13 @@ function include_test_file(ti_filter::TestItemFilter, path::String) end end -_contains(s::AbstractString, pattern::Regex) = occursin(pattern, s) -_contains(s::AbstractString, pattern::AbstractString) = s == pattern +@inline function _source_line_index(line_starts, bytes_pos) + lineidx = searchsortedfirst(line_starts, bytes_pos) + return (lineidx < lastindex(line_starts)) ? lineidx : lineidx-1 +end # unconditionally eval -function _eval_from_stream(stream, path, line) +function _eval_test_setup_stream(stream, path, line) parse!(stream; rule=:statement) ast = build_tree(Expr, stream; filename=path, first_line=line) Core.eval(Main, ast) @@ -45,8 +48,23 @@ function _eval_from_stream(stream, path, line) end # test_rel -> apply ti_filter on the parsed ast -function _eval_from_stream(stream, path, line, ti_filter::TestItemFilter) +function _eval_test_rel_stream(stream, path, line, ti_filter::TestItemFilter, bytes) parse!(stream; rule=:statement) + if !(ti_filter.name isa Nothing) + @inbounds for (i, token) in enumerate(stream.tokens) + if kind(token) == K"Identifier" + fbyte = JuliaSyntax.token_first_byte(stream, i) + lbyte = JuliaSyntax.token_last_byte(stream, i) + if @view(bytes[fbyte:lbyte]) == b"name" + fbyte = JuliaSyntax.token_first_byte(stream, i + 3) + lbyte = JuliaSyntax.token_last_byte(stream, i + 3) + name = StringView(@view(bytes[fbyte:lbyte])) + _contains(name, ti_filter.name) && break + return nothing + end + end + end + end ast = build_tree(Expr, stream; filename=path, first_line=line) any_error(stream) && throw(ParseError(stream, filename=path)) filtered = __filter_rai(ti_filter, ast)::Union{Nothing, Expr} @@ -56,24 +74,22 @@ end # like above, but tries to avoid parsing the ast if it sees from the name identifier token # it won't pass the filter -function _eval_from_stream(stream, path, line, ti_filter::TestItemFilter, bytes) - if ti_filter.name isa Nothing +function _eval_test_item_stream(stream, path, line, ti_filter::TestItemFilter, bytes) + if !(ti_filter.name isa Nothing) + name_t = peek_full_token(stream, 4) # 3 was '\"' + name = @inbounds StringView(@view(bytes[name_t.first_byte:name_t.last_byte])) + parse!(stream; rule=:statement) + _contains(name, ti_filter.name) || return nothing + else parse!(stream; rule=:statement) - ast = build_tree(Expr, stream; filename=path, first_line=line) - any_error(stream) && throw(ParseError(stream, filename=path)) - filtered = __filter_ti(ti_filter, ast)::Union{Nothing, Expr} - filtered === nothing || Core.eval(Main, filtered::Expr) - return nothing end - name_t = peek_full_token(stream, 4) # 3 was '\"' - name = @inbounds StringView(@view(bytes[name_t.first_byte:name_t.last_byte])) - parse!(stream; rule=:statement) - if _contains(name, ti_filter.name) - ast = build_tree(Expr, stream; filename=path, first_line=line) - any_error(stream) && throw(ParseError(stream, filename=path)) - filtered = __filter_ti(ti_filter, ast)::Union{Nothing, Expr} - filtered === nothing || Core.eval(Main, filtered::Expr) - end + ast = build_tree(Expr, stream; filename=path, first_line=line) + any_error(stream) && throw(ParseError(stream, filename=path)) + filtered = __filter_ti(ti_filter, ast)::Union{Nothing, Expr} + filtered === nothing || Core.eval(Main, filtered::Expr) return nothing end + +@inline _contains(s::AbstractString, pattern::Regex) = occursin(pattern, s) +@inline _contains(s::AbstractString, pattern::AbstractString) = s == pattern From c33eccd9234561020efb2cb3ae8e56247bbc1ead Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Drvo=C5=A1t=C4=9Bp?= Date: Fri, 3 Oct 2025 20:14:46 +0200 Subject: [PATCH 6/6] Try removing explicit JuliaSyntax dep --- Project.toml | 2 -- src/include_test_file.jl | 4 ++-- test/packages/DontPass.jl/Manifest.toml | 7 +------ test/packages/MonoRepo.jl/Manifest.toml | 7 +------ test/packages/NoDeps.jl/Manifest.toml | 7 +------ test/packages/TestEndExpr.jl/Manifest.toml | 7 +------ test/packages/TestsInSrc.jl/Manifest.toml | 7 +------ 7 files changed, 7 insertions(+), 34 deletions(-) diff --git a/Project.toml b/Project.toml index 451e3ab..5c391d8 100644 --- a/Project.toml +++ b/Project.toml @@ -4,7 +4,6 @@ version = "1.34.0" [deps] Dates = "ade2ca70-3891-5945-98fb-dc099432e06a" -JuliaSyntax = "70703baa-626e-46a2-a12c-08ffd08c73b4" Logging = "56ddb016-857b-54e1-b83d-db4d58db5568" Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" Serialization = "9e88b42a-f829-5b0c-bbe9-9e923198166b" @@ -15,7 +14,6 @@ TestEnv = "1e6cf692-eddd-4d53-88a5-2d735e33781b" [compat] Dates = "1" -JuliaSyntax = "0.4, 1" Logging = "1" Pkg = "1" Profile = "1" diff --git a/src/include_test_file.jl b/src/include_test_file.jl index 95e869b..9dbec07 100644 --- a/src/include_test_file.jl +++ b/src/include_test_file.jl @@ -1,5 +1,5 @@ -using JuliaSyntax: JuliaSyntax, ParseError, ParseStream, @K_str -using JuliaSyntax: any_error, build_tree, first_byte, kind, parse!, peek_full_token, peek_token +using Base.JuliaSyntax: JuliaSyntax, ParseError, ParseStream, @K_str +using Base.JuliaSyntax: any_error, build_tree, first_byte, kind, parse!, peek_full_token, peek_token using StringViews function include_test_file(ti_filter::TestItemFilter, path::String) diff --git a/test/packages/DontPass.jl/Manifest.toml b/test/packages/DontPass.jl/Manifest.toml index fefe167..436f395 100644 --- a/test/packages/DontPass.jl/Manifest.toml +++ b/test/packages/DontPass.jl/Manifest.toml @@ -30,11 +30,6 @@ uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -[[deps.JuliaSyntax]] -git-tree-sha1 = "0d4b3dab95018bcf3925204475693d9f09dc45b8" -uuid = "70703baa-626e-46a2-a12c-08ffd08c73b4" -version = "1.0.2" - [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" @@ -100,7 +95,7 @@ deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.ReTestItems]] -deps = ["Dates", "JuliaSyntax", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] +deps = ["Dates", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] path = "../../.." uuid = "817f1d60-ba6b-4fd5-9520-3cf149f6a823" version = "1.34.0" diff --git a/test/packages/MonoRepo.jl/Manifest.toml b/test/packages/MonoRepo.jl/Manifest.toml index e1eb4f9..a37b4a7 100644 --- a/test/packages/MonoRepo.jl/Manifest.toml +++ b/test/packages/MonoRepo.jl/Manifest.toml @@ -47,11 +47,6 @@ uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -[[deps.JuliaSyntax]] -git-tree-sha1 = "0d4b3dab95018bcf3925204475693d9f09dc45b8" -uuid = "70703baa-626e-46a2-a12c-08ffd08c73b4" -version = "1.0.2" - [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" @@ -117,7 +112,7 @@ deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.ReTestItems]] -deps = ["Dates", "JuliaSyntax", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] +deps = ["Dates", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] path = "../../.." uuid = "817f1d60-ba6b-4fd5-9520-3cf149f6a823" version = "1.34.0" diff --git a/test/packages/NoDeps.jl/Manifest.toml b/test/packages/NoDeps.jl/Manifest.toml index fefe167..436f395 100644 --- a/test/packages/NoDeps.jl/Manifest.toml +++ b/test/packages/NoDeps.jl/Manifest.toml @@ -30,11 +30,6 @@ uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -[[deps.JuliaSyntax]] -git-tree-sha1 = "0d4b3dab95018bcf3925204475693d9f09dc45b8" -uuid = "70703baa-626e-46a2-a12c-08ffd08c73b4" -version = "1.0.2" - [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" @@ -100,7 +95,7 @@ deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.ReTestItems]] -deps = ["Dates", "JuliaSyntax", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] +deps = ["Dates", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] path = "../../.." uuid = "817f1d60-ba6b-4fd5-9520-3cf149f6a823" version = "1.34.0" diff --git a/test/packages/TestEndExpr.jl/Manifest.toml b/test/packages/TestEndExpr.jl/Manifest.toml index fcced16..d65e1ec 100644 --- a/test/packages/TestEndExpr.jl/Manifest.toml +++ b/test/packages/TestEndExpr.jl/Manifest.toml @@ -30,11 +30,6 @@ uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -[[deps.JuliaSyntax]] -git-tree-sha1 = "0d4b3dab95018bcf3925204475693d9f09dc45b8" -uuid = "70703baa-626e-46a2-a12c-08ffd08c73b4" -version = "1.0.2" - [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" @@ -100,7 +95,7 @@ deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.ReTestItems]] -deps = ["Dates", "JuliaSyntax", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] +deps = ["Dates", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] path = "../../.." uuid = "817f1d60-ba6b-4fd5-9520-3cf149f6a823" version = "1.34.0" diff --git a/test/packages/TestsInSrc.jl/Manifest.toml b/test/packages/TestsInSrc.jl/Manifest.toml index fefe167..436f395 100644 --- a/test/packages/TestsInSrc.jl/Manifest.toml +++ b/test/packages/TestsInSrc.jl/Manifest.toml @@ -30,11 +30,6 @@ uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" deps = ["Markdown"] uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" -[[deps.JuliaSyntax]] -git-tree-sha1 = "0d4b3dab95018bcf3925204475693d9f09dc45b8" -uuid = "70703baa-626e-46a2-a12c-08ffd08c73b4" -version = "1.0.2" - [[deps.LibCURL]] deps = ["LibCURL_jll", "MozillaCACerts_jll"] uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" @@ -100,7 +95,7 @@ deps = ["SHA"] uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" [[deps.ReTestItems]] -deps = ["Dates", "JuliaSyntax", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] +deps = ["Dates", "Logging", "Pkg", "Serialization", "Sockets", "StringViews", "Test", "TestEnv"] path = "../../.." uuid = "817f1d60-ba6b-4fd5-9520-3cf149f6a823" version = "1.34.0"