From 89c3a2dfdf75fb536870e17531e6f8161fa05686 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Wed, 20 Sep 2023 18:06:16 +0300 Subject: Use bsdtar instead of tar in tests on Windows to sidestep msys-related issues --- tests/pkg-build.testscript | 19 ++++++++----------- tests/remote-git.testscript | 4 ++++ tests/rep-info.testscript | 4 ++++ 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/tests/pkg-build.testscript b/tests/pkg-build.testscript index bd37c12..be5a9f8 100644 --- a/tests/pkg-build.testscript +++ b/tests/pkg-build.testscript @@ -490,7 +490,7 @@ end config_cxx = [cmdline] config.cxx=$quote($recall($cxx.path) $cxx.config.mode, true) -tar = [cmdline] tar (!$posix ? --force-local : ) +tar = [cmdline] ($posix ? tar : bsdtar) cfg_create += 2>! cfg_link += 2>! @@ -1887,10 +1887,7 @@ test.arguments += --sys-no-query : Test build scenarios described in : https://github.com/conan-io/conan/issues/9547. : - : Note: using tar on Windows is a bit hairy (needs --force-local, etc), so - : we do not run this test on Windows. - : - if ($posix && !$remote) + if (!$remote) { +mkdir 1/ @@ -1900,10 +1897,10 @@ test.arguments += --sys-no-query # r = 1/t9-1 +cp -r $rep/t9 $r && \ - tar xzf $r/libbar-1.0.0.tar.gz -C $r && \ + $tar xzf $r/libbar-1.0.0.tar.gz -C $r && \ mv $r/libbar-1.0.0 $r/libbar-2.0.0 && \ sed -i -e 's/(version:).+/\1 2.0.0/' $r/libbar-2.0.0/manifest && \ - tar cfz $r/libbar-2.0.0.tar.gz -C $r libbar-2.0.0 &$r/libbar-2.0.0.tar.gz && \ + $tar cfz $r/libbar-2.0.0.tar.gz -C $r libbar-2.0.0 &$r/libbar-2.0.0.tar.gz && \ rm -r $r/libbar-2.0.0 && \ $rep_create $r &$r/packages.manifest @@ -1912,10 +1909,10 @@ test.arguments += --sys-no-query # r = 1/t9-2 +cp -r 1/t9-1 $r && \ - tar xzf $r/libbaz-1.0.0.tar.gz -C $r && \ + $tar xzf $r/libbaz-1.0.0.tar.gz -C $r && \ mv $r/libbaz-1.0.0 $r/libbaz-2.0.0 && \ sed -i -e 's/(version:).+/\1 2.0.0/' -e 's/(depends: libbar).+/\1 ^2.0.0/' $r/libbaz-2.0.0/manifest && \ - tar cfz $r/libbaz-2.0.0.tar.gz -C $r libbaz-2.0.0 &$r/libbaz-2.0.0.tar.gz && \ + $tar cfz $r/libbaz-2.0.0.tar.gz -C $r libbaz-2.0.0 &$r/libbaz-2.0.0.tar.gz && \ rm -r $r/libbaz-2.0.0 && \ $rep_create $r &$r/packages.manifest @@ -1924,10 +1921,10 @@ test.arguments += --sys-no-query # r = 1/t9-3 +cp -r 1/t9-2 $r && \ - tar xzf $r/libbox-1.0.0.tar.gz -C $r && \ + $tar xzf $r/libbox-1.0.0.tar.gz -C $r && \ mv $r/libbox-1.0.0 $r/libbox-1.1.0 && \ sed -i -e 's/(version:).+/\1 1.1.0/' $r/libbox-1.1.0/manifest && \ - tar cfz $r/libbox-1.1.0.tar.gz -C $r libbox-1.1.0 &$r/libbox-1.1.0.tar.gz && \ + $tar cfz $r/libbox-1.1.0.tar.gz -C $r libbox-1.1.0 &$r/libbox-1.1.0.tar.gz && \ rm -r $r/libbox-1.1.0 && \ $rep_create $r &$r/packages.manifest diff --git a/tests/remote-git.testscript b/tests/remote-git.testscript index b4ed398..377277d 100644 --- a/tests/remote-git.testscript +++ b/tests/remote-git.testscript @@ -72,6 +72,10 @@ end # will use the same options as we do for unpacking of package archives (see # pkg-unpack.cxx). # +# Note that on Windows we still use tar rather than bsdtar here, since the +# later fails for dangling symlinks and we have such symlinks in the +# repository archives which are used for testing. +# git_extract = [cmdline] \ ($cxx.target.class != 'windows' \ ? tar -C $out_git -xf \ diff --git a/tests/rep-info.testscript b/tests/rep-info.testscript index c5f2d3a..2c02c8f 100644 --- a/tests/rep-info.testscript +++ b/tests/rep-info.testscript @@ -132,6 +132,10 @@ $* --name $rep/testing >"pkg:build2.org/rep-info/testing ($rep/testing)" : dir : { + # Note that on Windows we still use tar rather than bsdtar here, since + # the later fails for dangling symlinks and we have such symlinks in + # this repository archive. + # tar ($posix ? : --force-local) -xf $src/git/libbar.tar &state0/***; $* --type dir "state0/libbar.git" >>~%EOO%d; -- cgit v1.1