From 407f5fdc78abf24838481d400fa76d5d31cb4e71 Mon Sep 17 00:00:00 2001 From: huangqinjin Date: Tue, 3 Dec 2024 16:19:14 +0800 Subject: [PATCH] test: Add tests for vcvars batch files --- test/test-vcvars.sh | 126 ++++++++++++++++++++++++++++++++++++++++++++ test/test.sh | 1 + 2 files changed, 127 insertions(+) create mode 100755 test/test-vcvars.sh diff --git a/test/test-vcvars.sh b/test/test-vcvars.sh new file mode 100755 index 0000000..0655500 --- /dev/null +++ b/test/test-vcvars.sh @@ -0,0 +1,126 @@ +#!/bin/bash +# +# Copyright (c) 2024 Huang Qinjin +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +. "${0%/*}/test.sh" + +host=x64 +if [ "$(uname -m)" = "aarch64" ]; then + host=arm64 +fi + +BASE=$(. "${BIN}msvcenv.sh" && echo $BASE) +ARCH=$(. "${BIN}msvcenv.sh" && echo $ARCH) + +if [ "$host" = "$ARCH" ]; then + vcvars_arch=${ARCH} +else + vcvars_arch=${host}_${ARCH} +fi + +cat >test-$vcvars_arch.bat <> $vcvars_arch-env.txt +exit /B 0 +EOF + + +TestVariable() { + if [ "${!1}" != "$2" ]; then + echo "ERROR: $1=\"${!1}\"" + return 1 + fi + return 0 +} + +TestUnixPath() { + if [ "$(readlink -f "${!1}")" != "$(readlink -f "$2")" ]; then + echo "ERROR: $1=\"${!1}\"" + return 1 + fi + return 0 +} + +EXEC "" WINEDEBUG=-all $(command -v wine64 || command -v wine) cmd /c test-$vcvars_arch.bat || EXIT +tr -d '\r' <$vcvars_arch-env.txt >$vcvars_arch-env +. $vcvars_arch-env + +SDKBASE=$(. "${BIN}msvcenv.sh" && echo $SDKBASE) +SDKBASE=${SDKBASE//\\//} +SDKBASE=${SDKBASE#z:} + +MSVCDIR=$(. "${BIN}msvcenv.sh" && echo $MSVCDIR) +MSVCDIR=${MSVCDIR//\\//} +MSVCDIR=${MSVCDIR#z:} + +EXEC "" TestUnixPath VSINSTALLDIR $(. "${BIN}msvcenv.sh" && echo $BASE_UNIX) +EXEC "" TestUnixPath VCToolsInstallDir $MSVCDIR +EXEC "" TestUnixPath WindowsSdkDir $SDKBASE +EXEC "" TestVariable WindowsSDKVersion $(. "${BIN}msvcenv.sh" && echo $SDKVER) +EXEC "" TestUnixPath UniversalCRTSdkDir $SDKBASE +EXEC "" TestUnixPath UCRTVersion $(. "${BIN}msvcenv.sh" && echo $SDKVER) +EXEC "" TestUnixPath cl_exe $(. "${BIN}msvcenv.sh" && echo $BINDIR)/cl.exe +EXEC "" TestUnixPath rc_exe $(. "${BIN}msvcenv.sh" && echo $SDKBINDIR)/rc.exe +EXEC "" TestUnixPath MSBuild_exe $(. "${BIN}msvcenv.sh" && echo $MSBUILDBINDIR)/MSBuild.exe + +EXIT diff --git a/test/test.sh b/test/test.sh index 1825216..8b678c8 100755 --- a/test/test.sh +++ b/test/test.sh @@ -97,6 +97,7 @@ for arch in x86 x64 arm arm64; do EXEC "" BIN=$BIN ./test-asm.sh EXEC "" BIN=$BIN ./test-midl.sh EXEC "" BIN=$BIN ./test-mc.sh + EXEC "" BIN=$BIN ./test-vcvars.sh EXEC "" BIN=$BIN ./test-cmake.sh EXEC "" BIN=$BIN ./test-meson.sh