Skip to content

Commit 38a30b6

Browse files
committed
temp
1 parent 27f5fbd commit 38a30b6

File tree

1 file changed

+27
-10
lines changed

1 file changed

+27
-10
lines changed

tests/FSharp.Compiler.ComponentTests/Scripting/Interactive.fs

+27-10
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ open Xunit
77
open System
88
open FSharp.Test.Compiler
99
open FSharp.Test.ScriptHelpers
10+
open FSharp.Compiler.Interactive.Shell
11+
open FSharp.Compiler.Diagnostics
1012

1113
module ``Interactive tests`` =
1214

@@ -40,29 +42,44 @@ module ``Interactive tests`` =
4042
[<InlineData(false, true)>]
4143
let ``Evaluation of multiple sessions should succeed`` (useMultiEmit1, useMultiEmit2) =
4244

45+
// This test is to check that we can have multiple sessions and that they can access each other
46+
47+
// Initialize
4348
let args useMultiEmit : string array = [| if useMultiEmit then "--multiemit+" else "--multiemit-"|]
4449
use sessionOne = new FSharpScript(additionalArgs = args useMultiEmit1)
4550
use sessionTwo = new FSharpScript(additionalArgs = args useMultiEmit2)
51+
use sessionThree = new FSharpScript(additionalArgs = args useMultiEmit2)
4652

47-
sessionOne.Eval("""
48-
module Test1 =
49-
50-
let test1 obj = sprintf "Execute - Test1.test1 - %A" obj""") |> ignore
51-
52-
let result1 = sessionOne.Eval("""Test1.test1 18""") |> getValue
53+
// First session
54+
sessionOne.Eval("""module Test1 = let test1 obj = sprintf "Execute - Test1.test1 - %A" obj""") |> ignore
55+
let result1 = sessionOne.Eval("Test1.test1 18") |> getValue
5356
let value1 = result1.Value
5457
Assert.Equal(typeof<string>, value1.ReflectionType)
5558
Assert.Equal("Execute - Test1.test1 - 18", value1.ReflectionValue :?> string)
5659

57-
sessionTwo.Eval("""
58-
module Test2 =
59-
let test2 obj = sprintf "Execute - Test2.test2 - %A" obj""") |> ignore
60-
60+
// Second session
61+
sessionTwo.Eval("""module Test2 = let test2 obj = sprintf "Execute - Test2.test2 - %A" obj""") |> ignore
6162
let result2 = sessionTwo.Eval("""Test2.test2 27""") |> getValue
6263
let value2 = result2.Value
6364
Assert.Equal(typeof<string>, value2.ReflectionType)
6465
Assert.Equal("Execute - Test2.test2 - 27", value2.ReflectionValue :?> string)
6566

67+
// Can I access the other session
68+
let result: Result<FsiValue option, exn> * FSharpDiagnostic[] = sessionOne.Eval("""Test2.test2 19""")
69+
match result with
70+
| Result.Ok _, errors -> Assert.True(false, $"""Failed in line: {String.Join(", ", errors)}""")
71+
| Result.Error ex, _diagnostics -> Assert.True(false, $"""Failed in line: {ex.Message}""")
72+
73+
74+
75+
76+
//let result4 = sessionTwo.Eval("""Test1.test1 21""") |> getValue
77+
//let value4 = result4.Value
78+
//Assert.Equal(typeof<string>, value4.ReflectionType)
79+
//Assert.Equal("Execute - Test1.test1 - 21", value4.ReflectionValue :?> string)
80+
81+
()
82+
6683
module ``External FSI tests`` =
6784
[<Fact>]
6885
let ``Eval object value``() =

0 commit comments

Comments
 (0)