@@ -593,7 +593,81 @@ type ScriptTests() as this =
593593let code = [ " #light" ; " #r @\" " + fullyqualifiepathtoddll+ " \" " ]
594594let ( project , _ ) = createSingleFileFsxFromLines code
595595 AssertNoErrorsOrWarnings( project)
596-
596+
597+ [<Test>]
598+ [<Category( " fsx closure" ) >]
599+ member public this. ``Fsx.NoError.HashR.RelativePath1`` () =
600+ use _guard= this.UsingNewVS()
601+ let solution = this.CreateSolution()
602+ let project = CreateProject( solution, " testproject" )
603+ let file1 = AddFileFromText( project, " lib.fs" ,
604+ [ " module Lib"
605+ " let X = 42"
606+ ])
607+
608+ let bld = Build( project)
609+
610+ let script1Dir = Path.Combine( ProjectDirectory( project), " ccc" )
611+ let script1Path = Path.Combine( script1Dir, " Script1.fsx" )
612+ let script2Dir = Path.Combine( ProjectDirectory( project), " aaa\\ bbb" )
613+ let script2Path = Path.Combine( script2Dir, " Script2.fsx" )
614+
615+ Directory.CreateDirectory( script1Dir) |> ignore
616+ Directory.CreateDirectory( script2Dir) |> ignore
617+ File.Move( bld.ExecutableOutput, Path.Combine( ProjectDirectory( project), " aaa\\ lib.exe" ))
618+
619+ let script1 = File.WriteAllLines( script1Path,
620+ [ " #load\" ../aaa/bbb/Script2.fsx\" "
621+ " printfn\" %O \" Lib.X"
622+ ])
623+ let script2 = File.WriteAllLines( script2Path,
624+ [ " #r\" ../lib.exe\" "
625+ ])
626+
627+ let script1 = OpenFile( project, script1Path)
628+ TakeCoffeeBreak( this.VS)
629+
630+ MoveCursorToEndOfMarker( script1, " #load" )
631+ let ans = GetSquiggleAtCursor( script1)
632+ AssertNoSquiggle( ans)
633+
634+ [<Test>]
635+ [<Category( " fsx closure" ) >]
636+ member public this. ``Fsx.NoError.HashR.RelativePath2`` () =
637+ use _guard= this.UsingNewVS()
638+ let solution = this.CreateSolution()
639+ let project = CreateProject( solution, " testproject" )
640+ let file1 = AddFileFromText( project, " lib.fs" ,
641+ [ " module Lib"
642+ " let X = 42"
643+ ])
644+
645+ let bld = Build( project)
646+
647+ let script1Dir = Path.Combine( ProjectDirectory( project), " ccc" )
648+ let script1Path = Path.Combine( script1Dir, " Script1.fsx" )
649+ let script2Dir = Path.Combine( ProjectDirectory( project), " aaa" )
650+ let script2Path = Path.Combine( script2Dir, " Script2.fsx" )
651+
652+ Directory.CreateDirectory( script1Dir) |> ignore
653+ Directory.CreateDirectory( script2Dir) |> ignore
654+ File.Move( bld.ExecutableOutput, Path.Combine( ProjectDirectory( project), " aaa\\ lib.exe" ))
655+
656+ let script1 = File.WriteAllLines( script1Path,
657+ [ " #load\" ../aaa/Script2.fsx\" "
658+ " printfn\" %O \" Lib.X"
659+ ])
660+ let script2 = File.WriteAllLines( script2Path,
661+ [ " #r\" lib.exe\" "
662+ ])
663+
664+ let script1 = OpenFile( project, script1Path)
665+ TakeCoffeeBreak( this.VS)
666+
667+ MoveCursorToEndOfMarker( script1, " #load" )
668+ let ans = GetSquiggleAtCursor( script1)
669+ AssertNoSquiggle( ans)
670+
597671/// FEATURE: #load in an .fsx file will include that file in the 'build' of the .fsx.
598672[<Test>]
599673member public this. ``Fsx.NoError.HashLoad.Simple`` () =