Skip to content

Commit

Permalink
Fixes Expecto Theory AST traversal
Browse files Browse the repository at this point in the history
  • Loading branch information
TheAngryByrd committed Sep 6, 2023
1 parent e214ff4 commit ad2e8ac
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 18 deletions.
32 changes: 20 additions & 12 deletions src/FsAutoComplete.Core/TestAdapter.fs
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,25 @@ let getExpectoTests (ast: ParsedInput) : TestAdapterEntry<range> list =
else NotExpecto
| _ -> NotExpecto

let (|FindTestCases|_|) expr =
match expr with
| SynExpr.App(
funcExpr = SynExpr.App(
funcExpr = SynExpr.App(funcExpr = expr1; argExpr = SynExpr.Const(constant = SynConst.String(text = s)))))
| SynExpr.App(
argExpr = SynExpr.App(
funcExpr = SynExpr.App(funcExpr = expr1; argExpr = SynExpr.Const(constant = SynConst.String(text = s)))))
| SynExpr.App(
funcExpr = SynExpr.App(funcExpr = expr1); argExpr = SynExpr.Const(constant = SynConst.String(text = s)))
| SynExpr.App(
funcExpr = SynExpr.App(funcExpr = SynExpr.App(funcExpr = expr1))
argExpr = SynExpr.Const(constant = SynConst.String(text = s)))
| SynExpr.App(
funcExpr = SynExpr.App(funcExpr = SynExpr.App(funcExpr = SynExpr.App(funcExpr = expr1)))
argExpr = SynExpr.Const(constant = SynConst.String(text = s)))
| SynExpr.App(funcExpr = expr1; argExpr = SynExpr.Const(constant = SynConst.String(text = s))) -> Some (expr1, s)
| _ -> None

let rec visitExpr (parent: TestAdapterEntry<range>) =
function
| SynExpr.App(_, _, SynExpr.App(_, _, expr1, SynExpr.Const(SynConst.String(text = s), _), range), expr2, _) ->
Expand Down Expand Up @@ -139,18 +158,7 @@ let getExpectoTests (ast: ParsedInput) : TestAdapterEntry<range> list =
| _ ->
visitExpr parent expr1
visitExpr parent expr2
| SynExpr.App(_, _, SynExpr.App(_, _, expr1, _, _range), SynExpr.Const(SynConst.String(text = s), _), _)
| SynExpr.App(_,
_,
SynExpr.App(_, _, SynExpr.App(_, _, expr1, _, _range), _, _),
SynExpr.Const(SynConst.String(text = s), _),
_)
| SynExpr.App(_,
_,
SynExpr.App(_, _, SynExpr.App(_, _, SynExpr.App(_, _, expr1, _, _range), _, _), _, _),
SynExpr.Const(SynConst.String(text = s), _),
_)
| SynExpr.App(_, _, expr1, SynExpr.Const(SynConst.String(text = s), _), _range) -> //Take those applications that are using string constant as an argument
| FindTestCases (expr1, s) -> //Take those applications that are using string constant as an argument
match expr1 with
| Case ->
ident <- ident + 1
Expand Down
10 changes: 4 additions & 6 deletions test/FsAutoComplete.Tests.Lsp/TestCases/ExpectoTests/Sample.fs
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,14 @@ let tests =
Expect.equal 4 (2+2) "2+2"
}

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

testTheoryAsync "async even numbers" [2; 4; 6] <| fun x -> async {
testTheoryAsync "async even numbers" [2; 4; 6] ( fun x -> async {
Expect.isTrue (x % 2 = 0) "should be even"
}
})

testTheoryTask "task odd numbers" [1; 3; 5;] <| fun x -> task {
Expect.isTrue (x % 2 = 1) "should be odd"
}


]

0 comments on commit ad2e8ac

Please sign in to comment.