From 490d580edb15643509c15cd286c8d6ffeb9d88fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samo=20Poga=C4=8Dnik?= Date: Sat, 23 Nov 2024 18:42:11 +0100 Subject: [PATCH 1/4] Echo 'uname' on 'make test' --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 4b028a5f..0fd4be0c 100644 --- a/Makefile +++ b/Makefile @@ -46,6 +46,7 @@ help: .PHONY: test test: + @echo uname: '$(shell uname)' prove $(prove) $(test) test-all: test docker-tests From 641fbfd80e4d85da39fb8f6d0db9151ddcbcb2ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samo=20Poga=C4=8Dnik?= Date: Sat, 23 Nov 2024 18:31:09 +0100 Subject: [PATCH 2/4] Define project-wide GIT setup for all tests --- test/00-git-config.t | 55 ++++++++++++++++++++++++++++++++++++++++++++ test/setup | 7 ++++++ 2 files changed, 62 insertions(+) create mode 100644 test/00-git-config.t diff --git a/test/00-git-config.t b/test/00-git-config.t new file mode 100644 index 00000000..b121c261 --- /dev/null +++ b/test/00-git-config.t @@ -0,0 +1,55 @@ +#!/usr/bin/env bash + +set -e + +source test/setup + +use Test::More + +note "Define project-wide GIT setup for all tests" + +# Get git-subrepo project top directory +PROJ_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd ) + +if [ -z "${PROJ_DIR}" ] || [ "${HOME}" != "${PROJ_DIR}" ]; then + is "${HOME}" "${PROJ_DIR}" \ + "To define project-wide GIT setup for all tests: HOME '${HOME}' should equal PROJ_DIR '${PROJ_DIR}'" +else + + # Real GIT configuration for tests is set here: + rm -f "${PROJ_DIR}/.gitconfig" + git config --global user.email "you@example.com" + git config --global user.name "Your Name" + git config --global init.defaultBranch "master" + git config --global --add safe.directory "${PROJ_DIR}" + git config --global --add safe.directory "${PROJ_DIR}/.git" + git config --list + + test-exists "${PROJ_DIR}/.gitconfig" + + # Running tests depends on the whole project being git initialized. + # So, git initialize the project, if necessary. + if [ ! -d "${PROJ_DIR}/.git" ]; then + cd "${PROJ_DIR}" + git init . + git add . + git commit -a -m"Initial commit" + cd - + fi + + test-exists "${PROJ_DIR}/.git/" + + # Running tests depends on the whole project not being in a GIT detached HEAD state. + if ! git symbolic-ref --short --quiet HEAD &> /dev/null; then + git checkout -b test + fi + + ok "$( + git symbolic-ref --short --quiet HEAD &> /dev/null + )" "Whole project is not in a GIT detached HEAD state" + +fi + +done_testing + +teardown diff --git a/test/setup b/test/setup index a05f7ff6..7275c3ee 100644 --- a/test/setup +++ b/test/setup @@ -11,6 +11,13 @@ source "$PWD"/.rc # Get the location of this script SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +# Disable any GIT configuration set outside this 'git-subrepo' project. +# Real GIT configuration for tests is set through the first test +# (00-git-config.t). +export XDG_CONFIG_HOME=$PWD +export HOME=$PWD +export GIT_CONFIG_NOSYSTEM=1 + BASHLIB=$( find "$PWD"/ -type d -name bin -o -type d -name lib | tr '\n' ':' ) From 6a14cf0f81617ead2b3cdb853daa35cbc835a1bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samo=20Poga=C4=8Dnik?= Date: Sat, 23 Nov 2024 17:44:39 +0000 Subject: [PATCH 3/4] Set project-wide git configuration for pull and merge to ff=only --- test/00-git-config.t | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/00-git-config.t b/test/00-git-config.t index b121c261..23b85593 100644 --- a/test/00-git-config.t +++ b/test/00-git-config.t @@ -23,6 +23,8 @@ else git config --global init.defaultBranch "master" git config --global --add safe.directory "${PROJ_DIR}" git config --global --add safe.directory "${PROJ_DIR}/.git" + git config --global pull.ff only + git config --global merge.ff only git config --list test-exists "${PROJ_DIR}/.gitconfig" From ffd3a708623964cb7dae15d799a8af3018e03926 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samo=20Poga=C4=8Dnik?= Date: Sat, 16 Nov 2024 17:47:04 +0100 Subject: [PATCH 4/4] Fixed git-subrepo and tests if set ff=only Some tests failed, when ff_only is set in users git configuration; like: ... test/branch-rev-list-one-path.t .... Died at line 23 in main of test/branch-rev-list-one-path.t test/branch-rev-list-one-path.t .... No subtests run test/branch-rev-list.t ............. Died at line 26 in main of test/branch-rev-list.t test/branch-rev-list.t ............. No subtests run ... and git configuration is set like: $ git config --global pull.ff only $ git config --global merge.ff only --- lib/git-subrepo | 2 +- test/branch-rev-list-one-path.t | 2 +- test/branch-rev-list.t | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/git-subrepo b/lib/git-subrepo index 546f061a..2776790e 100755 --- a/lib/git-subrepo +++ b/lib/git-subrepo @@ -574,7 +574,7 @@ subrepo:pull() { fi else o "Merge in changes from $refs_subrepo_fetch" - FAIL=false RUN git merge "$refs_subrepo_fetch" + FAIL=false RUN git merge --ff "$refs_subrepo_fetch" if ! OK; then say "The \"git merge\" command failed:" say diff --git a/test/branch-rev-list-one-path.t b/test/branch-rev-list-one-path.t index afa49050..575ea8f1 100644 --- a/test/branch-rev-list-one-path.t +++ b/test/branch-rev-list-one-path.t @@ -19,7 +19,7 @@ subrepo-clone-bar-into-foo add-new-files bar/file3 add-new-files bar/file4 add-new-files bar/file5 - git merge master + git merge --ff master ) >& /dev/null || die test-exists "$OWNER/foo/bar/file1" "$OWNER/foo/bar/file2" "$OWNER/foo/bar/file3" "$OWNER/foo/bar/file4" "$OWNER/foo/bar/file5" diff --git a/test/branch-rev-list.t b/test/branch-rev-list.t index 243412cd..1f39df42 100644 --- a/test/branch-rev-list.t +++ b/test/branch-rev-list.t @@ -22,7 +22,7 @@ subrepo-clone-bar-into-foo add-new-files bar/file3 add-new-files bar/file4 add-new-files bar/file5 - git merge master + git merge --ff master ) >& /dev/null || die test-exists "$OWNER/foo/bar/file1" "$OWNER/foo/bar/file2" "$OWNER/foo/bar/file3" "$OWNER/foo/bar/file4" "$OWNER/foo/bar/file5"