123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- #!/bin/bash
- # Copyright 2011 The Go Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style
- # license that can be found in the LICENSE file.
- # Test the code review plugin.
- # Assumes a local Rietveld is running using the App Engine SDK
- # at http://localhost:7777/
- #
- # dev_appserver.py -p 7777 $HOME/pub/rietveld
- codereview_script=$(pwd)/codereview.py
- server=localhost:7777
- master=/tmp/go.test
- clone1=/tmp/go.test1
- clone2=/tmp/go.test2
- export HGEDITOR=true
- must() {
- if ! "$@"; then
- echo "$@" failed >&2
- exit 1
- fi
- }
- not() {
- if "$@"; then
- false
- else
- true
- fi
- }
- status() {
- echo '+++' "$@" >&2
- }
- firstcl() {
- hg pending | sed 1q | tr -d ':'
- }
- # Initial setup.
- status Create repositories.
- rm -rf $master $clone1 $clone2
- mkdir $master
- cd $master
- must hg init .
- echo Initial state >file
- must hg add file
- must hg ci -m 'first commit' file
- must hg clone $master $clone1
- must hg clone $master $clone2
- echo "
- [ui]
- username=Grace R Emlin <gre@golang.org>
- [extensions]
- codereview=$codereview_script
- [codereview]
- server=$server
- " >>$clone1/.hg/hgrc
- cp $clone1/.hg/hgrc $clone2/.hg/hgrc
- status Codereview should be disabled.
- cd $clone1
- must hg status
- must not hg pending
- status Enabling code review.
- must mkdir lib lib/codereview
- must touch lib/codereview/codereview.cfg
- status Code review should work even without CONTRIBUTORS.
- must hg pending
- status Add CONTRIBUTORS.
- echo 'Grace R Emlin <gre@golang.org>' >CONTRIBUTORS
- must hg add lib/codereview/codereview.cfg CONTRIBUTORS
- status First submit.
- must hg submit -r gre@golang.org -m codereview \
- lib/codereview/codereview.cfg CONTRIBUTORS
- status Should see change in other client.
- cd $clone2
- must hg pull -u
- must test -f lib/codereview/codereview.cfg
- must test -f CONTRIBUTORS
- test_clpatch() {
- # The email address must be test@example.com to match
- # the test code review server's default user.
- # Clpatch will check.
-
- cd $clone1
- # Tried to use UTF-8 here to test that, but dev_appserver.py crashes. Ha ha.
- if false; then
- status Using UTF-8.
- name="Grácè T Emlïn <test@example.com>"
- else
- status Using ASCII.
- name="Grace T Emlin <test@example.com>"
- fi
- echo "$name" >>CONTRIBUTORS
- cat .hg/hgrc | sed "s/Grace.*/$name/" >/tmp/x && mv /tmp/x .hg/hgrc
- echo '
- Reviewer: gre@golang.org
- Description:
- CONTRIBUTORS: add $name
- Files:
- CONTRIBUTORS
- ' | must hg change -i
- num=$(hg pending | sed 1q | tr -d :)
-
- status Patch CL.
- cd $clone2
- must hg clpatch $num
- must [ "$num" = "$(firstcl)" ]
- must hg submit $num
-
- status Issue should be open with no reviewers.
- must curl http://$server/api/$num >/tmp/x
- must not grep '"closed":true' /tmp/x
- must grep '"reviewers":\[\]' /tmp/x
-
- status Sync should close issue.
- cd $clone1
- must hg sync
- must curl http://$server/api/$num >/tmp/x
- must grep '"closed":true' /tmp/x
- must grep '"reviewers":\[\]' /tmp/x
- must [ "$(firstcl)" = "" ]
- }
- test_reviewer() {
- status Submit without reviewer should fail.
- cd $clone1
- echo dummy >dummy
- must hg add dummy
- echo '
- Description:
- no reviewer
- Files:
- dummy
- ' | must hg change -i
- num=$(firstcl)
- must not hg submit $num
- must hg revert dummy
- must rm dummy
- must hg change -d $num
- }
- test_linearity() {
- status Linearity of changes.
- cd $clone1
- echo file1 >file1
- must hg add file1
- echo '
- Reviewer: gre@golang.org
- Description: file1
- Files: file1
- ' | must hg change -i
- must hg submit $(firstcl)
-
- cd $clone2
- echo file2 >file2
- must hg add file2
- echo '
- Reviewer: gre@golang.org
- Description: file2
- Files: file2
- ' | must hg change -i
- must not hg submit $(firstcl)
- must hg sync
- must hg submit $(firstcl)
- }
- test_restrict() {
- status Cannot use hg ci.
- cd $clone1
- echo file1a >file1a
- hg add file1a
- must not hg ci -m commit file1a
- must rm file1a
- must hg revert file1a
-
- status Cannot use hg rollback.
- must not hg rollback
-
- status Cannot use hg backout
- must not hg backout -r -1
- }
- test_reviewer
- test_clpatch
- test_linearity
- test_restrict
- status ALL TESTS PASSED.
|