summary refs log tree commit diff stats
path: root/tests/compiler/tpathutils.nim
blob: 47ff0f06a2d224be964cfdad6a8a269eea6c9dd2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import compiler/pathutils
import os, strutils


doAssert AbsoluteDir"/Users/me///" / RelativeFile"z.nim" == AbsoluteFile"/Users/me/z.nim"
doAssert AbsoluteDir"/Users/me" / RelativeFile"../z.nim" == AbsoluteFile"/Users/z.nim"
doAssert AbsoluteDir"/Users/me/" / RelativeFile"../z.nim" == AbsoluteFile"/Users/z.nim"
doAssert relativePath("/foo/bar.nim", "/foo/", '/') == "bar.nim"
doAssert $RelativeDir"foo/bar" == "foo/bar"
doAssert RelativeDir"foo/bar" == RelativeDir"foo/bar"
doAssert RelativeFile"foo/bar".changeFileExt(".txt") == RelativeFile"foo/bar.txt"
doAssert RelativeFile"foo/bar".addFileExt(".txt") == RelativeFile"foo/bar.txt"
doAssert not RelativeDir"foo/bar".isEmpty
doAssert RelativeDir"".isEmpty

when defined(windows):
  let nasty = string(AbsoluteDir(r"C:\Users\rumpf\projects\nim\tests\nimble\nimbleDir\linkedPkgs\pkgB-#head\../../simplePkgs/pkgB-#head/") / RelativeFile"pkgA/module.nim")
  doAssert nasty.replace('/', '\\') == r"C:\Users\rumpf\projects\nim\tests\nimble\nimbleDir\simplePkgs\pkgB-#head\pkgA\module.nim"
="p">: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; } a { color:#eeeeee; text-decoration: none; } a:hover { text-decoration: underline; } * { font-size: 12pt; font-size: 1em; } .muRecipe { color: #ff8700; } .Conceal { color: #4e4e4e; } .Comment { color: #9090ff; } .Comment a { color:#0000ee; text-decoration:underline; } .Delimiter { color: #800080; } .LineNr { color: #444444; } .Constant { color: #00a0a0; } .muControl { color: #c0a020; } --> </style> <script type='text/javascript'> <!-- /* function to open any folds containing a jumped-to line before jumping to it */ function JumpToLine() { var lineNum; lineNum = window.location.hash; lineNum = lineNum.substr(1); /* strip off '#' */ if (lineNum.indexOf('L') == -1) { lineNum = 'L'+lineNum; } lineElem = document.getElementById(lineNum); /* Always jump to new location even if the line was hidden inside a fold, or * we corrected the raw number to a line ID. */ if (lineElem) { lineElem.scrollIntoView(true); } return true; } if ('onhashchange' in window) { window.onhashchange = JumpToLine; } --> </script> </head> <body onload='JumpToLine();'> <pre id='vimCodeElement'> <span id="L1" class="LineNr"> 1 </span><span class="Comment"># example program: running multiple routines</span> <span id="L2" class="LineNr"> 2 </span> <span id="L3" class="LineNr"> 3 </span><span class="muRecipe">def</span> <a href='fork.mu.html#L3'>main</a> [ <span id="L4" class="LineNr"> 4 </span> start-running <a href='fork.mu.html#L11'>thread2</a> <span id="L5" class="LineNr"> 5 </span> <span class="Delimiter">{</span> <span id="L6" class="LineNr"> 6 </span> <span class="Conceal">¦</span> $print<span class="Constant"> 34</span> <span id="L7" class="LineNr"> 7 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L8" class="LineNr"> 8 </span> <span class="Delimiter">}</span> <span id="L9" class="LineNr"> 9 </span>] <span id="L10" class="LineNr">10 </span> <span id="L11" class="LineNr">11 </span><span class="muRecipe">def</span> <a href='fork.mu.html#L11'>thread2</a> [ <span id="L12" class="LineNr">12 </span> <span class="Delimiter">{</span> <span id="L13" class="LineNr">13 </span> <span class="Conceal">¦</span> $print<span class="Constant"> 35</span> <span id="L14" class="LineNr">14 </span> <span class="Conceal">¦</span> <span class="muControl">loop</span> <span id="L15" class="LineNr">15 </span> <span class="Delimiter">}</span> <span id="L16" class="LineNr">16 </span>] </pre> </body> </html> <!-- vim: set foldmethod=manual : -->