##// END OF EJS Templates
sslutil: require TLS 1.1+ when supported...
sslutil: require TLS 1.1+ when supported Currently, Mercurial will use TLS 1.0 or newer when connecting to remote servers, selecting the highest TLS version supported by both peers. On older Pythons, only TLS 1.0 is available. On newer Pythons, TLS 1.1 and 1.2 should be available. Security professionals recommend avoiding TLS 1.0 if possible. PCI DSS 3.1 "strongly encourages" the use of TLS 1.2. Known attacks like BEAST and POODLE exist against TLS 1.0 (although mitigations are available and properly configured servers aren't vulnerable). I asked Eric Rescorla - Mozilla's resident crypto expert - whether Mercurial should drop support for TLS 1.0. His response was "if you can get away with it." Essentially, a number of servers on the Internet don't support TLS 1.1+. This is why web browsers continue to support TLS 1.0 despite desires from security experts. This patch changes Mercurial's default behavior on modern Python versions to require TLS 1.1+, thus avoiding known security issues with TLS 1.0 and making Mercurial more secure by default. Rather than drop TLS 1.0 support wholesale, we still allow TLS 1.0 to be used if configured. This is a compromise solution - ideally we'd disallow TLS 1.0. However, since we're not sure how many Mercurial servers don't support TLS 1.1+ and we're not sure how much user inconvenience this change will bring, I think it is prudent to ship an escape hatch that still allows usage of TLS 1.0. In the default case our users get better security. In the worst case, they are no worse off than before this patch. This patch has no effect when running on Python versions that don't support TLS 1.1+. As the added test shows, connecting to a server that doesn't support TLS 1.1+ will display a warning message with a link to our wiki, where we can guide people to configure their client to allow less secure connections.

File last commit:

r29089:222b8170 stable
r29560:303e9300 default
Show More
test-remove.t
465 lines | 15.4 KiB | text/troff | Tads3Lexer
Nicolas Dumazet
tests: unify test-remove
r12099 $ remove() {
> hg rm $@
Simon Heimberg
tests: do not skip code-checking on some whole files...
r19381 > echo "exit code: $?"
Nicolas Dumazet
tests: unify test-remove
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
tests: include progress for test-remove
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
tests: unify test-remove
r12099 $ hg init a
$ cd a
$ echo a > foo
file not managed
$ remove foo
timeless
remove: add progress support
r28608 \r (no-eol) (esc)
deleting [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
r12099 not removing foo: file is untracked
Martin Geisler
merge with stable
r12130 exit code: 1
Nicolas Dumazet
tests: unify test-remove
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
remove: add progress support
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)
Matt Mackall
remove: suggest forget to undo adds
r15115 not removing bar: file has been marked for add (use forget to undo)
Martin Geisler
merge with stable
r12130 exit code: 1
Nicolas Dumazet
tests: unify test-remove
r12099 A bar
./bar
./foo
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
r12099 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
01 state clean, options none
$ remove foo
timeless
remove: add progress support
r28608 \r (no-eol) (esc)
deleting [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
? bar
./bar
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
r12099 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
02 state modified, options none
$ echo b >> foo
$ remove foo
timeless
remove: add progress support
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
tests: unify test-remove
r12099 not removing foo: file is modified (use -f to force removal)
Martin Geisler
merge with stable
r12130 exit code: 1
Nicolas Dumazet
tests: unify test-remove
r12099 M foo
? bar
./bar
./foo
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
r12099 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
03 state missing, options none
$ rm foo
$ remove foo
timeless
remove: add progress support
r28608 \r (no-eol) (esc)
deleting [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
? bar
./bar
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
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
remove: add progress support
r28608 \r (no-eol) (esc)
deleting [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
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
remove: add progress support
r28608 \r (no-eol) (esc)
deleting [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
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
remove: add progress support
r28608 \r (no-eol) (esc)
deleting [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
r12099 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
13 state missing, options -f
$ rm foo
$ remove -f foo
timeless
remove: add progress support
r28608 \r (no-eol) (esc)
deleting [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
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
remove: add progress support
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
rm: drop misleading 'use -f' hint for the rm --after 'not removing' warning...
r18053 not removing bar: file still exists
Martin Geisler
merge with stable
r12130 exit code: 1
Nicolas Dumazet
tests: unify test-remove
r12099 A bar
./bar
./foo
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
r12099 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
21 state clean, options -A
$ remove -A foo
timeless
remove: add progress support
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
rm: drop misleading 'use -f' hint for the rm --after 'not removing' warning...
r18053 not removing foo: file still exists
Martin Geisler
merge with stable
r12130 exit code: 1
Nicolas Dumazet
tests: unify test-remove
r12099 ? bar
./bar
./foo
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
22 state modified, options -A
$ echo b >> foo
$ remove -A foo
timeless
remove: add progress support
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
rm: drop misleading 'use -f' hint for the rm --after 'not removing' warning...
r18053 not removing foo: file still exists
Martin Geisler
merge with stable
r12130 exit code: 1
Nicolas Dumazet
tests: unify test-remove
r12099 M foo
? bar
./bar
./foo
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
r12099 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
23 state missing, options -A
$ rm foo
$ remove -A foo
timeless
remove: add progress support
r28608 \r (no-eol) (esc)
deleting [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
? bar
./bar
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
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
remove: add progress support
r28608 \r (no-eol) (esc)
deleting [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
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
remove: add progress support
r28608 \r (no-eol) (esc)
deleting [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
./foo
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
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
remove: add progress support
r28608 \r (no-eol) (esc)
deleting [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
./foo
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
r12099 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
33 state missing, options -Af
$ rm foo
$ remove -Af foo
timeless
remove: add progress support
r28608 \r (no-eol) (esc)
deleting [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R foo
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
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
remove: add progress support
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)
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 removing test/bar (glob)
removing test/foo (glob)
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R test/bar
R test/foo
./foo
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 2/2\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
r12099 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
dir, options -f
$ rm test/bar
$ remove -f test
timeless
remove: add progress support
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)
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 removing test/bar (glob)
removing test/foo (glob)
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R test/bar
R test/foo
./foo
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 2/2\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
r12099 2 files updated, 0 files merged, 0 files removed, 0 files unresolved
dir, options -A
$ rm test/bar
$ remove -A test
timeless
remove: add progress support
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)
timeless
remove: queue warnings until after status messages (issue5140) (API)...
r28607 removing test/bar (glob)
Mads Kiilerich
rm: drop misleading 'use -f' hint for the rm --after 'not removing' warning...
r18053 not removing test/foo: file still exists (glob)
Martin Geisler
merge with stable
r12130 exit code: 1
Nicolas Dumazet
tests: unify test-remove
r12099 R test/bar
./foo
./test/foo
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
r12099 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
dir, options -Af
$ rm test/bar
$ remove -Af test
timeless
remove: add progress support
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)
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 removing test/bar (glob)
removing test/foo (glob)
Martin Geisler
merge with stable
r12130 exit code: 0
Nicolas Dumazet
tests: unify test-remove
r12099 R test/bar
R test/foo
./foo
./test/foo
timeless
tests: include progress for test-remove
r28606 \r (no-eol) (esc)
updating [===========================================>] 2/2\r (no-eol) (esc)
\r (no-eol) (esc)
Nicolas Dumazet
tests: unify test-remove
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
remove: add progress support
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)
Mads Kiilerich
tests: make (glob) on windows accept \ instead of /...
r15447 removing issue1861/b/c/y (glob)
Nicolas Dumazet
tests: unify test-remove
r12099 $ hg ci -m remove
$ ls issue1861
x
Adrian Buehlmann
test-remove-new: integrate into test-remove.t
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
tests: add missing trailing 'cd ..'...
r16913
Matt Mackall
remove: don't return error on directories with tracked files...
r17848 handling of untracked directories and missing files
$ mkdir d1
$ echo a > d1/a
$ hg rm --after d1
timeless
remove: add progress support
r28608 \r (no-eol) (esc)
deleting [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Matt Mackall
remove: don't return error on directories with tracked files...
r17848 not removing d1: no tracked files
[1]
$ hg add d1/a
$ rm d1/a
$ hg rm --after d1
timeless
remove: add progress support
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)
Adrian Buehlmann
test-remove: fix \ vs. / issues on Windows...
r17861 removing d1/a (glob)
Matt Harbison
test-remove: drop a useless Windows specific conditional...
r28889
Adrian Buehlmann
test-remove: adapt to differing error message on Windows...
r17862 $ hg rm --after nosuch
nosuch: * (glob)
timeless
remove: add progress support
r28608 \r (no-eol) (esc)
deleting [===========================================>] 1/1\r (no-eol) (esc)
\r (no-eol) (esc)
Matt Mackall
remove: don't return error on directories with tracked files...
r17848 [1]