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 (#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 Sep 17, 2023
1 parent e335336 commit 2522cff
Show file tree
Hide file tree
Showing 8 changed files with 38 additions and 27 deletions.
14 changes: 7 additions & 7 deletions paket.lock
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,9 @@ NUGET
Microsoft.SourceLink.Bitbucket.Git (>= 1.1.1)
Microsoft.SourceLink.GitHub (>= 1.1.1)
Microsoft.SourceLink.GitLab (>= 1.1.1)
Expecto (9.0.4)
FSharp.Core (>= 4.6)
Mono.Cecil (>= 0.11.3)
Expecto (10.1)
FSharp.Core (>= 7.0.200) - restriction: || (== net6.0) (== net7.0) (&& (== netstandard2.0) (>= net6.0)) (&& (== netstandard2.1) (>= net6.0))
Mono.Cecil (>= 0.11.4 < 1.0) - restriction: || (== net6.0) (== net7.0) (&& (== netstandard2.0) (>= net6.0)) (&& (== netstandard2.1) (>= net6.0))
Expecto.Diff (9.0.4)
DiffPlex (>= 1.6.3)
Expecto (>= 9.0.4)
Expand Down Expand Up @@ -485,10 +485,10 @@ NUGET
System.Runtime.CompilerServices.Unsafe (>= 4.5.3) - restriction: || (&& (== net6.0) (>= net461)) (&& (== net6.0) (< netcoreapp2.1)) (&& (== net6.0) (< netstandard1.0)) (&& (== net6.0) (< netstandard2.0)) (&& (== net6.0) (>= wp8)) (&& (== net7.0) (>= net461)) (&& (== net7.0) (< netcoreapp2.1)) (&& (== net7.0) (< netstandard1.0)) (&& (== net7.0) (< netstandard2.0)) (&& (== net7.0) (>= wp8)) (== netstandard2.0) (== netstandard2.1)
System.Windows.Extensions (7.0) - copy_local: false, restriction: || (== net6.0) (== net7.0) (&& (== netstandard2.0) (>= net6.0)) (&& (== netstandard2.1) (>= net6.0))
System.Drawing.Common (>= 7.0) - restriction: || (== net6.0) (== net7.0) (&& (== netstandard2.0) (>= net6.0)) (&& (== netstandard2.1) (>= net6.0))
YoloDev.Expecto.TestSdk (0.13.3)
Expecto (>= 9.0 < 10.0) - restriction: || (== net6.0) (== net7.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) (&& (== netstandard2.1) (>= netcoreapp3.1))
FSharp.Core (>= 4.6.2) - restriction: || (== net6.0) (== net7.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) (&& (== netstandard2.1) (>= netcoreapp3.1))
System.Collections.Immutable (>= 6.0) - restriction: || (== net6.0) (== net7.0) (&& (== netstandard2.0) (>= netcoreapp3.1)) (&& (== netstandard2.1) (>= netcoreapp3.1))
YoloDev.Expecto.TestSdk (0.14.2)
Expecto (>= 10.0 < 11.0) - restriction: || (== net6.0) (== net7.0) (&& (== netstandard2.0) (>= net6.0)) (&& (== netstandard2.1) (>= net6.0))
FSharp.Core (>= 7.0.200) - restriction: || (== net6.0) (== net7.0) (&& (== netstandard2.0) (>= net6.0)) (&& (== netstandard2.1) (>= net6.0))
System.Collections.Immutable (>= 6.0) - restriction: || (== net6.0) (== net7.0) (&& (== netstandard2.0) (>= net6.0)) (&& (== netstandard2.1) (>= net6.0))

GROUP Build
STORAGE: NONE
Expand Down
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 2522cff

Please sign in to comment.