The tests updated by this commit are expected to fail when targetting a
darwin platform. As they rely on target detection based on the host,
this is currently checked by using the `XFAIL: system-darwin`
annotation.
This approach becomes a problem when trying to run such tests on a
cross-compiling build of clang on a darwin platform. When no darwin
targets are included in the build, the XFAIL will still apply even
though the target used is not related to the darwin platform, and the
tests will unexpectedly pass.
To fix this issue, this patch updates the condition used by the tests'
XFAIL annotation to `target={{.*}}-darwin{{.*}}`, ensuring they only are
xfailed when the relevant target is used.
55 lines
2.1 KiB
Plaintext
55 lines
2.1 KiB
Plaintext
## Test extract operation.
|
|
# XFAIL: target={{.*}}-darwin{{.*}}
|
|
|
|
# RUN: rm -rf %t && mkdir -p %t/extracted/
|
|
|
|
## Extracting from an empty archive should not warn or error:
|
|
# RUN: llvm-ar cr --format=gnu %t/empty.a
|
|
# RUN: llvm-ar xv %t/empty.a 2>&1 | count 0
|
|
|
|
# RUN: echo filea > %t/a.txt
|
|
# RUN: echo fileb > %t/b.txt
|
|
# RUN: llvm-ar rc %t/archive.a %t/a.txt %t/b.txt
|
|
|
|
## Single member:
|
|
# RUN: cd %t/extracted && llvm-ar xv %t/archive.a a.txt | FileCheck %s --check-prefix=A
|
|
# RUN: diff %t/a.txt %t/extracted/a.txt
|
|
# A: x - a.txt
|
|
|
|
## All members:
|
|
# RUN: rm %t/extracted/a.txt
|
|
# RUN: cd %t/extracted && llvm-ar xv %t/archive.a | FileCheck %s --check-prefix=AB
|
|
# RUN: diff %t/a.txt %t/extracted/a.txt
|
|
# RUN: diff %t/b.txt %t/extracted/b.txt
|
|
# AB: x - a.txt
|
|
# AB: x - b.txt
|
|
|
|
## Thin archive
|
|
# RUN: llvm-ar Trc %t/thin-archive.a
|
|
# RUN: not llvm-ar x %t/thin-archive.a 2>&1 | FileCheck %s --check-prefix=THIN
|
|
# THIN: extracting from a thin archive is not supported
|
|
|
|
## No output if 'v' is not specified.
|
|
# RUN: rm a.txt b.txt
|
|
# RUN: llvm-ar x %t/archive.a 2>&1 | count 0
|
|
# RUN: diff %t/a.txt %t/extracted/a.txt
|
|
# RUN: diff %t/b.txt %t/extracted/b.txt
|
|
|
|
## --output specifies the directory to extract archive members to. `1/2` is created by llvm-ar.
|
|
# RUN: llvm-ar --output=1/2 x %t/archive.a
|
|
# RUN: diff %t/a.txt %t/extracted/1/2/a.txt
|
|
# RUN: diff %t/b.txt %t/extracted/1/2/b.txt
|
|
|
|
## --output can be used with an absolute path and can be specified elsewhere on the command line.
|
|
# RUN: rm 1/2/a.txt
|
|
# RUN: llvm-ar xv %t/archive.a a.txt --output %t/extracted/1/2/../2 | FileCheck %s --check-prefix=OUTPUT-A
|
|
# RUN: diff %t/a.txt %t/extracted/1/2/a.txt
|
|
# OUTPUT-A: x - {{.*}}extracted{{.*}}a.txt
|
|
|
|
# RUN: not llvm-ar x --output=%t/a.txt %t/archive.a 2>&1 | FileCheck %s --check-prefix=OUTPUT-NOTDIR
|
|
# RUN: not llvm-ar x --output=%t/b.txt/a.txt %t/archive.a 2>&1 | FileCheck %s --check-prefix=OUTPUT-NOTDIR
|
|
# OUTPUT-NOTDIR: error: '{{.*}}a.txt' is not a directory
|
|
|
|
# RUN: not llvm-ar rc --output=1/2 %t/archive.a %t/a.txt 2>&1 | FileCheck %s --check-prefix=OUTPUT-ERR
|
|
# OUTPUT-ERR: error: --output is only applicable to the 'x' operation
|