tests/test-gpg.t
author Simon Sapin <simon.sapin@octobus.net>
Tue, 27 Apr 2021 12:42:21 +0200
changeset 47130 04bcba539c96
parent 44838 f58928715d0c
child 50769 181936ad069a
permissions -rw-r--r--
dirstate-tree: Avoid BTreeMap double-lookup when inserting a dirstate entry The child nodes of a given node in the tree-shaped dirstate are kept in a `BTreeMap` where keys are file names as strings. Finding or inserting a value in the map takes `O(log(n))` string comparisons, which adds up when constructing the tree. The `entry` API allows finding a "spot" in the map that may or may not be occupied and then access that value or insert a new one without doing map lookup again. However the current API is limited in that calling `entry` requires an owned key (and so a memory allocation), even if it ends up not being used in the case where the map already has a value with an equal key. This is still a win, with 4% better end-to-end time for `hg status` measured here with hyperfine: ``` Benchmark #1: ../hg2/hg status -R $REPO --config=experimental.dirstate-tree.in-memory=1 Time (mean ± σ): 1.337 s ± 0.018 s [User: 892.9 ms, System: 437.5 ms] Range (min … max): 1.316 s … 1.373 s 10 runs Benchmark #2: ./hg status -R $REPO --config=experimental.dirstate-tree.in-memory=1 Time (mean ± σ): 1.291 s ± 0.008 s [User: 853.4 ms, System: 431.1 ms] Range (min … max): 1.283 s … 1.309 s 10 runs Summary './hg status -R $REPO --config=experimental.dirstate-tree.in-memory=1' ran 1.04 ± 0.02 times faster than '../hg2/hg status -R $REPO --config=experimental.dirstate-tree.in-memory=1' ``` * ./hg is this revision * ../hg2/hg is its parent * $REPO is an old snapshot of mozilla-central Differential Revision: https://phab.mercurial-scm.org/D10550
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22046
7a9cbb315d84 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents: 21711
diff changeset
     1
#require gpg
7a9cbb315d84 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com>
parents: 21711
diff changeset
     2
12428
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
     3
Test the GPG extension
8809
6fce36336e42 gpg: add test
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
     4
12428
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
     5
  $ cat <<EOF >> $HGRCPATH
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
     6
  > [extensions]
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
     7
  > gpg=
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
     8
  > 
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
     9
  > [gpg]
29800
66e038fb3c0d test-gpg: make temporary copy of GNUPGHOME
Yuya Nishihara <yuya@tcha.org>
parents: 25472
diff changeset
    10
  > cmd=gpg --no-permission-warning --no-secmem-warning --no-auto-check-trustdb
12428
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    11
  > EOF
29800
66e038fb3c0d test-gpg: make temporary copy of GNUPGHOME
Yuya Nishihara <yuya@tcha.org>
parents: 25472
diff changeset
    12
  $ GNUPGHOME="$TESTTMP/gpg"; export GNUPGHOME
66e038fb3c0d test-gpg: make temporary copy of GNUPGHOME
Yuya Nishihara <yuya@tcha.org>
parents: 25472
diff changeset
    13
  $ cp -R "$TESTDIR/gpg" "$GNUPGHOME"
66e038fb3c0d test-gpg: make temporary copy of GNUPGHOME
Yuya Nishihara <yuya@tcha.org>
parents: 25472
diff changeset
    14
29877
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29802
diff changeset
    15
Start gpg-agent, which is required by GnuPG v2
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29802
diff changeset
    16
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29802
diff changeset
    17
#if gpg21
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29802
diff changeset
    18
  $ gpg-connect-agent -q --subst /serverpid '/echo ${get serverpid}' /bye \
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29802
diff changeset
    19
  > >> $DAEMON_PIDS
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29802
diff changeset
    20
#endif
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29802
diff changeset
    21
80ba176bad62 test-gpg: start gpg-agent by gpg-connect-agent only if GnuPG v2.1+ detected
Yuya Nishihara <yuya@tcha.org>
parents: 29802
diff changeset
    22
and migrate secret keys
29801
94fb0458a791 test-gpg: start gpg-agent under control of the test runner
Yuya Nishihara <yuya@tcha.org>
parents: 29800
diff changeset
    23
94fb0458a791 test-gpg: start gpg-agent under control of the test runner
Yuya Nishihara <yuya@tcha.org>
parents: 29800
diff changeset
    24
#if gpg2
29802
28591876fa63 test-gpg: run migration of v1 secret keys beforehand
Yuya Nishihara <yuya@tcha.org>
parents: 29801
diff changeset
    25
  $ gpg --no-permission-warning --no-secmem-warning --list-secret-keys \
28591876fa63 test-gpg: run migration of v1 secret keys beforehand
Yuya Nishihara <yuya@tcha.org>
parents: 29801
diff changeset
    26
  > > /dev/null 2>&1
29801
94fb0458a791 test-gpg: start gpg-agent under control of the test runner
Yuya Nishihara <yuya@tcha.org>
parents: 29800
diff changeset
    27
#endif
94fb0458a791 test-gpg: start gpg-agent under control of the test runner
Yuya Nishihara <yuya@tcha.org>
parents: 29800
diff changeset
    28
12428
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    29
  $ hg init r
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    30
  $ cd r
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    31
  $ echo foo > foo
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    32
  $ hg ci -Amfoo
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    33
  adding foo
8809
6fce36336e42 gpg: add test
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
    34
12428
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    35
  $ hg sigs
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    36
21711
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    37
  $ HGEDITOR=cat hg sign -e 0
44838
f58928715d0c tests: ignore possible diagnostics from gpg 2.2
Joerg Sonnenberger <joerg@bec.de>
parents: 29877
diff changeset
    38
  gpg: error retrieving key fingerprint from card: Invalid name (?)
16927
7922004a46b8 gpg: lowercase messages
Martin Geisler <mg@aragost.com>
parents: 16913
diff changeset
    39
  signing 0:e63c23eaa88a
21711
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    40
  Added signature for changeset e63c23eaa88a
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    41
  
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    42
  
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    43
  HG: Enter commit message.  Lines beginning with 'HG:' are removed.
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    44
  HG: Leave message empty to abort commit.
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    45
  HG: --
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    46
  HG: user: test
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    47
  HG: branch 'default'
0986af9e7006 gpg: accept '--edit' like other commands creating new changeset
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20305
diff changeset
    48
  HG: added .hgsigs
8809
6fce36336e42 gpg: add test
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
    49
12428
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    50
  $ hg sigs
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    51
  hgtest                             0:e63c23eaa88ae77967edcf4ea194d31167c478b0
8809
6fce36336e42 gpg: add test
Brendan Cully <brendan@kublai.com>
parents:
diff changeset
    52
12428
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    53
  $ hg sigcheck 0
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    54
  e63c23eaa88a is signed by:
3aa7b6445aad tests: unify test-gpg
Matt Mackall <mpm@selenic.com>
parents: 9041
diff changeset
    55
   hgtest
16289
aae219a99a6e test-gpg: make sure gpg does not modify the trustdb.gpg file
Greg Ward <greg@gerg.ca>
parents: 12428
diff changeset
    56
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 16350
diff changeset
    57
  $ cd ..