tests/test-pushvars.t
author Pulkit Goyal <7895pulkit@gmail.com>
Mon, 31 Jul 2017 09:59:42 +0530
changeset 33693 db3dc11356ed
child 33796 4f8c241b2bfa
permissions -rw-r--r--
pushvars: move fb extension pushvars to core pushvars extension in fbext adds a --pushvars flag to push command using which one send strings to server which becomes environment variables there prepended with HG_USERVAR_. These variables can then be used to run hooks on the server. The extension is moved directly to core and unbundling of the strings and converting them to environment variables at server is disabled by default for security reasons. One can turn that on by following config: [push] pushvars.server = true This patch also adds the test for the extension. Differential Revision: https://phab.mercurial-scm.org/D210

Setup

  $ PYTHONPATH=$TESTDIR/..:$PYTHONPATH
  $ export PYTHONPATH

  $ cat > $TESTTMP/pretxnchangegroup.sh << EOF
  > #!/bin/sh
  > env | egrep "^HG_USERVAR_(DEBUG|BYPASS_REVIEW)" | sort
  > exit 0
  > EOF
  $ chmod +x $TESTTMP/pretxnchangegroup.sh
  $ cat >> $HGRCPATH << EOF
  > [hooks]
  > pretxnchangegroup = $TESTTMP/pretxnchangegroup.sh
  > [experimental]
  > bundle2-exp = true
  > EOF

  $ hg init repo
  $ hg clone -q repo child
  $ cd child

Test pushing vars to repo with pushvars.server not set

  $ echo b > a
  $ hg commit -Aqm a
  $ hg push --pushvars "DEBUG=1" --pushvars "BYPASS_REVIEW=true"
  pushing to $TESTTMP/repo (glob)
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 1 changes to 1 files

Setting pushvars.sever = true and then pushing.

  $ echo [push] >> $HGRCPATH
  $ echo "pushvars.server = true" >> $HGRCPATH
  $ echo b >> a
  $ hg commit -Aqm a
  $ hg push --pushvars "DEBUG=1" --pushvars "BYPASS_REVIEW=true"
  pushing to $TESTTMP/repo (glob)
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 1 changes to 1 files
  HG_USERVAR_BYPASS_REVIEW=true
  HG_USERVAR_DEBUG=1

Test pushing var with empty right-hand side

  $ echo b >> a
  $ hg commit -Aqm a
  $ hg push --pushvars "DEBUG="
  pushing to $TESTTMP/repo (glob)
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 1 changes to 1 files
  HG_USERVAR_DEBUG=

Test pushing bad vars

  $ echo b >> a
  $ hg commit -Aqm b
  $ hg push --pushvars "DEBUG"
  pushing to $TESTTMP/repo (glob)
  abort: unable to parse variable 'DEBUG', should follow 'KEY=VALUE' or 'KEY=' format
  [255]