test-remove.t
536 lines
| 17.7 KiB
| text/troff
|
Tads3Lexer
/ tests / test-remove.t
Nicolas Dumazet
|
r12099 | $ remove() { | ||
> hg rm $@ | ||||
Simon Heimberg
|
r19381 | > echo "exit code: $?" | ||
Nicolas Dumazet
|
r12099 | > hg st | ||
> # do not use ls -R, which recurses in .hg subdirs on Mac OS X 10.5 | ||||
> find . -name .hg -prune -o -type f -print | sort | ||||
> hg up -C | ||||
> } | ||||
timeless
|
r28606 | $ cat >> $HGRCPATH <<EOF | ||
> [progress] | ||||
> disable=False | ||||
> assume-tty = 1 | ||||
> delay = 0 | ||||
> # set changedelay really large so we don't see nested topics | ||||
> changedelay = 30000 | ||||
> format = topic bar number | ||||
> refresh = 0 | ||||
> width = 60 | ||||
> EOF | ||||
Nicolas Dumazet
|
r12099 | $ hg init a | ||
$ cd a | ||||
$ echo a > foo | ||||
file not managed | ||||
$ remove foo | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | not removing foo: file is untracked | ||
Martin Geisler
|
r12130 | exit code: 1 | ||
Nicolas Dumazet
|
r12099 | ? foo | ||
./foo | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg add foo | ||||
$ hg commit -m1 | ||||
the table cases | ||||
00 state added, options none | ||||
$ echo b > bar | ||||
$ hg add bar | ||||
$ remove bar | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
skipping [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
timeless
|
r29963 | not removing bar: file has been marked for add (use 'hg forget' to undo add) | ||
Martin Geisler
|
r12130 | exit code: 1 | ||
Nicolas Dumazet
|
r12099 | A bar | ||
./bar | ||||
./foo | ||||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
01 state clean, options none | ||||
$ remove foo | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Martin Geisler
|
r12130 | exit code: 0 | ||
Nicolas Dumazet
|
r12099 | R foo | ||
? bar | ||||
./bar | ||||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
02 state modified, options none | ||||
$ echo b >> foo | ||||
$ remove foo | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
skipping [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | not removing foo: file is modified (use -f to force removal) | ||
Martin Geisler
|
r12130 | exit code: 1 | ||
Nicolas Dumazet
|
r12099 | M foo | ||
? bar | ||||
./bar | ||||
./foo | ||||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
03 state missing, options none | ||||
$ rm foo | ||||
$ remove foo | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Martin Geisler
|
r12130 | exit code: 0 | ||
Nicolas Dumazet
|
r12099 | R foo | ||
? bar | ||||
./bar | ||||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
10 state added, options -f | ||||
$ echo b > bar | ||||
$ hg add bar | ||||
$ remove -f bar | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Martin Geisler
|
r12130 | exit code: 0 | ||
Nicolas Dumazet
|
r12099 | ? bar | ||
./bar | ||||
./foo | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ rm bar | ||||
11 state clean, options -f | ||||
$ remove -f foo | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Martin Geisler
|
r12130 | exit code: 0 | ||
Nicolas Dumazet
|
r12099 | R foo | ||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
12 state modified, options -f | ||||
$ echo b >> foo | ||||
$ remove -f foo | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Martin Geisler
|
r12130 | exit code: 0 | ||
Nicolas Dumazet
|
r12099 | R foo | ||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
13 state missing, options -f | ||||
$ rm foo | ||||
$ remove -f foo | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Martin Geisler
|
r12130 | exit code: 0 | ||
Nicolas Dumazet
|
r12099 | R foo | ||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
20 state added, options -A | ||||
$ echo b > bar | ||||
$ hg add bar | ||||
$ remove -A bar | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
skipping [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Mads Kiilerich
|
r18053 | not removing bar: file still exists | ||
Martin Geisler
|
r12130 | exit code: 1 | ||
Nicolas Dumazet
|
r12099 | A bar | ||
./bar | ||||
./foo | ||||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
pavanpc@fb.com
|
r35120 | 21 state clean, options -Av | ||
Nicolas Dumazet
|
r12099 | |||
pavanpc@fb.com
|
r35120 | $ remove -Av foo | ||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
skipping [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Mads Kiilerich
|
r18053 | not removing foo: file still exists | ||
Martin Geisler
|
r12130 | exit code: 1 | ||
Nicolas Dumazet
|
r12099 | ? bar | ||
./bar | ||||
./foo | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
pavanpc@fb.com
|
r35120 | 22 state modified, options -Av | ||
Nicolas Dumazet
|
r12099 | |||
$ echo b >> foo | ||||
pavanpc@fb.com
|
r35120 | $ remove -Av foo | ||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
skipping [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Mads Kiilerich
|
r18053 | not removing foo: file still exists | ||
Martin Geisler
|
r12130 | exit code: 1 | ||
Nicolas Dumazet
|
r12099 | M foo | ||
? bar | ||||
./bar | ||||
./foo | ||||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
23 state missing, options -A | ||||
$ rm foo | ||||
$ remove -A foo | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Martin Geisler
|
r12130 | exit code: 0 | ||
Nicolas Dumazet
|
r12099 | R foo | ||
? bar | ||||
./bar | ||||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
30 state added, options -Af | ||||
$ echo b > bar | ||||
$ hg add bar | ||||
$ remove -Af bar | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Martin Geisler
|
r12130 | exit code: 0 | ||
Nicolas Dumazet
|
r12099 | ? bar | ||
./bar | ||||
./foo | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ rm bar | ||||
31 state clean, options -Af | ||||
$ remove -Af foo | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Martin Geisler
|
r12130 | exit code: 0 | ||
Nicolas Dumazet
|
r12099 | R foo | ||
./foo | ||||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
32 state modified, options -Af | ||||
$ echo b >> foo | ||||
$ remove -Af foo | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Martin Geisler
|
r12130 | exit code: 0 | ||
Nicolas Dumazet
|
r12099 | R foo | ||
./foo | ||||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
33 state missing, options -Af | ||||
$ rm foo | ||||
$ remove -Af foo | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Martin Geisler
|
r12130 | exit code: 0 | ||
Nicolas Dumazet
|
r12099 | R foo | ||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
test some directory stuff | ||||
$ mkdir test | ||||
$ echo a > test/foo | ||||
$ echo b > test/bar | ||||
$ hg ci -Am2 | ||||
adding test/bar | ||||
adding test/foo | ||||
dir, options none | ||||
$ rm test/bar | ||||
$ remove test | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
deleting [=====================> ] 1/2\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
deleting [===========================================>] 2/2\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Matt Harbison
|
r35394 | removing test/bar | ||
removing test/foo | ||||
Martin Geisler
|
r12130 | exit code: 0 | ||
Nicolas Dumazet
|
r12099 | R test/bar | ||
R test/foo | ||||
./foo | ||||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 2/2\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
dir, options -f | ||||
$ rm test/bar | ||||
$ remove -f test | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
deleting [=====================> ] 1/2\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
deleting [===========================================>] 2/2\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Matt Harbison
|
r35394 | removing test/bar | ||
removing test/foo | ||||
Martin Geisler
|
r12130 | exit code: 0 | ||
Nicolas Dumazet
|
r12099 | R test/bar | ||
R test/foo | ||||
./foo | ||||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 2/2\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
pavanpc@fb.com
|
r35120 | dir, options -Av | ||
Nicolas Dumazet
|
r12099 | |||
$ rm test/bar | ||||
pavanpc@fb.com
|
r35120 | $ remove -Av test | ||
\r (no-eol) (esc) | ||||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
skipping [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Matt Harbison
|
r35394 | removing test/bar | ||
not removing test/foo: file still exists | ||||
pavanpc@fb.com
|
r35120 | exit code: 1 | ||
R test/bar | ||||
./foo | ||||
./test/foo | ||||
\r (no-eol) (esc) | ||||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
dir, options -A <dir> | ||||
$ rm test/bar | ||||
Nicolas Dumazet
|
r12099 | $ remove -A test | ||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
skipping [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Matt Harbison
|
r35394 | removing test/bar | ||
pavanpc@fb.com
|
r35120 | exit code: 1 | ||
R test/bar | ||||
./foo | ||||
./test/foo | ||||
\r (no-eol) (esc) | ||||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
without any files/dirs, options -A | ||||
$ rm test/bar | ||||
$ remove -A | ||||
\r (no-eol) (esc) | ||||
skipping [=====================> ] 1/2\r (no-eol) (esc) | ||||
skipping [===========================================>] 2/2\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Matt Harbison
|
r35394 | removing test/bar | ||
Martin Geisler
|
r12130 | exit code: 1 | ||
Nicolas Dumazet
|
r12099 | R test/bar | ||
./foo | ||||
./test/foo | ||||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
dir, options -Af | ||||
$ rm test/bar | ||||
$ remove -Af test | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
deleting [=====================> ] 1/2\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
deleting [===========================================>] 2/2\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Matt Harbison
|
r35394 | removing test/bar | ||
removing test/foo | ||||
Martin Geisler
|
r12130 | exit code: 0 | ||
Nicolas Dumazet
|
r12099 | R test/bar | ||
R test/foo | ||||
./foo | ||||
./test/foo | ||||
timeless
|
r28606 | \r (no-eol) (esc) | ||
updating [===========================================>] 2/2\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Nicolas Dumazet
|
r12099 | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
test remove dropping empty trees (issue1861) | ||||
$ mkdir -p issue1861/b/c | ||||
$ echo x > issue1861/x | ||||
$ echo y > issue1861/b/c/y | ||||
$ hg ci -Am add | ||||
adding issue1861/b/c/y | ||||
adding issue1861/x | ||||
$ hg rm issue1861/b | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Matt Harbison
|
r35394 | removing issue1861/b/c/y | ||
Nicolas Dumazet
|
r12099 | $ hg ci -m remove | ||
$ ls issue1861 | ||||
x | ||||
Adrian Buehlmann
|
r16904 | |||
test that commit does not crash if the user removes a newly added file | ||||
$ touch f1 | ||||
$ hg add f1 | ||||
$ rm f1 | ||||
$ hg ci -A -mx | ||||
removing f1 | ||||
nothing changed | ||||
[1] | ||||
Mads Kiilerich
|
r16913 | |||
Matt Mackall
|
r17848 | handling of untracked directories and missing files | ||
$ mkdir d1 | ||||
$ echo a > d1/a | ||||
$ hg rm --after d1 | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Matt Mackall
|
r17848 | not removing d1: no tracked files | ||
[1] | ||||
$ hg add d1/a | ||||
$ rm d1/a | ||||
$ hg rm --after d1 | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Matt Harbison
|
r35394 | removing d1/a | ||
Matt Harbison
|
r28889 | |||
Adrian Buehlmann
|
r17862 | $ hg rm --after nosuch | ||
nosuch: * (glob) | ||||
timeless
|
r28608 | \r (no-eol) (esc) | ||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
Matt Mackall
|
r17848 | [1] | ||
Sushil khanchi
|
r37168 | |||
test dry-run for remove | ||||
$ hg init testdryrun | ||||
$ cd testdryrun | ||||
$ echo a>a | ||||
$ hg ci -qAm1 | ||||
$ hg remove a -nv | ||||
\r (no-eol) (esc) | ||||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
deleting [===========================================>] 1/1\r (no-eol) (esc) | ||||
\r (no-eol) (esc) | ||||
removing a | ||||
$ hg diff | ||||
$ cat >> .hg/hgrc <<EOF | ||||
> [extensions] | ||||
> largefiles= | ||||
> EOF | ||||
$ echo 'B as largefile' > B | ||||
$ hg add --large B | ||||
$ hg ci -m "B" | ||||
$ hg remove B -nv | ||||
removing B | ||||
$ hg st | ||||
$ cd .. | ||||