view tests/test-rhg.t @ 46000:c1bb02738f96

registrar: clarify the documentation about some byte strings being required I *thought* these needed to be byte strings, but didn't remember and had to search out examples. Differential Revision: https://phab.mercurial-scm.org/D9489
author Matt Harbison <matt_harbison@yahoo.com>
date Sat, 28 Nov 2020 16:59:40 -0500
parents 904647f7d983
children 8d6164098782
line wrap: on
line source

#require rust

Define an rhg function that will only run if rhg exists
  $ rhg() {
  > if [ -f "$RUNTESTDIR/../rust/target/debug/rhg" ]; then
  >   "$RUNTESTDIR/../rust/target/debug/rhg" "$@"
  > else
  >   echo "skipped: Cannot find rhg. Try to run cargo build in rust/rhg."
  >   exit 80
  > fi
  > }

Unimplemented command
  $ rhg unimplemented-command
  error: Found argument 'unimplemented-command' which wasn't expected, or isn't valid in this context
  
  USAGE:
      rhg <SUBCOMMAND>
  
  For more information try --help
  [252]

Finding root
  $ rhg root
  abort: no repository found in '$TESTTMP' (.hg not found)!
  [255]

  $ hg init repository
  $ cd repository
  $ rhg root
  $TESTTMP/repository

Unwritable file descriptor
  $ rhg root > /dev/full
  abort: No space left on device (os error 28)
  [255]

Deleted repository
  $ rm -rf `pwd`
  $ rhg root
  abort: error getting current working directory: $ENOENT$
  [255]

Listing tracked files
  $ cd $TESTTMP
  $ hg init repository
  $ cd repository
  $ for i in 1 2 3; do
  >   echo $i >> file$i
  >   hg add file$i
  > done
  > hg commit -m "commit $i" -q

Listing tracked files from root
  $ rhg files
  file1
  file2
  file3

Listing tracked files from subdirectory
  $ mkdir -p path/to/directory
  $ cd path/to/directory
  $ rhg files
  ../../../file1
  ../../../file2
  ../../../file3

Listing tracked files through broken pipe
  $ rhg files | head -n 1
  ../../../file1

Debuging data in inline index
  $ cd $TESTTMP
  $ rm -rf repository
  $ hg init repository
  $ cd repository
  $ for i in 1 2 3; do
  >   echo $i >> file$i
  >   hg add file$i
  >   hg commit -m "commit $i" -q
  > done
  $ rhg debugdata -c 2
  e36fa63d37a576b27a69057598351db6ee5746bd
  test
  0 0
  file3
  
  commit 3 (no-eol)
  $ rhg debugdata -m 2
  file1\x00b8e02f6433738021a065f94175c7cd23db5f05be (esc)
  file2\x005d9299349fc01ddd25d0070d149b124d8f10411e (esc)
  file3\x002661d26c649684b482d10f91960cc3db683c38b4 (esc)

Debuging with full node id
  $ rhg debugdata -c `hg log -r 0 -T '{node}'`
  c8e64718e1ca0312eeee0f59d37f8dc612793856
  test
  0 0
  file1
  
  commit 1 (no-eol)

Cat files
  $ cd $TESTTMP
  $ rm -rf repository
  $ hg init repository
  $ cd repository
  $ echo "original content" > original
  $ hg add original
  $ hg commit -m "add original" original
  $ rhg cat -r 0 original
  original content
Cat copied file should not display copy metadata
  $ hg copy original copy_of_original
  $ hg commit -m "add copy of original"
  $ rhg cat -r 1 copy_of_original
  original content

Specifying revisions by changeset ID
  $ hg log
  changeset:   1:41263439dc17
  tag:         tip
  user:        test
  date:        Thu Jan 01 00:00:00 1970 +0000
  summary:     add copy of original
  
  changeset:   0:1c9e69808da7
  user:        test
  date:        Thu Jan 01 00:00:00 1970 +0000
  summary:     add original
  
  $ rhg files -r 41263439dc17
  abort: invalid revision identifier 41263439dc17
  [255]
  $ rhg cat -r 41263439dc17 original
  abort: invalid revision identifier 41263439dc17
  [255]

Requirements
  $ rhg debugrequirements
  dotencode
  fncache
  generaldelta
  revlogv1
  sparserevlog
  store

  $ echo indoor-pool >> .hg/requires
  $ rhg files
  [252]

  $ rhg cat -r 1 copy_of_original
  [252]

  $ rhg debugrequirements
  dotencode
  fncache
  generaldelta
  revlogv1
  sparserevlog
  store
  indoor-pool

  $ echo -e '\xFF' >> .hg/requires
  $ rhg debugrequirements
  abort: .hg/requires is corrupted
  [255]