aboutsummaryrefslogtreecommitdiff
path: root/test cases
diff options
context:
space:
mode:
authorTristan Partin <tristan@partin.io>2023-08-07 12:30:15 -0500
committerXavier Claessens <xclaesse@gmail.com>2023-08-17 17:05:49 -0400
commitf52bcaa27fc125ab9ae583af466ba99c164169f3 (patch)
tree34ecddd4e69581075035f405ff1fddcada6f252f /test cases
parentcbf8e67f19e384e5f8eb7f65d3020551769de545 (diff)
downloadmeson-f52bcaa27fc125ab9ae583af466ba99c164169f3.zip
meson-f52bcaa27fc125ab9ae583af466ba99c164169f3.tar.gz
meson-f52bcaa27fc125ab9ae583af466ba99c164169f3.tar.bz2
Add fs.relative_to()
Returns a relative path from arg 2 to arg 1 similar to os.path.relpath().
Diffstat (limited to 'test cases')
-rw-r--r--test cases/common/220 fs module/meson.build25
-rw-r--r--test cases/common/220 fs module/subdir/btgt.c5
-rw-r--r--test cases/common/220 fs module/subdir/meson.build50
3 files changed, 79 insertions, 1 deletions
diff --git a/test cases/common/220 fs module/meson.build b/test cases/common/220 fs module/meson.build
index b860fc8..7f113d6 100644
--- a/test cases/common/220 fs module/meson.build
+++ b/test cases/common/220 fs module/meson.build
@@ -1,4 +1,4 @@
-project('fs module test')
+project('fs module test', 'c')
is_windows = build_machine.system() == 'windows'
@@ -139,6 +139,29 @@ assert(fs.name('foo/bar/baz.dll.a') == 'baz.dll.a', 'failed to get basename with
assert(fs.stem('foo/bar/baz.dll') == 'baz', 'failed to get stem with suffix')
assert(fs.stem('foo/bar/baz.dll.a') == 'baz.dll', 'failed to get stem with compound suffix')
+# relative_to
+if build_machine.system() == 'windows'
+ # strings
+ assert(fs.relative_to('c:\\prefix\\lib\\foo', 'c:\\prefix') == 'lib\\foo')
+ assert(fs.relative_to('c:\\prefix\\lib', 'c:\\prefix\\bin') == '..\\lib')
+ assert(fs.relative_to('c:\\proj1\\foo', 'd:\\proj1\\bar') == 'c:\\proj1\\foo')
+ assert(fs.relative_to('prefix\\lib\\foo', 'prefix') == 'lib\\foo')
+ assert(fs.relative_to('prefix\\lib', 'prefix\\bin') == '..\\lib')
+ assert(fs.relative_to('proj1\\foo', 'proj1\\bar') == '..\\foo')
+ assert(fs.relative_to('subdir/subdirfile.txt', meson.current_source_dir()) == 'subdir\\subdirfile.txt')
+ assert(fs.relative_to(files('meson.build'), files('subdir/meson.build')) == '..\\..\\meson.build')
+ assert(fs.relative_to(files('meson.build'), 'subdir/meson.build') == '..\\..\\meson.build')
+else
+ # strings
+ assert(fs.relative_to('/prefix/lib/foo', '/prefix') == 'lib/foo')
+ assert(fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')
+ assert(fs.relative_to('prefix/lib/foo', 'prefix') == 'lib/foo')
+ assert(fs.relative_to('prefix/lib', 'prefix/bin') == '../lib')
+ assert(fs.relative_to('subdir/subdirfile.txt', meson.current_source_dir()) == 'subdir/subdirfile.txt')
+ assert(fs.relative_to(files('meson.build'), files('subdir/meson.build')) == '../../meson.build')
+ assert(fs.relative_to(files('meson.build'), 'subdir/meson.build') == '../../meson.build')
+endif
+
subdir('subdir')
subproject('subbie')
diff --git a/test cases/common/220 fs module/subdir/btgt.c b/test cases/common/220 fs module/subdir/btgt.c
new file mode 100644
index 0000000..8479e67
--- /dev/null
+++ b/test cases/common/220 fs module/subdir/btgt.c
@@ -0,0 +1,5 @@
+int
+main(void)
+{
+ return 0;
+}
diff --git a/test cases/common/220 fs module/subdir/meson.build b/test cases/common/220 fs module/subdir/meson.build
index 0cd2475..3ea902c 100644
--- a/test cases/common/220 fs module/subdir/meson.build
+++ b/test cases/common/220 fs module/subdir/meson.build
@@ -4,3 +4,53 @@ assert(fs.is_samepath(meson.project_source_root(), '..'), 'is_samepath not detec
assert(fs.is_samepath(meson.project_build_root(), meson.current_build_dir() / '..'), 'is_samepath not detecting same directory')
assert(fs.is_samepath(subdirfiles[0], 'subdirfile.txt'), 'is_samepath not detecting same directory when using File and str')
+
+# More relative_to to test subdir/builddir components
+
+python3 = find_program('python3')
+build_to_src = fs.relative_to(meson.current_source_dir(), meson.current_build_dir())
+src_to_build = fs.relative_to(meson.current_build_dir(), meson.current_source_dir())
+
+btgt = executable('btgt', 'btgt.c')
+ctgt = custom_target(
+ 'copied-files',
+ command: [
+ python3,
+ '-c',
+ 'import shutil; shutil.copyfile("@INPUT0@", "@OUTPUT0@"); shutil.copyfile("@INPUT1@", "@OUTPUT1@")'
+ ],
+ input: [
+ 'subdirfile.txt',
+ 'meson.build',
+ ],
+ output: [
+ 'subdirfile.txt',
+ 'meson.build',
+ ],
+)
+
+if build_machine.system() == 'windows'
+ # Test that CustomTarget works
+ assert(fs.relative_to('subdirfile.txt', ctgt) == '..\\@0@\\subdirfile.txt'.format(build_to_src))
+ assert(fs.relative_to(ctgt, 'subdirfile.txt') == '..\\@0@\\subdirfile.txt'.format(src_to_build))
+ # Test that CustomTargetIndex works
+ assert(fs.relative_to('meson.build', ctgt[1]) == '..\\@0@\\meson.build'.format(build_to_src))
+ assert(fs.relative_to(ctgt[1], 'meson.build') == '..\\@0@\\meson.build'.format(src_to_build))
+ # Test that BuildTarget works
+ assert(fs.relative_to('subdirfile.txt', btgt) == '..\\@0@\\subdirfile.txt'.format(build_to_src))
+ assert(fs.relative_to(btgt, 'subdirfile.txt') == '..\\@0@\\btgt.exe'.format(src_to_build))
+else
+ # Test that CustomTarget works
+ assert(fs.relative_to('subdirfile.txt', ctgt) == '../@0@/subdirfile.txt'.format(build_to_src))
+ assert(fs.relative_to(ctgt, 'subdirfile.txt') == '../@0@/subdirfile.txt'.format(src_to_build))
+ # Test that CustomTargetIndex works
+ assert(fs.relative_to('meson.build', ctgt[1]) == '../@0@/meson.build'.format(build_to_src))
+ assert(fs.relative_to(ctgt[1], 'meson.build') == '../@0@/meson.build'.format(src_to_build))
+ # Test that BuildTarget works
+ assert(fs.relative_to('subdirfile.txt', btgt) == '../@0@/subdirfile.txt'.format(build_to_src))
+ if host_machine.system() == 'windows'
+ assert(fs.relative_to(btgt, 'subdirfile.txt') == '../@0@/btgt.exe'.format(src_to_build))
+ else
+ assert(fs.relative_to(btgt, 'subdirfile.txt') == '../@0@/btgt'.format(src_to_build))
+ endif
+endif