tests/test-mac-packages.t
author Jun Wu <quark@fb.com>
Sun, 06 Aug 2017 11:40:53 -0700
changeset 33708 71b77b61ed60
parent 33594 283a7da602ae
child 48988 8d7eaff92f9c
permissions -rw-r--r--
test-rebase: add a brute force test Rebase is becoming more complex and it looks like a good idea to try some brute force enumeration to cover cases that are hard to find manually. Using brute force to generate repos in different shapes and enumerating the rebase source and destination would generate too many cases that takes too long to compute. This patch limits the "brute force" to only the "rebase source" part. Repo and destination are still manual. The added test cases are crafted manually to reveal some behaviors that are not covered by other tests: - "revlog index out of range" crash - after rebase, p1 == p2, p2 != null - "nothing to merge" abort In the future we might want to add more tests here. For now I'm more interested in revealing interesting behaviors in a minified way. I tried some more complex cases but didn't find other interesting behaviors. Differential Revision: https://phab.mercurial-scm.org/D262

#require test-repo slow osx osxpackaging

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

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

  $ cd "$TESTDIR"/..
  $ contrib/genosxversion.py --selftest ignoredarg
  $ 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/cffi/bdiff.py	100644	0/0
  ./Library/Python/2.7/site-packages/mercurial/cffi/bdiff.pyc	100644	0/0
  ./Library/Python/2.7/site-packages/mercurial/cffi/bdiff.pyo	100644	0/0
  ./Library/Python/2.7/site-packages/mercurial/cffi/bdiffbuild.py	100644	0/0
  ./Library/Python/2.7/site-packages/mercurial/cffi/bdiffbuild.pyc	100644	0/0
  ./Library/Python/2.7/site-packages/mercurial/cffi/bdiffbuild.pyo	100644	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.