You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			155 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Bash
		
	
			
		
		
	
	
			155 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Bash
		
	
#!/usr/bin/env bash
 | 
						|
 | 
						|
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
 | 
						|
# Use of this source code is governed by a BSD-style license that can be
 | 
						|
# found in the LICENSE file.
 | 
						|
 | 
						|
# Abort on error.
 | 
						|
set -e
 | 
						|
 | 
						|
export DEPOT_TOOLS_UPDATE=0
 | 
						|
 | 
						|
PWD=$(pwd)
 | 
						|
REPO_URL=file://$PWD/svnrepo
 | 
						|
TRUNK_URL=$REPO_URL/trunk
 | 
						|
BRANCH_URL=$REPO_URL/branches/some_branch
 | 
						|
GITREPO_PATH=$PWD/gitrepo
 | 
						|
GITREPO_URL=file://$GITREPO_PATH
 | 
						|
PATH="$(dirname $PWD):$PATH"
 | 
						|
GIT_CL=$(dirname $PWD)/git-cl
 | 
						|
GIT_CL_STATUS="$GIT_CL status -f"
 | 
						|
 | 
						|
# Set up an SVN repo that has a few commits to trunk.
 | 
						|
setup_initsvn() {
 | 
						|
  echo "Setting up test SVN repo..."
 | 
						|
  rm -rf svnrepo
 | 
						|
  svnadmin create svnrepo
 | 
						|
  # Need this in order for Mac SnowLeopard to work
 | 
						|
  echo "enable-rep-sharing = false" >> svnrepo/db/fsfs.conf
 | 
						|
 | 
						|
  svn mkdir -q -m 'creating trunk' --parents $TRUNK_URL
 | 
						|
 | 
						|
  rm -rf svn
 | 
						|
  svn co -q $TRUNK_URL svn
 | 
						|
  (
 | 
						|
    cd svn
 | 
						|
    echo "test" > test
 | 
						|
    svn add -q test
 | 
						|
    svn commit -q -m "initial commit"
 | 
						|
    echo "test2" >> test
 | 
						|
    svn commit -q -m "second commit"
 | 
						|
  )
 | 
						|
 | 
						|
  svn cp -q -m 'branching' --parents $TRUNK_URL $BRANCH_URL
 | 
						|
}
 | 
						|
 | 
						|
# Set up a git-svn checkout of the repo.
 | 
						|
setup_gitsvn() {
 | 
						|
  echo "Setting up test git-svn repo..."
 | 
						|
  rm -rf git-svn
 | 
						|
  # There appears to be no way to make git-svn completely shut up, so we
 | 
						|
  # redirect its output.
 | 
						|
  # clone with --prefix origin/ to ensure the same behaviour with old and new
 | 
						|
  # versions of git (The default prefix was "" prior to Git 2.0)
 | 
						|
  git svn --prefix origin/ -q clone -s $REPO_URL git-svn >/dev/null 2>&1
 | 
						|
  (
 | 
						|
    cd git-svn
 | 
						|
    git remote add origin https://example.com/fake_refspec
 | 
						|
    git config user.name 'TestDood'
 | 
						|
    git config user.email 'TestDood@example.com'
 | 
						|
  )
 | 
						|
}
 | 
						|
 | 
						|
# Set up a git-svn checkout of the repo and apply merge commits
 | 
						|
# (like the submodule repo layout).
 | 
						|
setup_gitsvn_submodule() {
 | 
						|
  echo "Setting up test remote git-svn-submodule repo..."
 | 
						|
  rm -rf git-svn-submodule
 | 
						|
  # clone with --prefix origin/ to ensure the same behaviour with old and new
 | 
						|
  # versions of git (The default prefix was "" prior to Git 2.0)
 | 
						|
  git svn --prefix origin/ -q clone -s $REPO_URL git-svn-submodule >/dev/null 2>&1
 | 
						|
  svn_revision=`svn info file://$PWD/svnrepo | grep ^Revision | \
 | 
						|
                sed s/^.*:// | xargs`
 | 
						|
  (
 | 
						|
    cd git-svn-submodule
 | 
						|
    git config user.name 'TestDood'
 | 
						|
    git config user.email 'TestDood@example.com'
 | 
						|
    echo 'merge-file line 1' > merge-file
 | 
						|
    git add merge-file; git commit -q -m 'First non-svn commit on master'
 | 
						|
    git checkout -q refs/remotes/origin/trunk
 | 
						|
    git merge -q --no-commit --no-ff refs/heads/master >/dev/null 2>&1
 | 
						|
    echo 'merge-edit-file line 1' > merge-edit-file
 | 
						|
    git add merge-edit-file
 | 
						|
    git commit -q -m "SVN changes up to revision $svn_revision"
 | 
						|
    git update-ref refs/heads/master HEAD
 | 
						|
    git checkout master
 | 
						|
  )
 | 
						|
}
 | 
						|
 | 
						|
# Set up a git repo that has a few commits to master.
 | 
						|
setup_initgit() {
 | 
						|
  echo "Setting up test upstream git repo..."
 | 
						|
  rm -rf gitrepo
 | 
						|
  mkdir gitrepo
 | 
						|
 | 
						|
  (
 | 
						|
    cd gitrepo
 | 
						|
    git init -q
 | 
						|
    git config user.name 'TestDood'
 | 
						|
    git config user.email 'TestDood@example.com'
 | 
						|
    echo "test" > test
 | 
						|
    git add test
 | 
						|
    git commit -qam "initial commit"
 | 
						|
    echo "test2" >> test
 | 
						|
    git commit -qam "second commit"
 | 
						|
    # Hack: make sure master is not the current branch
 | 
						|
    #       otherwise push will give a warning
 | 
						|
    git checkout -q --detach master
 | 
						|
  )
 | 
						|
}
 | 
						|
 | 
						|
# Set up a git checkout of the repo.
 | 
						|
setup_gitgit() {
 | 
						|
  echo "Setting up test git repo..."
 | 
						|
  rm -rf git-git
 | 
						|
  git clone -q $GITREPO_URL git-git
 | 
						|
  (
 | 
						|
    cd git-git
 | 
						|
    git config user.name 'TestDood'
 | 
						|
    git config user.email 'TestDood@example.com'
 | 
						|
  )
 | 
						|
}
 | 
						|
 | 
						|
cleanup() {
 | 
						|
  rm -rf gitrepo svnrepo svn git-git git-svn git-svn-submodule
 | 
						|
}
 | 
						|
 | 
						|
# Usage: test_expect_success "description of test" "test code".
 | 
						|
test_expect_success() {
 | 
						|
  echo "TESTING: $1"
 | 
						|
  exit_code=0
 | 
						|
  sh -c "$2" || exit_code=$?
 | 
						|
  if [ $exit_code != 0 ]; then
 | 
						|
    echo "FAILURE: $1"
 | 
						|
    return $exit_code
 | 
						|
  fi
 | 
						|
}
 | 
						|
 | 
						|
# Usage: test_expect_failure "description of test" "test code".
 | 
						|
test_expect_failure() {
 | 
						|
  echo "TESTING: $1"
 | 
						|
  exit_code=0
 | 
						|
  sh -c "$2" || exit_code=$?
 | 
						|
  if [ $exit_code = 0 ]; then
 | 
						|
    echo "SUCCESS, BUT EXPECTED FAILURE: $1"
 | 
						|
    return $exit_code
 | 
						|
  fi
 | 
						|
}
 | 
						|
 | 
						|
# Grab the XSRF token from the review server and print it to stdout.
 | 
						|
print_xsrf_token() {
 | 
						|
  curl --cookie dev_appserver_login="test@example.com:False" \
 | 
						|
    --header 'X-Requesting-XSRF-Token: 1' \
 | 
						|
    http://localhost:10000/xsrf_token 2>/dev/null
 | 
						|
}
 |