Skip to content

Commit d45896a

Browse files
committed
Handle no package scenario better
1 parent cded309 commit d45896a

File tree

2 files changed

+42
-7
lines changed

2 files changed

+42
-7
lines changed

src/TestItemControllers.jl

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -396,8 +396,8 @@ function start(tp::TestProcess, controller)
396396
packageUri = i.packageUri,
397397
useDefaultUsings = i.useDefaultUsings,
398398
testSetups = i.testSetups,
399-
line = i.line,
400-
column = i.column,
399+
line = i.codeLine,
400+
column = i.codeColumn,
401401
code = i.code,
402402
) for i in tp.testitems_to_run
403403
],
@@ -492,6 +492,10 @@ end
492492

493493
function create_testrun_request(endpoint::JSONRPC.JSONRPCEndpoint, params::TestItemControllerProtocol.CreateTestRunParams, controller::JSONRPCTestItemController)
494494
@info "Creating new test run"
495+
496+
valid_test_items = [i for i in params.testItems if i.packageName !== missing && i.packageUri !== missing]
497+
test_items_without_package = [i for i in params.testItems if i.packageName === missing || i.packageUri === missing]
498+
495499
our_procs = Dict{TestEnvironment,Vector{TestProcess}}()
496500

497501
test_run = TestRun(params.testRunId, true, Set(i.id for i in params.testItems), our_procs)
@@ -504,7 +508,7 @@ function create_testrun_request(endpoint::JSONRPC.JSONRPCEndpoint, params::TestI
504508

505509
env_content_hash_by_env = Dict{TestEnvironment,Int}()
506510

507-
for i in params.testItems
511+
for i in valid_test_items
508512
te = TestEnvironment(
509513
coalesce(i.projectUri, nothing),
510514
i.packageUri,
@@ -534,9 +538,9 @@ function create_testrun_request(endpoint::JSONRPC.JSONRPCEndpoint, params::TestI
534538
proc_count_by_env = Dict{TestEnvironment,Int}()
535539

536540
for (k,v) in pairs(testitems_by_env)
537-
as_share = length(v)/length(params.testItems)
541+
as_share = length(v)/length(valid_test_items)
538542

539-
proc_count_by_env[k] = min(floor(Int, max_procs * as_share), length(params.testItems))
543+
proc_count_by_env[k] = min(floor(Int, max_procs * as_share), length(valid_test_items))
540544
end
541545

542546
# Grab existing procs
@@ -674,6 +678,11 @@ function create_testrun_request(endpoint::JSONRPC.JSONRPCEndpoint, params::TestI
674678
end
675679
end
676680

681+
# Finally, we send error notifications for all test items that didn't have a package
682+
for i in test_items_without_package
683+
put!(controller.combined_msg_queue, (source=:testcontroller, msg=(event=:errored, testitemid=i.id, testrunid=params.testRunId, message="Test item '$(i.label)' is not inside a Julia package. Test items must be inside a package to be run.", uri=i.uri, line=i.line, column=i.column)))
684+
end
685+
677686
nothing
678687
end
679688

@@ -729,6 +738,30 @@ function Base.run(controller::JSONRPCTestItemController)
729738

730739
if msg.source==:client
731740
dispatch_msg(controller.endpoint, msg.msg, controller)
741+
elseif msg.source==:testcontroller
742+
if msg.msg.event==:errored
743+
test_run = controller.testruns[msg.msg.testrunid]
744+
745+
delete!(test_run.testitem_ids, msg.msg.testitemid)
746+
params = TestItemControllerProtocol.TestItemErroredParams(
747+
testRunId=msg.msg.testrunid,
748+
testItemId=msg.msg.testitemid,
749+
messages = TestItemControllerProtocol.TestMessage[
750+
TestItemControllerProtocol.TestMessage(
751+
message = msg.msg.message,
752+
expectedOutput = missing,
753+
actualOutput = missing,
754+
uri = msg.msg.uri,
755+
line = msg.msg.line,
756+
column = msg.msg.column
757+
)
758+
],
759+
duration=missing
760+
)
761+
JSONRPC.send(controller.endpoint, TestItemControllerProtocol.notficiationTypeTestItemErrored, params)
762+
else
763+
error("Unknown message")
764+
end
732765
elseif msg.source==:testprocess
733766
if msg.msg.event == :started
734767
JSONRPC.send(controller.endpoint, TestItemControllerProtocol.notficiationTypeTestItemStarted, TestItemControllerProtocol.TestItemStartedParams(testRunId=msg.msg.testrunid, testItemId=msg.msg.testitemid))

src/json_protocol.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ using ..JSONRPC: @dict_readable, RequestType, NotificationType, Outbound
88
id::String
99
uri::String
1010
label::String
11-
packageName::String
11+
packageName::Union{Missing,String}
1212
packageUri::Union{Missing,String}
1313
projectUri::Union{Missing,String}
1414
envContentHash::Union{Missing,Int}
@@ -21,12 +21,14 @@ using ..JSONRPC: @dict_readable, RequestType, NotificationType, Outbound
2121
line::Int
2222
column::Int
2323
code::String
24+
codeLine::Int
25+
codeColumn::Int
2426
mode::String
2527
# cover
2628
end
2729

2830
@dict_readable struct TestSetupDetail
29-
packageUri::String
31+
packageUri::Union{Missing,String}
3032
name::String
3133
kind::String
3234
uri::String

0 commit comments

Comments
 (0)