tests/test-basic.t
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Sun, 14 Feb 2016 01:33:55 +0900
changeset 28119 91a827e760df
parent 25290 8f88f768e24c
child 28610 3aa50c9d89a0
permissions -rw-r--r--
hg: make cachedlocalrepo cache appropriate repoview object Before this patch, 'cachedlocalrepo' always caches "visible" repoview object, because 'cachedlocalrepo' uses "visible" repoview returned by 'hg.repository()' without any additional processing. If the client of 'cachedlocalrepo' wants "served" repoview, some objects to be cached are discarded unintentionally. 1. 'cachedlocalrepo' newly caches "visible" repoview object (call it VIEW1) 2. 'cachedlocalrepo' returns VIEW1 to the client of it at 'fetch()' 3. the client gets "served" repoview object by 'filtered("served")' on VIEW1 (call this "served" repoview VIEW2) 4. accessing to 'repo.changelog' implies: - instantiation of changelog via 'localrepository.changelog' - instantiation of "filtered changelog" via 'repoview.changelog' 5. "filtered changelog" above is cached in VIEW2 6. VIEW2 is discarded after processing, because there is no reference to it 7. 'cachedlocalrepo' returns VIEW1 cached at (1) above to the client at next 'fetch()' 8. 'filtered("served")' on VIEW1 at the client side creates new "served" repoview again, because VIEW1 is "visible" (call this new "served" repoview VIEW3) 9. accessing to 'repo.changelog' implies instantiation of filtered changelog again, because "filtered changelog" is cached in VIEW2 at (5), but not in VIEW3 currently used 10. (go to (7) above) As described above, "served" repoview object and "filtered changelog" cached in it are discarded always, even if the repository itself hasn't been changed since last access. For example, in the case of 'hgweb_mod.hgweb', "newly caching" occurs, when: - all cached objects are already assigned to another threads (in this case, repoview is created in 'cachedlocalrepo.copy()') - or, stat of '00changelog.i' is changed from last access (in this case, repoview is created in 'cachedlocalrepo.fetch()') once changes are pushed via HTTP, this always occurs. The root cause of this inefficiency is that 'cachedlocalrepo' always caches "visible" repoview object, even if the client of it wants another view. To make 'cachedlocalrepo' cache appropriate repoview object, this patch adds additional filtering on the repo object returned by 'hg.repository()'. It is assumed that initial repoview object should be already filtered by expected view. After this patch: - 'filtered("served")' on VIEW1 at (3)/(7) above returns VIEW1 itself, because VIEW1 is now "served", and - VIEW2 and VIEW3 equal VIEW1 - therefore, "filtered changelog" is cached in VIEW1, and reused intentionally
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
     1
Create a repository:
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
     2
20608
a3ca1d032926 config: make repo optional again
Matt Mackall <mpm@selenic.com>
parents: 17346
diff changeset
     3
  $ hg config
a3ca1d032926 config: make repo optional again
Matt Mackall <mpm@selenic.com>
parents: 17346
diff changeset
     4
  defaults.backout=-d "0 0"
a3ca1d032926 config: make repo optional again
Matt Mackall <mpm@selenic.com>
parents: 17346
diff changeset
     5
  defaults.commit=-d "0 0"
a3ca1d032926 config: make repo optional again
Matt Mackall <mpm@selenic.com>
parents: 17346
diff changeset
     6
  defaults.shelve=--date "0 0"
a3ca1d032926 config: make repo optional again
Matt Mackall <mpm@selenic.com>
parents: 17346
diff changeset
     7
  defaults.tag=-d "0 0"
25290
8f88f768e24c devel: rename 'all' to 'all-warnings' (BC)
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 24751
diff changeset
     8
  devel.all-warnings=true
23388
42ed0780ec4b run-tests: set a default largefiles usercache in the default hgrc file
Matt Harbison <matt_harbison@yahoo.com>
parents: 23053
diff changeset
     9
  largefiles.usercache=$TESTTMP/.cache/largefiles (glob)
20608
a3ca1d032926 config: make repo optional again
Matt Mackall <mpm@selenic.com>
parents: 17346
diff changeset
    10
  ui.slash=True
a3ca1d032926 config: make repo optional again
Matt Mackall <mpm@selenic.com>
parents: 17346
diff changeset
    11
  ui.interactive=False
21918
10abc3a5c6b2 filemerge: use 'basic' as the default of '[ui] mergemarkers' for safety
FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
parents: 20608
diff changeset
    12
  ui.mergemarkers=detailed
23053
5ba11ab48fcf ui: separate option to show prompt echo, enabled only in tests (issue4417)
Yuya Nishihara <yuya@tcha.org>
parents: 21918
diff changeset
    13
  ui.promptecho=True
13956
ffb5c09ba822 tests: remove redundant mkdir
Martin Geisler <mg@lazybytes.net>
parents: 13568
diff changeset
    14
  $ hg init t
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    15
  $ cd t
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    16
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    17
Make a changeset:
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    18
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    19
  $ echo a > a
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    20
  $ hg add a
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11742
diff changeset
    21
  $ hg commit -m test
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    22
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    23
This command is ancient:
331
55f63f3b6a54 Add a simple testing framework
mpm@selenic.com
parents:
diff changeset
    24
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    25
  $ hg history
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11742
diff changeset
    26
  changeset:   0:acb14030fe0a
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    27
  tag:         tip
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    28
  user:        test
12156
4c94b6d0fb1c tests: remove unneeded -d flags
Martin Geisler <mg@lazybytes.net>
parents: 11742
diff changeset
    29
  date:        Thu Jan 01 00:00:00 1970 +0000
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    30
  summary:     test
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    31
  
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    32
13568
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    33
Verify that updating to revision 0 via commands.update() works properly
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    34
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    35
  $ cat <<EOF > update_to_rev0.py
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    36
  > from mercurial import ui, hg, commands
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    37
  > myui = ui.ui()
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    38
  > repo = hg.repository(myui, path='.')
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    39
  > commands.update(myui, repo, rev=0)
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    40
  > EOF
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    41
  $ hg up null
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    42
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    43
  $ python ./update_to_rev0.py
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    44
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    45
  $ hg identify -n
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    46
  0
17346
2944a6d35158 check-code: fix check for trailing whitespace on empty lines
Mads Kiilerich <mads@kiilerich.com>
parents: 16913
diff changeset
    47
13568
0b79cf616e65 commands.update() now works properly with a revision of 0
Mark Drago <markdrago@gmail.com>
parents: 12156
diff changeset
    48
11742
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    49
Poke around at hashes:
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    50
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    51
  $ hg manifest --debug
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    52
  b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3 644   a
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    53
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    54
  $ hg cat a
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    55
  a
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    56
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    57
Verify should succeed:
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    58
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    59
  $ hg verify
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    60
  checking changesets
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    61
  checking manifests
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    62
  crosschecking files in changesets and manifests
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    63
  checking files
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    64
  1 files, 1 changesets, 1 total revisions
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    65
5dc8b3ee407b tests: unify test-basic
Matt Mackall <mpm@selenic.com>
parents: 3736
diff changeset
    66
At the end...
16913
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 13956
diff changeset
    67
f2719b387380 tests: add missing trailing 'cd ..'
Mads Kiilerich <mads@kiilerich.com>
parents: 13956
diff changeset
    68
  $ cd ..