tests/test-mac-packages.t
author Adam Simpkins <simpkins@fb.com>
Tue, 27 Jun 2017 17:24:31 -0700
changeset 33128 6c113a7dec52
parent 32674 9929af2b09b4
child 33204 ddd65b4f3ae6
permissions -rw-r--r--
tests: use the system hg for examining the local repository Most test scripts use "hg" to interact with a temporary test repository. However a few tests also want to run hg commands to interact with the local repository containing the mercurial source code. Notably, many of the test-check-* tests want to check local files and commit messages. These tests were previously using the version of hg being tested to query the source repository. However, this will fail if the source repository requires extensions or other settings not supported by the version of mercurial being tested. The source repository was typically initially cloned using the system hg installation, so we should use the system hg installation to query it. There was already a helpers-testrepo.sh script designed to help cope with different requirements for the source repository versus the test repositories. However, it only handled the evolve extension. This new behavior works with any extensions that are different between the system installation and the test installation.

#require test-repo slow osx osxpackaging

  $ . "$TESTDIR/helpers-testrepo.sh"
  $ syshgenv

  $ OUTPUTDIR="`pwd`"
  $ export OUTPUTDIR
  $ KEEPMPKG=yes
  $ export KEEPMPKG

  $ cd "$TESTDIR"/..
  $ make osx > "$OUTPUTDIR/build.log" 2>&1
  $ cd "$OUTPUTDIR"
  $ ls -d *.pkg
  Mercurial-*-macosx10.*.pkg (glob)

  $ xar -xf Mercurial*.pkg

Gather list of all installed files:
  $ lsbom mercurial.pkg/Bom > boms.txt

We've had problems with the filter logic in the past. Make sure no
.DS_Store files ended up in the final package:
  $ grep DS_S boms.txt
  [1]

Spot-check some randomly selected files:
  $ grep bdiff boms.txt | cut -d '	' -f 1,2,3
  ./Library/Python/2.7/site-packages/mercurial/cext/bdiff.so	100755	0/0
  ./Library/Python/2.7/site-packages/mercurial/pure/bdiff.py	100644	0/0
  ./Library/Python/2.7/site-packages/mercurial/pure/bdiff.pyc	100644	0/0
  ./Library/Python/2.7/site-packages/mercurial/pure/bdiff.pyo	100644	0/0
  $ grep zsh/site-functions/_hg boms.txt | cut -d '	' -f 1,2,3
  ./usr/local/share/zsh/site-functions/_hg	100644	0/0
  $ grep hg-completion.bash boms.txt | cut -d '	' -f 1,2,3
  ./usr/local/hg/contrib/hg-completion.bash	100644	0/0
  $ egrep 'man[15]' boms.txt | cut -d '	' -f 1,2,3
  ./usr/local/share/man/man1	40755	0/0
  ./usr/local/share/man/man1/chg.1	100644	0/0
  ./usr/local/share/man/man1/hg.1	100644	0/0
  ./usr/local/share/man/man5	40755	0/0
  ./usr/local/share/man/man5/hgignore.5	100644	0/0
  ./usr/local/share/man/man5/hgrc.5	100644	0/0
  $ grep bser boms.txt | cut -d '	' -f 1,2,3
  ./Library/Python/2.7/site-packages/hgext/fsmonitor/pywatchman/bser.so	100755	0/0
  ./Library/Python/2.7/site-packages/hgext/fsmonitor/pywatchman/pybser.py	100644	0/0
  ./Library/Python/2.7/site-packages/hgext/fsmonitor/pywatchman/pybser.pyc	100644	0/0
  ./Library/Python/2.7/site-packages/hgext/fsmonitor/pywatchman/pybser.pyo	100644	0/0
  $ grep localrepo boms.txt | cut -d '	' -f 1,2,3
  ./Library/Python/2.7/site-packages/mercurial/localrepo.py	100644	0/0
  ./Library/Python/2.7/site-packages/mercurial/localrepo.pyc	100644	0/0
  ./Library/Python/2.7/site-packages/mercurial/localrepo.pyo	100644	0/0
  $ egrep 'bin/' boms.txt | cut -d '	' -f 1,2,3
  ./usr/local/bin/chg	100755	0/0
  ./usr/local/bin/hg	100755	0/0

Make sure the built binary uses the system Python interpreter
  $ bsdtar xf mercurial.pkg/Payload usr/local/bin
Use a glob to find this to avoid check-code whining about a fixed path.
  $ head -n 1 usr/local/b?n/hg
  #!/System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python

Note that we're not currently installing any /etc/mercurial stuff,
including merge-tool configurations.