Skip to content

Commit

Permalink
Make test explorer work with fsac tests and fix an expecto test detec…
Browse files Browse the repository at this point in the history
…tion (ionide#1165)

* update Expecto to use FilterExpression

* fix ability to debug some tests

* unset yolodev dependency restriction

* expand expecto test detection
  • Loading branch information
TheAngryByrd authored and nojaf committed Nov 3, 2023
1 parent fe60cb8 commit 97970c7
Show file tree
Hide file tree
Showing 7 changed files with 31 additions and 20 deletions.
3 changes: 2 additions & 1 deletion src/FsAutoComplete.Core/TestAdapter.fs
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@ let getExpectoTests (ast: ParsedInput) : TestAdapterEntry<range> list =
visitExpr entry expr2
| Case, SynExpr.ComputationExpr _
| Case, SynExpr.Lambda _
| Case, SynExpr.Paren(SynExpr.Lambda _, _, _, _) ->
| Case, SynExpr.Paren(expr = SynExpr.App(argExpr = SynExpr.ComputationExpr _))
| Case, SynExpr.Paren(expr = (SynExpr.Lambda _)) ->
ident <- ident + 1

let entry =
Expand Down
2 changes: 1 addition & 1 deletion test/FsAutoComplete.Tests.Lsp/DetectUnitTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -55,5 +55,5 @@ let tests state =
(async {
let! testNotification = getTestNotification "ExpectoTests" "Sample.fs"
Expect.hasLength testNotification.Tests 1 "Expected to have found 1 expecto test list"
Expect.hasLength testNotification.Tests.[0].Childs 13 "Expected to have found 13 expecto tests"
Expect.hasLength testNotification.Tests.[0].Childs 15 "Expected to have found 13 expecto tests"
}) ]
6 changes: 3 additions & 3 deletions test/FsAutoComplete.Tests.Lsp/EmptyFileTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ let tests state =
| Ok _ -> () // all good, no parsing/checking errors
| Core.Result.Error errors -> failwithf "Errors while parsing script %s: %A" scriptPath errors
})

testCaseAsync
"auto completion does not throw and is empty"
(async {
Expand All @@ -66,7 +66,7 @@ let tests state =
(async {
let! server, events, scriptPath = server2
do! server.TextDocumentDidOpen { TextDocument = loadDocument scriptPath }

do! server.TextDocumentDidChange {
TextDocument = { Uri = Path.FilePathToUri scriptPath; Version = 1 }
ContentChanges = [| {
Expand Down Expand Up @@ -106,4 +106,4 @@ let tests state =
| Ok None -> failtest "Should have gotten some completion items"
| Error e -> failtestf "Got an error while retrieving completions: %A" e
})
]]
]]
14 changes: 9 additions & 5 deletions test/FsAutoComplete.Tests.Lsp/Helpers.fs
Original file line number Diff line number Diff line change
Expand Up @@ -539,11 +539,15 @@ let inline expectExitCodeZero (r: BufferedCommandResult) =
0
$"Expected exit code zero but was %i{r.ExitCode}.\nStdOut: %s{r.StandardOutput}\nStdErr: %s{r.StandardError}"

let dotnetRestore dir =
runProcess dir "dotnet" "restore" |> Async.map expectExitCodeZero

let dotnetToolRestore dir =
runProcess dir "dotnet" "tool restore" |> Async.map expectExitCodeZero
let dotnetRestore dir = async {
let! r = runProcess (DirectoryInfo(dir).FullName) "dotnet" "restore -v d"
return expectExitCodeZero r
}

let dotnetToolRestore dir = async {
let! r = runProcess (DirectoryInfo(dir).FullName) "dotnet" "tool restore"
return expectExitCodeZero r
}

let serverInitialize path (config: FSharpConfigDto) createServer =
async {
Expand Down
17 changes: 8 additions & 9 deletions test/FsAutoComplete.Tests.Lsp/Program.fs
Original file line number Diff line number Diff line change
Expand Up @@ -245,14 +245,13 @@ let main args =

let cts = new CancellationTokenSource(testTimeout)

let config =
{ defaultConfig with
// failOnFocusedTests = true
printer = Expecto.Impl.TestPrinters.summaryWithLocationPrinter defaultConfig.printer
verbosity = logLevel
// runInParallel = false
}

runTestsWithArgsAndCancel cts.Token config fixedUpArgs tests
let args =
[
CLIArguments.Printer (Expecto.Impl.TestPrinters.summaryWithLocationPrinter defaultConfig.printer)
CLIArguments.Verbosity logLevel
// CLIArguments.Parallel
]

runTestsWithCLIArgsAndCancel cts.Token args fixedUpArgs tests


Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,14 @@ let tests =
Expect.equal 4 (2+2) "2+2"
}

testCaseAsync "async test case backpipe" <| async {
Expect.equal 4 (2+2) "2+2"
}

testCaseAsync "async test case paren"(async {
Expect.equal 4 (2+2) "2+2"
})

testTheory "odd numbers" [1; 3; 5] ( fun x ->
Expect.isTrue (x % 2 = 1) "should be odd" )

Expand Down
1 change: 0 additions & 1 deletion test/FsAutoComplete.Tests.Lsp/Utils/Server.Tests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,6 @@ let tests state = testList (nameof(Server)) [

testSequenced <| testList "contesting" [
let projectDir = inTestCases "Project"
dotnetRestore projectDir.Value |> Async.RunSynchronously
serverTestList "dir with project and no analyzers" state noAnalyzersConfig projectDir (fun server -> [
testCaseAsync "can load file in project" (async {
let! (doc, diags) = server |> Server.openDocument "Other.fs"
Expand Down

0 comments on commit 97970c7

Please sign in to comment.