mirror of
https://github.com/leanprover/lean4.git
synced 2026-03-17 10:24:07 +00:00
29 lines
993 B
Lean4
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
|