diff options
| author | Tristan Partin <tristan@partin.io> | 2023-08-18 00:04:12 -0500 |
|---|---|---|
| committer | Xavier Claessens <xclaesse@gmail.com> | 2023-08-18 07:46:08 -0400 |
| commit | 946a3561c2f45b2e522f695a08516333cf7ec9d4 (patch) | |
| tree | 84a7f16b6da32300686ee0554d440317aca92985 /test cases/common | |
| parent | 22f90fd469a2742a2bb2d4f79e4a585a525ea934 (diff) | |
| download | meson-946a3561c2f45b2e522f695a08516333cf7ec9d4.tar.gz | |
Revert "Revert "Add fs.relative_to()""
This reverts commit 84c8905d527893bedc673e8a036b8b2ec89368b4.
Fixed the cygwin failure...
Diffstat (limited to 'test cases/common')
| -rw-r--r-- | test cases/common/220 fs module/meson.build | 25 | ||||
| -rw-r--r-- | test cases/common/220 fs module/subdir/btgt.c | 5 | ||||
| -rw-r--r-- | test cases/common/220 fs module/subdir/meson.build | 30 |
3 files changed, 59 insertions, 1 deletions
diff --git a/test cases/common/220 fs module/meson.build b/test cases/common/220 fs module/meson.build index b860fc8a3..7f113d66e 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 000000000..8479e67d1 --- /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 0cd2475e9..6e2c8be50 100644 --- a/test cases/common/220 fs module/subdir/meson.build +++ b/test cases/common/220 fs module/subdir/meson.build @@ -4,3 +4,33 @@ 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 + +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 = fs.copyfile('subdirfile.txt') + +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('subdirfile.txt', ctgt[0]) == '..\\@0@\\subdirfile.txt'.format(build_to_src)) + assert(fs.relative_to(ctgt[0], 'subdirfile.txt') == '..\\@0@\\subdirfile.txt'.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@\\@1@'.format(src_to_build, fs.name(btgt.full_path()))) +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('subdirfile.txt', ctgt[0]) == '../@0@/subdirfile.txt'.format(build_to_src)) + assert(fs.relative_to(ctgt[0], 'subdirfile.txt') == '../@0@/subdirfile.txt'.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@/@1@'.format(src_to_build, fs.name(btgt.full_path()))) +endif |
