Files
lean4/tests/elab/realPath.lean
2026-02-27 23:25:37 +00:00

29 lines
993 B
Lean4

/-!
Tests that the `IO.FS.realPath` function on windows resolves links.
-/
/-
Note: The test below circumvents #8547 by misusing quotation marks in order to run `mklink`.
This test will need to be updated once that issue is fixed.
-/
def realPathTest : IO Unit := do
unless System.Platform.isWindows do
IO.println "This test only does something on Windows."
return
let dir IO.currentDir
let tmpDir := dir / "tmp_realpath_test_dir"
let tmpJunct := dir / "tmp_realpath_test_junction"
IO.FS.createDir (dir / tmpDir)
let cmd := "cmd.exe\" /c mklink /j \"" ++ tmpJunct.toString ++ "\" \"" ++ tmpDir.toString
discard <| IO.Process.run { cmd }
let realPath1 IO.FS.realPath tmpDir
let realPath2 IO.FS.realPath tmpJunct
IO.FS.removeDir tmpJunct
IO.FS.removeDir tmpDir
IO.println s!"{realPath1} vs {realPath2}"
if realPath1 != realPath2 then
throw (.userError ("mismatch " ++ realPath1.toString ++ " with " ++ realPath2.toString))
#eval realPathTest