osxcross/wrapper/unittests/run.bats

556 lines
18 KiB
Plaintext
Raw Normal View History

#!/usr/bin/env bats
#
# Requirements:
# * bats (https://github.com/sstephenson/bats)
# * OSXCRoss >= 0.11 must be in PATH
#
export OSXCROSS_UNIT_TEST=2
export OCDEBUG=1
unset OSXCROSS_NO_EXTENSION_WARNINGS
unset OSXCROSS_NO_X86_64H_DEPLOYMENT_TARGET_WARNING
unset OSXCROSS_GCC_NO_STATIC_RUNTIME
unset MACOSX_DEPLOYMENT_TARGET
unset OSXCROSS_SDKROOT
GCC_INSTALLED=1
command -v o64-clang++ >/dev/null 2>&1 || { echo "OSXCross must be in PATH" 1>&2; exit 1; }
command -v o64-g++ >/dev/null 2>&1 || GCC_INSTALLED=0
if [ $GCC_INSTALLED -eq 1 ]; then
if [ "$(o64-clang++ -foc-run-prog=osxcross-conf 2>/dev/null)" != \
"$(o64-g++ -foc-run-prog=osxcross-conf 2>/dev/null)" ]; then
true
#echo "warning: o64-clang++ and o64-g++ come from different installations; aborting unit testing" 1>&2
GCC_INSTALLED=0
fi
fi
eval $(osxcross-conf)
@test "osxcross-cmp" {
run osxcross-cmp
[ "$status" -ne 0 ]
run osxcross-cmp 10.5 '>' 10.6
[ "$status" -eq 0 ]
[ "$output" = "0" ]
run osxcross-cmp 10.11 '>' 10.10
[ "$status" -eq 0 ]
[ "$output" = "1" ]
run osxcross-cmp 10.11 '>=' 10.12
[ "$status" -eq 0 ]
[ "$output" = "0" ]
run osxcross-cmp 10.11 '<=' 10.12
[ "$status" -eq 0 ]
[ "$output" = "1" ]
run osxcross-cmp 10.10 '==' 10.10
[ "$status" -eq 0 ]
[ "$output" = "1" ]
run osxcross-cmp 10.10 '!=' 10.10
[ "$status" -eq 0 ]
[ "$output" = "0" ]
run osxcross-cmp 10.10 '?' 10.10
[ "$status" -ne 0 ]
run osxcross-cmp 10.10 '>'
[ "$status" -ne 0 ]
}
@test "cross compiler arguments" {
run o64-clang++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ *clang*\ \(clang++\)\ * ]]
[[ "${lines[0]}" == *\ -target\ x86_64-apple-darwin*\ * ]]
[[ "${lines[0]}" == *\ -mlinker-version=$OSXCROSS_LINKER_VERSION\ * ]]
[[ "${lines[0]}" == *\ -isystem\ */clang/*.*/include\ * ]]
[[ "${lines[0]}" == *\ -isysroot\ */MacOSX10.*.sdk\ * ]]
[[ "${lines[0]}" == *\ -stdlib=*++*\ * ]]
[[ "${lines[0]}" == *\ -mmacosx-version-min=10.* ]]
[[ "${lines[0]}" == *\ -arch\ x86_64\ * ]]
[[ "${lines[0]}" != *\ -Wl,-no_compact_unwind\ * ]]
run o32-clang
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ *clang*\ \(clang\)\ * ]]
[[ "${lines[0]}" == *\ -target\ i386-apple-darwin*\ * ]]
if [ $GCC_INSTALLED -eq 1 ]; then
run o64-g++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ *x86_64-apple-darwin*-base-g++*\ \(x86_64-apple-darwin*-g++\)\ * ]]
[[ "${lines[0]}" != *\ -target\ x86_64-apple-darwin*\ * ]]
[[ "${lines[0]}" != *\ -mlinker-version=*\ * ]]
[[ "${lines[0]}" != *\ -isystem\ */clang/*.*/include\ * ]]
[[ "${lines[0]}" != *\ -isysroot\ */MacOSX10.*.sdk\ * ]]
[[ "${lines[0]}" != *\ -stdlib=*++*\ * ]]
[[ "${lines[0]}" == *\ -mmacosx-version-min=10.* ]]
[[ "${lines[0]}" == *\ -m64\ * ]]
[[ "${lines[0]}" == *\ -Wl,-no_compact_unwind\ * ]]
run o32-g++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ *i386-apple-darwin*-base-g++*\ \(i386-apple-darwin*-g++\)\ * ]]
fi
}
@test "OCDEBUG=2" {
OCDEBUG=2 run o64-clang++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *debug:\ detected\ target\ triple:\ *-apple-darwin* ]]
[[ "${lines[1]}" == *debug:\ detected\ compiler:\ * ]]
[[ "${lines[2]}" == *debug:\ detected\ stdlib:\ * ]]
}
@test "argv[0] parsing" {
OSXCROSS_PROG_NAME=x86_64-apple-darwin999999-clang++ run o64-clang++
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *warning:\ this\ wrapper\ was\ built\ for\ target\ \'darwin*\' ]]
[[ "${lines[1]}" == *error:\ cannot\ find\ Mac\ OS\ X\ SDK\ \(expected\ in:\ */SDK/MacOSX10.999995.sdk\) ]]
OSXCROSS_PROG_NAME=x86_64-apple-$OSXCROSS_TARGET-gcc run o64-clang++
[ "$status" -eq 0 ]
[[ -z "$OUTPUT" ]]
OSXCROSS_PROG_NAME=x86_64-apple-$OSXCROSS_TARGET-g++ run o64-clang++
[ "$status" -eq 0 ]
[[ -z "$OUTPUT" ]]
OSXCROSS_PROG_NAME=x86_64-apple-$OSXCROSS_TARGET-cc run o64-clang++
[ "$status" -eq 0 ]
[[ -z "$OUTPUT" ]]
OSXCROSS_PROG_NAME=x86_64-apple-$OSXCROSS_TARGET-c++ run o64-clang++
[ "$status" -eq 0 ]
[[ -z "$OUTPUT" ]]
OSXCROSS_PROG_NAME=i386-apple-$OSXCROSS_TARGET-clang++ run o64-clang++
[ "$status" -eq 0 ]
OSXCROSS_PROG_NAME=i486-apple-$OSXCROSS_TARGET-clang++ run o64-clang++
[ "$status" -eq 0 ]
OSXCROSS_PROG_NAME=i586-apple-$OSXCROSS_TARGET-clang++ run o64-clang++
[ "$status" -eq 0 ]
OSXCROSS_PROG_NAME=i686-apple-$OSXCROSS_TARGET-clang++ run o64-clang++
[ "$status" -eq 0 ]
OSXCROSS_PROG_NAME=i786-apple-$OSXCROSS_TARGET-clang++ run o64-clang++
[ "$status" -ne 0 ]
OSXCROSS_PROG_NAME=armv6-apple-$OSXCROSS_TARGET-clang++ run o64-clang++
[ "$status" -ne 0 ]
OSXCROSS_PROG_NAME=x86_64-mapple-$OSXCROSS_TARGET-clang++ run o64-clang++
[ "$status" -ne 0 ]
OSXCROSS_PROG_NAME=x86_64-apple-ddarwin13-clang++ run o64-clang++
[ "$status" -ne 0 ]
OSXCROSS_PROG_NAME=x86_64-apple--clang++ run o64-clang++
[ "$status" -ne 0 ]
OSXCROSS_PROG_NAME=x86_64-apple-$OSXCROSS_TARGET-foo run o64-clang++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *warning:\ unknown\ compiler\ \'foo\' ]]
OSXCROSS_PROG_NAME= run o64-clang++
[ "$status" -ne 0 ]
OSXCROSS_PROG_NAME=? run o64-clang++
[ "$status" -ne 0 ]
}
@test "command line parsing" {
2015-08-23 22:45:53 +02:00
run o64-clang++ -mmacosx-version-min=10.4 -g -I test1 -march=native -Itest2 -O2 \
-xc-header -x c++-header -stdlib=libstdc++ -stdlib=default -stdlib=libstdc++ \
-otest1 -o test2 foo.cpp -c
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -mmacosx-version-min=10.4*\ * ]]
[[ "${lines[0]}" == *\ -g\ *\ * ]]
[[ "${lines[0]}" == *\ -I\ test1\ * ]]
[[ "${lines[0]}" == *\ -march=native\ * ]]
[[ "${lines[0]}" == *\ -Itest2\ * ]]
[[ "${lines[0]}" == *\ -O2\ * ]]
2015-08-23 22:45:53 +02:00
[[ "${lines[0]}" == *\ -xc-header\ * ]]
[[ "${lines[0]}" == *\ -x\ c++-header\ * ]]
[[ "${lines[0]}" != *\ -stdlib=default\ * ]]
[[ "${lines[0]}" == *\ -otest1\ * ]]
[[ "${lines[0]}" == *\ -o\ test2\ * ]]
[[ "${lines[0]}" == *\ foo.cpp\ * ]]
[[ "${lines[0]}" == *\ -c\ * ]]
}
@test "-mmacosx-version-min/MACOSX_DEPLOYMENT_TARGET" {
run o64-clang++ -mmacosx-version-min=10.10000
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *error:\ targeted\ OS\ X\ version\ must\ be\ \<=\ 10.*.0\ \(SDK\) ]]
run o64-clang++ -mmacosx-version-min=abc
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *warning:\ \'-mmacosx-version-min=\'\ \(0.0.0\ !=\ abc\) ]]
[[ "${lines[1]}" != *\ -mmacosx-version-min=abc\ * ]]
[[ "${lines[1]}" != *\ -mmacosx-version-min=0.0*\ * ]]
run o64-clang++ -mmacosx-version-min=10.0
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *targeted\ OS\ X\ version\ must\ be\ \>=\ 10.4 ]]
run o64-clang++ -mmacosx-version-min=10.0 -mmacosx-version-min=$OSXCROSS_SDK_VERSION
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -mmacosx-version-min=$OSXCROSS_SDK_VERSION.*\ * ]]
MACOSX_DEPLOYMENT_TARGET=10.4 run o64-clang++ -mmacosx-version-min=10.0 -mmacosx-version-min=10.4
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -mmacosx-version-min=10.4.*\ * ]]
MACOSX_DEPLOYMENT_TARGET=10.4 run o64-clang++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -mmacosx-version-min=10.4.*\ * ]]
}
@test "-stdlib/-stdc++/-gstdc++/-foc-use-gcc-libstdc++/-libc++" {
function libcxx()
{
run $@
if [[ "$@" == *-mmacosx-version-min=10.4* ]]; then
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *error:\ libc++\ requires\ \'-mmacosx-version-min=10.7\'\ \(or\ later\) ]]
else
[ "$status" -eq 0 ]
if [[ $1 == *clang++* ]]; then
[[ "${lines[0]}" == *\ -cxx-isystem\ */SDK/MacOSX10.*.sdk/usr/include/c++/v1\ * ]]
[[ "${lines[0]}" == *\ -stdlib=libc++\ * ]]
[[ "${lines[0]}" != *\ -stdlib=libstdc++\ * ]]
else
if [[ "$@" == *-stdlib* ]]; then
[[ "${lines[0]}" == *warning:\ \'-stdlib=\'\ is\ an\ osxcross\ extension* ]]
else
[[ "${lines[0]}" == *\ -nostdinc++\ -nodefaultlibs\ -lc\ -lc++\ -lgcc_s.10.5\ * ]]
[[ "${lines[0]}" == *\ -isystem\ */SDK/MacOSX10.*.sdk/usr/include/c++/v1\ * ]]
fi
fi
fi
}
if [ $(osxcross-cmp $OSXCROSS_SDK_VERSION '>=' 10.7) -eq 1 ]; then
libcxx "o64-clang++" "-stdlib=libc++"
libcxx "o64-clang++-libc++"
libcxx "o64-clang++-libc++" "-mmacosx-version-min=10.4"
if [ $GCC_INSTALLED -eq 1 ]; then
libcxx "o64-g++-libc++"
libcxx "o64-g++" "-stdlib=libc++"
libcxx "o64-g++" "-stdlib=libc++"
fi
fi
function stdcxx()
{
run $@
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -stdlib=libstdc++\ * ]]
[[ "${lines[0]}" != *\ -stdlib=libc++\ * ]]
[[ "${lines[0]}" != *\ -cxx-isystem\ */SDK/MacOSX10.*.sdk/usr/include/c++/v1\ * ]]
[[ "${lines[0]}" == *\ -cxx-isystem\ */SDK/MacOSX10.*.sdk/usr/include/c++/4.*\ * ]]
[[ "${lines[0]}" == *\ -cxx-isystem\ */SDK/MacOSX10.*.sdk/usr/include/c++/4.*/*-apple-darwin*\ * ]]
[[ "${lines[0]}" == *\ -cxx-isystem\ */SDK/MacOSX10.*.sdk/usr/include/c++/4.*/backward\ * ]]
}
stdcxx "o64-clang++" "-stdlib=libstdc++"
stdcxx "o64-clang++-stdc++"
run o64-clang++-stdc++ -stdlib=libc++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *warning:\ ignoring\ \'-stdlib=libc++\' ]]
function gstdcxx()
{
run $@
if [[ "${lines[0]}" == *error:\ \'-foc-use-gcc-libstdc++\'\ requires\ gcc\ to\ be\ installed\ \(./build_gcc.sh\) ]];
then
[ "$status" -ne 0 ]
else
[ "$status" -eq 0 ]
if [[ $1 == *clang++* ]]; then
[[ "${lines[0]}" == *\ -Qunused-arguments\ * ]]
fi
[[ "${lines[0]}" == *\ -cxx-isystem\ */x86_64-apple-darwin*/include/c++/*.*\ * ]]
[[ "${lines[0]}" == *\ -cxx-isystem\ */x86_64-apple-darwin*/include/c++/*.*/x86_64-apple-darwin*\ * ]]
[[ "${lines[0]}" == *\ -cxx-isystem\ */x86_64-apple-darwin*/include/c++/*.*/backward\ * ]]
if [[ $1 == *++ ]]; then
[[ "${lines[0]}" == *\ -nostdinc++\ * ]]
[[ "${lines[0]}" == *\ -stdlib=libstdc++\ * ]]
[[ "${lines[0]}" == *\ -nodefaultlibs\ * ]]
[[ "${lines[0]}" == *\ -Wl,-no_compact_unwind\ * ]]
if [ -n "$OSXCROSS_GCC_NO_STATIC_RUNTIME" ]; then
[[ "${lines[0]}" == *\ -L\ */lib/gcc/x86_64-apple-darwin*/*.*\ * ]]
[[ "${lines[0]}" == *\ -L\ */x86_64-apple-darwin*/lib*\ * ]]
[[ "${lines[0]}" == *\ -l\ stdc++\ * ]]
[[ "${lines[0]}" == *\ -l\ supc++\ * ]]
[[ "${lines[0]}" == *\ -l\ gcc\ * ]]
[[ "${lines[0]}" == *\ -l\ gcc_eh\ * ]]
else
[[ "${lines[0]}" == *\ */x86_64-apple-darwin*/lib*/libstdc++.a\ * ]]
[[ "${lines[0]}" == *\ */x86_64-apple-darwin*/lib*/libsupc++.a\ * ]]
[[ "${lines[0]}" == *\ */lib/gcc/x86_64-apple-darwin*/*.*/libgcc.a\ * ]]
[[ "${lines[0]}" == *\ */lib/gcc/x86_64-apple-darwin*/*.*/libgcc_eh.a\ * ]]
fi
else
[[ "${lines[0]}" != *\ -l\ stdc++\ * ]]
[[ "${lines[0]}" != *\ -l\ supc++\ * ]]
[[ "${lines[0]}" != *\ *libstdc++.a\ * ]]
[[ "${lines[0]}" != *\ *libsupc++.a\ * ]]
fi
fi
}
gstdcxx "o64-clang++" "-foc-use-gcc-libstdc++"
gstdcxx "o64-clang" "-foc-use-gcc-libstdc++"
gstdcxx "o64-clang++-gstdc++" "-foc-use-gcc-libstdc++"
gstdcxx "o32-clang++-gstdc++" "-foc-use-gcc-libstdc++"
OSXCROSS_GCC_NO_STATIC_RUNTIME=1 gstdcxx "o64-clang++" "-foc-use-gcc-libstdc++"
OSXCROSS_GCC_NO_STATIC_RUNTIME=1 gstdcxx "o64-clang++" "-foc-use-gcc-libstdc++" "-m32"
if [ $GCC_INSTALLED -eq 1 ]; then
run o64-g++
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -static-libgcc\ * ]]
[[ "${lines[0]}" == *\ -static-libstdc++\ * ]]
OSXCROSS_GCC_NO_STATIC_RUNTIME=1 run o64-g++
[[ "${lines[0]}" != *\ -static-libgcc\ * ]]
[[ "${lines[0]}" != *\ -static-libstdc++\ * ]]
fi
run o64-clang++ -stdlib=default
[ "$status" -eq 0 ]
[[ "${lines[0]}" != *\ -stdlib=default\ * ]]
run o64-clang++ -stdlib=foo
[ "$status" -eq 1 ]
[[ "${lines[0]}" == *error:\ value\ of\ \'-stdlib=\'\ must\ be\ \'default\',\ \'libc++\'\ or\ \'libstdc++\' ]]
}
2015-08-23 22:45:53 +02:00
@test "precompiled headers" {
function gch()
{
run $@
[ "$status" -eq 0 ]
[[ "${lines[0]}" != *\ -l* ]]
[[ "${lines[0]}" != *\ -Wl,* ]]
2015-08-29 12:47:40 +02:00
[[ "${lines[0]}" != *\ *.a* ]]
2015-08-23 22:45:53 +02:00
}
gch o64-clang -x c-header
2015-08-29 12:47:40 +02:00
if [ $GCC_INSTALLED -eq 1 ]; then
gch o64-clang++-gstdc++ -xc++-header
fi
2015-08-23 22:45:53 +02:00
if [ $GCC_INSTALLED -eq 1 ]; then
gch o64-g++ -xc++-header
fi
}
@test "-arch/-m32/-m64/-m16/-mx32" {
run o64-clang++ -arch x86_64 -arch i386 -arch x86_64 -arch i386
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -arch\ x86_64\ \-arch\ i386\ * ]]
run o64-clang++ -m16
[ "$status" -eq 1 ]
run o64-clang++ -mx32
[ "$status" -eq 1 ]
run o64-clang++ -arch x86_64h
[ "$status" -eq 0 ] || [[ "${lines[0]}" == *error:\ \'x86_64\'\ requires\ Mac\ OS\ X\ SDK\ 10.8\ \(or\ later\) ]]
run o64-clang++ -arch foo
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *warning:\ \'-arch\':\ \unknown\ architecture\ \'foo\' ]]
[[ "${lines[1]}" == *warning:\ \'-arch\':\ \'foo\'\ !=\ \'unknown\' ]]
[[ "${lines[2]}" == *error:\ unsupported\ architecture:\ \'unknown\' ]]
run o64-clang++ -arch armv7
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *error:\ unsupported\ architecture:\ \'armv7\' ]]
run o64-clang++ -arch i386
[ "$status" -eq 0 ]
[[ "${lines[0]}" != *\ -arch\ x86_64\ * ]]
run o64-clang++ -m32
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -arch\ i386\ * ]]
if [ $(osxcross-cmp $OSXCROSS_SDK_VERSION '>=' 10.8) -eq 1 ]; then
run o64-clang++ -arch x86_64h -mmacosx-version-min=10.7
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *warning:\ \'-mmacosx-version-min=\'\ should\ be\ \'\>=\ 10.8\'\ for\ architecture\ \'x86_64h\' ]]
OSXCROSS_NO_X86_64H_DEPLOYMENT_TARGET_WARNING=1 run o64-clang++ -arch x86_64h -mmacosx-version-min=10.7
[ "$status" -eq 0 ]
[[ "${lines[0]}" != *warning:\ * ]]
fi
if [ $GCC_INSTALLED -eq 1 ]; then
run o64-g++ -arch x86_64 -arch i386 -arch x86_64 -arch i386
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *\ -m32\ * ]]
[[ "${lines[0]}" != *\ -m64\ * ]]
[[ "${lines[0]}" != *\ -arch\ * ]]
run o64-g++ -arch x86_64h
[ "$status" -eq 1 ]
[[ "${lines[0]}" == *error:\ gcc\ does\ not\ support\ architecture\ \'x86_64h\' ]]
fi
}
@test "bad include path warning" {
if [ $(uname -s) == "Darwin" ]; then
skip "Not supported"
fi
run o64-clang++ -I/usr/..////////usr//include
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *warning:\ possibly\ dangerous\ include\ path\ specified:\ \'-I\ /usr/..////////usr//include\'\ \(/usr/include\) ]]
[[ "${lines[1]}" == *info:\ you\ can\ silence\ this\ warning\ via\ \'OSXCROSS_NO_INCLUDE_PATH_WARNINGS=1\'\ \(env\)* ]]
[[ "${lines[2]}" == *\ -I/usr/..////////usr//include\ * ]]
if [ $GCC_INSTALLED -eq 1 ]; then
OSXCROSS_NO_INCLUDE_PATH_WARNINGS=1 run o64-g++ -I/usr/include
[ "$status" -eq 0 ]
[[ "${lines[0]}" != *warning:\ * ]]
fi
}
@test "OSXCROSS_MP_INC" {
if [ -d "${OSXCROSS_TARGET_DIR}/macports" ]; then
function macports()
{
run $@
[ "$status" -eq 0 ]
if [ -d "${OSXCROSS_TARGET_DIR}/macports/pkgs/opt/local/include" ]; then
[[ "${lines[0]}" == *\ -isystem\ */macports/pkgs/opt/local/include\ * ]]
fi
if [ -d "${OSXCROSS_TARGET_DIR}/macports/pkgs/opt/local/lib" ]; then
[[ "${lines[0]}" == *\ -L\ */macports/pkgs/opt/local/lib\ * ]]
fi
if [ -d "${OSXCROSS_TARGET_DIR}/macports/pkgs/opt/local/Library/Frameworks" ]; then
[[ "${lines[0]}" == *\ -iframework\ */macports/pkgs/opt/local/Library/Frameworks\ * ]]
fi
if [[ $1 == *clang++* ]]; then
[[ "${lines[0]}" == *\ -Qunused-arguments\ * ]]
fi
}
OSXCROSS_MP_INC=1 macports o64-clang++
if [ $GCC_INSTALLED -eq 1 ]; then
OSXCROSS_MP_INC=1 macports o64-g++
fi
fi
}
@test "OSXCROSS_SDKROOT" {
OSXCROSS_SDKROOT=/dev/null/MacOSX10.10.sdk run o64-clang++
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *error:\ cannot\ find\ Mac\ OS\ X\ SDK\ \(expected\ in:\ /dev/null/MacOSX10.10.sdk\) ]]
OSXCROSS_SDKROOT=$OSXCROSS_SDK run o64-clang++
[ "$status" -eq 0 ]
}
@test "xcrun" {
run xcrun -sdk
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *error:\ too\ few\ arguments\ for\ \'-sdk\' ]]
run xcrun -sdk /
[ "$status" -eq 0 ]
run xcrun -sdk /dev/null
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *error:\ xcrun:\ \'-sdk\':\ expected\ Mac\ OS\ X\ SDK ]]
OSXCROSS_SDKROOT=/dev/null/MacOSX10.9.sdk SDKROOT=/dev/null/MacOSX10.10.sdk run xcrun
[ "$status" -ne 0 ]
[[ "${lines[0]}" == *error:\ xcrun:\ \'-sdk\':\ directory\ \'/dev/null/MacOSX10.10.sdk\'\ does\ not\ exist ]]
run xcrun -sdk $OSXCROSS_SDK clang
[ "$status" -eq 0 ]
[[ "${lines[0]}" == *debug:\ \<--\ * ]]
run xcrun -f clang
[ "$status" -eq 0 ]
[[ "${lines[0]}" == */bin/x86_64-apple-darwin*-clang ]]
run xcrun -find /usr/bin/ld
[ "$status" -eq 0 ]
[[ "${lines[0]}" == */bin/x86_64-apple-darwin*-ld ]]
run xcrun -show-sdk-path -show-sdk-version
[ "$status" -eq 0 ]
[ "${lines[0]}" == "$OSXCROSS_SDK" ]
[ "${lines[1]}" == "$OSXCROSS_SDK_VERSION" ]
xcrun_log=1 run xcrun clang
[ "$status" -eq 0 ]
[[ "${lines[0]}" == */bin/x86_64-apple-darwin*-clang ]]
run xcrun -log -l clang
[ "$status" -eq 0 ]
[[ "${lines[1]}" == *debug:\ \<--\ * ]]
run xcrun -run clang
[ "$status" -eq 0 ]
run xcrun -r clang
[ "$status" -eq 0 ]
run xcrun -foo
[ "$status" -ne 0 ]
run xcrun -k -kill-cache -n -no-cache -toolchain / -v -verbose -h -help
[ "$status" -eq 0 ]
}
@test "sw_vers" {
run sw_vers
[ "$status" -eq 0 ]
[ "${lines[0]}" == "ProductName: Mac OS X" ]
[ "${lines[1]}" == "ProductVersion: $OSXCROSS_OSX_VERSION_MIN" ]
[[ "${lines[2]}" == BuildVersion:\ \ \ * ]]
run sw_vers -productName
[ "$status" -eq 0 ]
[ "${lines[0]}" == "Mac OS X" ]
OSXCROSS_SW_VERS_OSX_VERSION=10.15 MACOSX_DEPLOYMENT_TARGET=10.16 run sw_vers -productVersion
[ "$status" -eq 0 ]
[ "${lines[0]}" == "10.15" ]
MACOSX_DEPLOYMENT_TARGET=10.16 run sw_vers -productVersion
[ "$status" -eq 0 ]
[ "${lines[0]}" == "10.16" ]
run sw_vers -buildVersion
[ "$status" -eq 0 ]
[[ "${lines[0]}" == * ]]
run sw_vers -foo
[ "$status" -ne 0 ]
}