[lit] Add argument check: --timeout must be non-negative integer
[llvm-core.git] / test / tools / llvm-ar / count.test
blobfa6141ff13f39162566acd5b9390a9eea4b609cb
1 # Test the 'N' count parameter.
3 # Get a temp clean cwd to extract into.
4 RUN: rm -rf %t && mkdir -p %t && cd %t
6 RUN: mkdir -p %t/x %t/y %t/z
7 RUN: echo hello > %t/x/foo.txt
8 RUN: echo cool  > %t/y/foo.txt
9 RUN: echo world > %t/z/foo.txt
10 RUN: echo fizz   > %t/x/bar.txt
11 RUN: echo buzz   > %t/y/bar.txt
12 RUN: echo fizbuz > %t/z/bar.txt
13 RUN: llvm-ar rc %t/archive.a %t/x/foo.txt %t/y/foo.txt %t/z/foo.txt \
14 RUN:     %t/x/bar.txt %t/y/bar.txt %t/z/bar.txt
15 RUN: llvm-ar t %t/archive.a | FileCheck %s --check-prefix=LIST-MEMBERS
17 # Make sure we set it up correctly.
18 LIST-MEMBERS:      foo.txt
19 LIST-MEMBERS-NEXT: foo.txt
20 LIST-MEMBERS-NEXT: foo.txt
21 LIST-MEMBERS-NEXT: bar.txt
22 LIST-MEMBERS-NEXT: bar.txt
23 LIST-MEMBERS-NEXT: bar.txt
25 # Must be a number.
26 RUN: not llvm-ar xN abc %t/archive.a foo.txt 2>&1 | FileCheck %s --check-prefix=ERR-NOT-NUM
27 RUN: not llvm-ar xN 0x1 %t/archive.a foo.txt 2>&1 | FileCheck %s --check-prefix=ERR-NOT-NUM
28 # Only three members named foo, so 1 <= N <= 3.
29 RUN: not llvm-ar xN 0 %t/archive.a foo.txt 2>&1 | FileCheck %s --check-prefix=ERR-NOT-POS
30 RUN: not llvm-ar xN 4 %t/archive.a foo.txt 2>&1 | FileCheck %s --check-prefix=ERR-NOT-FOUND
31 # N only applies to x/d.
32 RUN: not llvm-ar rN 1 %t/archive.a foo.txt 2>&1 | FileCheck %s --check-prefix=ERR-BAD-OP
34 ERR-NOT-NUM:   error: value for [count] must be numeric
35 ERR-NOT-POS:   error: value for [count] must be positive
36 ERR-BAD-OP:    error: the 'N' modifier can only be specified with the 'x' or 'd' operations
37 ERR-NOT-FOUND: error: 'foo.txt' was not found
39 # Extract individual items.
41 RUN: rm -f foo.txt bar.txt
42 RUN: llvm-ar xN 1 %t/archive.a foo.txt bar.txt
43 RUN: cat %t/foo.txt | FileCheck %s --check-prefix=FOO-1
44 RUN: cat %t/bar.txt | FileCheck %s --check-prefix=BAR-1
46 RUN: rm -f foo.txt bar.txt
47 RUN: llvm-ar xN 2 %t/archive.a foo.txt bar.txt
48 RUN: cat %t/foo.txt | FileCheck %s --check-prefix=FOO-2
49 RUN: cat %t/bar.txt | FileCheck %s --check-prefix=BAR-2
51 RUN: rm -f foo.txt bar.txt
52 RUN: llvm-ar xN 3 %t/archive.a foo.txt bar.txt
53 RUN: cat %t/foo.txt | FileCheck %s --check-prefix=FOO-3
54 RUN: cat %t/bar.txt | FileCheck %s --check-prefix=BAR-3
56 # Delete individual items.
58 # Deleting the second member named foo means the new second member of the
59 # archive is what used to be the third element.
60 RUN: rm -f foo.txt bar.txt
61 RUN: llvm-ar dN 2 %t/archive.a foo.txt
62 RUN: llvm-ar xN 2 %t/archive.a foo.txt bar.txt
63 RUN: cat %t/foo.txt | FileCheck %s --check-prefix=FOO-3
64 RUN: cat %t/bar.txt | FileCheck %s --check-prefix=BAR-2
66 # Deleting the first member from *both* archives means the new first member
67 # named foo is the what used to be the third member, and the new first member
68 # named bar is what used to be the second member.
69 RUN: rm -f foo.txt bar.txt
70 RUN: llvm-ar dN 1 %t/archive.a foo.txt bar.txt
71 RUN: llvm-ar xN 1 %t/archive.a foo.txt bar.txt
72 RUN: cat %t/foo.txt | FileCheck %s --check-prefix=FOO-3
73 RUN: cat %t/bar.txt | FileCheck %s --check-prefix=BAR-2
75 FOO-1: hello
76 FOO-2: cool
77 FOO-3: world
78 BAR-1: fizz
79 BAR-2: buzz
80 BAR-3: fizbuz