# [PATCHv2 0/3] Testing installed gitweb

4 messages from 2010-09-26 to 2010-09-26. Participants: Jakub Narebski.
Thread: https://gitlist.dev/t/25250

## Jakub Narebski, 2010-09-26 13:02

Subject: [PATCHv2 0/3] Testing installed gitweb
Message-ID: <1285506146-8009-1-git-send-email-jnareb@gmail.com>
URL: https://gitlist.dev/e/1285506146-8009-1-git-send-email-jnareb%40gmail.com

```
This series add a mechanism to easy test installed gitweb, via

  $ make -C gitweb test-installed

This way we can check if the install procedure work correctly, when
gitweb gets split into smaller modules.

This series applies on top of 'jn/gitweb-test-lib' branch, merged as
4621733 into next, i.e. on top of commit 89d1b5b (t/gitweb-lib.sh: Use
tabs for indent consistently, 2010-09-12).


The major change from previous version is that 'test-installed' target
no longer depends on 'install', which means that it doesn't force
installing gitweb each time it is run.


Jakub Narebski (3):
  gitweb/Makefile: Include gitweb/config.mak
  t/gitweb-lib.sh: Add support for GITWEB_TEST_INSTALLED
  gitweb/Makefile: Add 'test' and 'test-installed' targets

 gitweb/Makefile |   12 +++++++++++-
 t/Makefile      |    4 ++++
 t/gitweb-lib.sh |   21 +++++++++++++++++++--
 3 files changed, 34 insertions(+), 3 deletions(-)

-- 
1.7.3

```

## Jakub Narebski, 2010-09-26 13:02

Subject: [PATCHv2 1/3] gitweb/Makefile: Include gitweb/config.mak
Message-ID: <1285506146-8009-2-git-send-email-jnareb@gmail.com>
URL: https://gitlist.dev/e/1285506146-8009-2-git-send-email-jnareb%40gmail.com
In-Reply-To: <1285506146-8009-1-git-send-email-jnareb@gmail.com>

```
Allow for gitweb-specific Makefile config to reside in config.mak file
in the 'gitweb/' subdirectory.  This means that gitweb-specific
build-time configuration variable can reside in gitweb-specific
gitweb/config.mak

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
No longer RFC, but it can still be safely dropped from this series.

 gitweb/Makefile |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/gitweb/Makefile b/gitweb/Makefile
index 2fb7c2d..88bcf08 100644
--- a/gitweb/Makefile
+++ b/gitweb/Makefile
@@ -39,6 +39,7 @@ GITWEB_SITE_FOOTER =
 # include user config
 -include ../config.mak.autogen
 -include ../config.mak
+-include config.mak
 
 # determine version
 ../GIT-VERSION-FILE: .FORCE-GIT-VERSION-FILE
-- 
1.7.3

```

## Jakub Narebski, 2010-09-26 13:02

Subject: [PATCHv2 2/3] t/gitweb-lib.sh: Add support for GITWEB_TEST_INSTALLED
Message-ID: <1285506146-8009-3-git-send-email-jnareb@gmail.com>
URL: https://gitlist.dev/e/1285506146-8009-3-git-send-email-jnareb%40gmail.com
In-Reply-To: <1285506146-8009-1-git-send-email-jnareb@gmail.com>

```
You can set the GITWEB_TEST_INSTALLED environment variable to the
gitwebdir (the directory where gitweb is installed / deployed to) of
an existing gitweb instalation, or to the pathname of installed gitweb
script, to test that installation.

This change is intended to make it possible to test that process of
installing gitweb and the modules it depends on works correctly (after
splitting gitweb).

If GITWEB_TEST_INSTALLED is used, print what script are we testing
to make it easy to spot that we test installed gitweb.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
No change from previous version.

 t/gitweb-lib.sh |   21 +++++++++++++++++++--
 1 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/t/gitweb-lib.sh b/t/gitweb-lib.sh
index 8c490c8..8b5b987 100755
--- a/t/gitweb-lib.sh
+++ b/t/gitweb-lib.sh
@@ -32,17 +32,34 @@ EOF
 	cat >.git/description <<EOF
 $0 test repository
 EOF
+
+	# You can set the GITWEB_TEST_INSTALLED environment variable to
+	# the gitwebdir (the directory where gitweb is installed / deployed to)
+	# of an existing gitweb instalation to test that installation,
+	# or simply to pathname of installed gitweb script.
+	if test -n "$GITWEB_TEST_INSTALLED" ; then
+		if test -d $GITWEB_TEST_INSTALLED; then
+			SCRIPT_NAME="$GITWEB_TEST_INSTALLED/gitweb.cgi"
+		else
+			SCRIPT_NAME="$GITWEB_TEST_INSTALLED"
+		fi
+		test -f "$SCRIPT_NAME" ||
+		error "Cannot find gitweb at $GITWEB_TEST_INSTALLED."
+		say "# Testing $SCRIPT_NAME"
+	else # normal case, use source version of gitweb
+		SCRIPT_NAME="$GIT_BUILD_DIR/gitweb/gitweb.perl"
+	fi
+	export SCRIPT_NAME
 }
 
 gitweb_run () {
 	GATEWAY_INTERFACE='CGI/1.1'
 	HTTP_ACCEPT='*/*'
 	REQUEST_METHOD='GET'
-	SCRIPT_NAME="$GIT_BUILD_DIR/gitweb/gitweb.perl"
 	QUERY_STRING=""$1""
 	PATH_INFO=""$2""
 	export GATEWAY_INTERFACE HTTP_ACCEPT REQUEST_METHOD \
-		SCRIPT_NAME QUERY_STRING PATH_INFO
+		QUERY_STRING PATH_INFO
 
 	GITWEB_CONFIG=$(pwd)/gitweb_config.perl
 	export GITWEB_CONFIG
-- 
1.7.3

```

## Jakub Narebski, 2010-09-26 13:02

Subject: [PATCHv2 3/3] gitweb/Makefile: Add 'test' and 'test-installed' targets
Message-ID: <1285506146-8009-4-git-send-email-jnareb@gmail.com>
URL: https://gitlist.dev/e/1285506146-8009-4-git-send-email-jnareb%40gmail.com
In-Reply-To: <1285506146-8009-1-git-send-email-jnareb@gmail.com>

```
The 'test-installed' target in gitweb/Makefile tests installed gitweb,
using the same destination directory that 'install' target uses.

The 'test' target is just a convenience wrapper invoking 'gitweb-test'
target of t/Makefile.

Signed-off-by: Jakub Narebski <jnareb@gmail.com>
---
Changes from previous version:

* 'test-installed' no longer has 'install' as requirement, which means that
  testing installed target does not force an install.  We cannot check easily
  and reliably that install is fresh.

* Added 'test' convenience target.

* Moved "Testing rules" section before "Installation rules", the way it is done
  in main Makefile.

 gitweb/Makefile |   11 ++++++++++-
 t/Makefile      |    4 ++++
 2 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/gitweb/Makefile b/gitweb/Makefile
index 88bcf08..df908a1 100644
--- a/gitweb/Makefile
+++ b/gitweb/Makefile
@@ -144,6 +144,15 @@ gitweb.cgi: gitweb.perl GITWEB-BUILD-OPTIONS
 	chmod +x $@+ && \
 	mv $@+ $@
 
+### Testing rules
+
+test:
+	$(MAKE) -C ../t gitweb-test
+
+test-installed:
+	GITWEB_TEST_INSTALLED='$(DESTDIR_SQ)$(gitwebdir_SQ)' \
+		$(MAKE) -C ../t gitweb-test
+
 ### Installation rules
 
 install: all
@@ -157,5 +166,5 @@ install: all
 clean:
 	$(RM) gitweb.cgi static/gitweb.min.js static/gitweb.min.css GITWEB-BUILD-OPTIONS
 
-.PHONY: all clean install .FORCE-GIT-VERSION-FILE FORCE
+.PHONY: all clean install test test-installed .FORCE-GIT-VERSION-FILE FORCE
 
diff --git a/t/Makefile b/t/Makefile
index c7baefb..7aa409a 100644
--- a/t/Makefile
+++ b/t/Makefile
@@ -17,6 +17,7 @@ SHELL_PATH_SQ = $(subst ','\'',$(SHELL_PATH))
 
 T = $(wildcard t[0-9][0-9][0-9][0-9]-*.sh)
 TSVN = $(wildcard t91[0-9][0-9]-*.sh)
+TGITWEB = $(wildcard t95[0-9][0-9]-*.sh)
 
 all: pre-clean
 	$(MAKE) aggregate-results-and-cleanup
@@ -46,6 +47,9 @@ full-svn-test:
 	$(MAKE) $(TSVN) GIT_SVN_NO_OPTIMIZE_COMMITS=1 LC_ALL=C
 	$(MAKE) $(TSVN) GIT_SVN_NO_OPTIMIZE_COMMITS=0 LC_ALL=en_US.UTF-8
 
+gitweb-test:
+	$(MAKE) $(TGITWEB)
+
 valgrind:
 	GIT_TEST_OPTS=--valgrind $(MAKE)
 
-- 
1.7.3

```
