| #!/bin/sh |
| # ==================================================================== |
| # Copyright (c) 2014 Obeo |
| # All rights reserved. This program and the accompanying materials |
| # are made available under the terms of the Eclipse Public License v1.0 |
| # which accompanies this distribution, and is available at |
| # http://www.eclipse.org/legal/epl-v10.html |
| # |
| # Contributors: |
| # Obeo - initial API and implementation |
| # ==================================================================== |
| |
| # Test specific constants |
| export WORKING_DIRECTORY="$(pwd)/target/tests/git-publish" |
| |
| export SCRIPT_PATH="$(dirname "${0}")" |
| export INIT_PATH="${SCRIPT_PATH}/../init" |
| |
| source "${SCRIPT_PATH}/../init.sh" |
| source "${SCRIPT_PATH}/test-utils.sh" |
| |
| dummyGitRepo="${SCRIPT_PATH}/data/dummy-git-repo.tar.gz" |
| |
| remotes="${WORKING_DIRECTORY}/remotes" |
| locals="${WORKING_DIRECTORY}/locals" |
| reports="$(pwd)/target/tests/results-git-publish.txt" |
| |
| beforeClass_this() { |
| rm -rf "${remotes}" |
| rm -rf "${locals}" |
| } |
| |
| test01() { |
| LSTEST "Testing git_updateLocalRepository 01" |
| mkdir -p "${remotes}" |
| tar zxf "$dummyGitRepo" -C "${remotes}" |
| mv "${remotes}/dummy-git-repo.git" "${remotes}/dummy-git-repo1.git" |
| git_updateLocalRepository "${remotes}/dummy-git-repo1.git" "${locals}/dummy-git-repo1" "master" |
| assertStringEquals "AAAA" $(cat ${locals}/dummy-git-repo1/file1) "git-publish" "test01 file1 contents" "${reports}" |
| assertStringEquals "BBBB" $(cat ${locals}/dummy-git-repo1/file2) "git-publish" "test01 file2 contents" "${reports}" |
| git_updateLocalRepository "${remotes}/dummy-git-repo1.git" "${locals}/dummy-git-repo1" "master" |
| assertStringEquals "AAAA" $(cat ${locals}/dummy-git-repo1/file1) "git-publish" "test01 redo file1 contents" "${reports}" |
| assertStringEquals "BBBB" $(cat ${locals}/dummy-git-repo1/file2) "git-publish" "test01 redo file2 contents" "${reports}" |
| } |
| |
| test02() { |
| LSTEST "Testing git_updateLocalRepository 02" |
| mkdir -p "${remotes}" |
| tar zxf "$dummyGitRepo" -C "${remotes}" |
| mv "${remotes}/dummy-git-repo.git" "${remotes}/dummy-git-repo2.git" |
| git_updateLocalRepository "${remotes}/dummy-git-repo2.git" "${locals}/dummy-git-repo2" "master" |
| |
| LSTEST "Modifying file1 in remote to CCCC, and push" |
| local oldPwd="$(pwd)" |
| mkdir -p "${remotes}/dummy-git-repo2-clone" |
| cd "${remotes}/dummy-git-repo2-clone" |
| git clone --quiet "${remotes}/dummy-git-repo2.git" "." |
| echo "CCCC" > file1 |
| git add file1 |
| git commit --quiet -m "change file1 to CCCC" |
| git push --quiet origin master |
| cd "${oldPwd}" |
| |
| git_updateLocalRepository "${remotes}/dummy-git-repo2.git" "${locals}/dummy-git-repo2" "master" |
| assertStringEquals "CCCC" $(cat ${locals}/dummy-git-repo2/file1) "git-publish" "test02 file1 contents" "${reports}" |
| assertStringEquals "BBBB" $(cat ${locals}/dummy-git-repo2/file2) "git-publish" "test02 file2 contents" "${reports}" |
| } |
| |
| test03() { |
| LSTEST "Testing git_updateLocalRepository 03 (modifiy local repo to test reset)" |
| mkdir -p "${remotes}" |
| tar zxf "$dummyGitRepo" -C "${remotes}" |
| mv "${remotes}/dummy-git-repo.git" "${remotes}/dummy-git-repo3.git" |
| git_updateLocalRepository "${remotes}/dummy-git-repo3.git" "${locals}/dummy-git-repo3" "master" |
| |
| local oldPwd="$(pwd)" |
| cd "${locals}/dummy-git-repo3" |
| LSTEST "Changing the content of a file" |
| echo "CCCC" > "${locals}/dummy-git-repo3/file1" |
| LSTEST "Creating a new file" |
| echo "DDDD" > "${locals}/dummy-git-repo3/newFile" |
| LSTEST "Creating a new file in a subfolder" |
| mkdir "${locals}/dummy-git-repo3/newFolder" |
| echo "FOOBAR" > "${locals}/dummy-git-repo3/newFolder/foobar" |
| LSTEST "Staging a changed file" |
| echo "ZZZZ" > "${locals}/dummy-git-repo3/file2" |
| git add "${locals}/dummy-git-repo3/file2" |
| cd "${oldPwd}" |
| |
| git_updateLocalRepository "${remotes}/dummy-git-repo3.git" "${locals}/dummy-git-repo3" "master" |
| assertStringEquals "AAAA" $(cat ${locals}/dummy-git-repo3/file1) "git-publish" "test03 file1 contents" "${reports}" |
| assertStringEquals "BBBB" $(cat ${locals}/dummy-git-repo3/file2) "git-publish" "test03 file2 contents" "${reports}" |
| |
| local oldPwd="$(pwd)" |
| cd "${locals}/dummy-git-repo3" |
| git diff --quiet --exit-code |
| assertIntEquals 0 $? "git-publish" "test03 local change" "${reports}" |
| git diff --quiet --exit-code --cached |
| assertIntEquals 0 $? "git-publish" "test03 local staged change" "${reports}" |
| local untrackedEntries=( $( git ls-files --other --exclude-standard --directory | tr '\n' ' ' ) ) |
| assertIntEquals 0 ${#untrackedEntries[@]} "git-publish" "test03 local untracked entries" "${reports}" |
| cd "${oldPwd}" |
| } |
| |
| test04() { |
| LSTEST "Testing git_updateRemoteRepository 04" |
| mkdir -p "${remotes}" |
| tar zxf "$dummyGitRepo" -C "${remotes}" |
| mv "${remotes}/dummy-git-repo.git" "${remotes}/dummy-git-repo4.git" |
| git_updateLocalRepository "${remotes}/dummy-git-repo4.git" "${locals}/dummy-git-repo4" "master" |
| |
| local oldPwd="$(pwd)" |
| cd "${locals}/dummy-git-repo4" |
| LSTEST "Changing the content of a file" |
| echo "CCCC" > "${locals}/dummy-git-repo4/file1" |
| LSTEST "Creating a new file" |
| echo "DDDD" > "${locals}/dummy-git-repo4/newFile" |
| LSTEST "Creating a new file in a subfolder" |
| mkdir "${locals}/dummy-git-repo4/newFolder" |
| echo "FOOBAR" > "${locals}/dummy-git-repo4/newFolder/foobar" |
| git_updateRemoteRepository "update" "Test <me@test.org>" "master" |
| cd "${oldPwd}" |
| |
| local oldPwd="$(pwd)" |
| mkdir -p "${remotes}/dummy-git-repo4-clone" |
| cd "${remotes}/dummy-git-repo4-clone" |
| git clone --quiet "${remotes}/dummy-git-repo4.git" "." |
| assertStringEquals "CCCC" $(cat ${remotes}/dummy-git-repo4-clone/file1) "git-publish" "test04 file1 contents" "${reports}" |
| assertStringEquals "BBBB" $(cat ${remotes}/dummy-git-repo4-clone/file2) "git-publish" "test04 file2 contents" "${reports}" |
| assertStringEquals "DDDD" $(cat ${remotes}/dummy-git-repo4-clone/newFile) "git-publish" "test04 newFile contents" "${reports}" |
| assertStringEquals "FOOBAR" $(cat ${remotes}/dummy-git-repo4-clone/newFolder/foobar) "git-publish" "test04 newFolder/foobar contents" "${reports}" |
| cd "${oldPwd}" |
| } |
| |
| beforeClass "${reports}" |
| beforeClass_this |
| |
| test01 |
| test02 |
| test03 |
| test04 |
| |
| afterClass "${reports}" |