summaryrefslogtreecommitdiff
blob: db392b7f36322f02ac412cd9f162073e53674357 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
https://github.com/distcc/distcc/pull/460

From 45d9c4a1ef66451ed45a6afdec7098ed02082390 Mon Sep 17 00:00:00 2001
From: Rosen Matev <rosen.matev@cern.ch>
Date: Fri, 29 Apr 2022 15:42:28 +0200
Subject: [PATCH] Fix tests in pump mode

`make check` is also running tests for the pump mode
(`pump-maintainer-check` target) but they were all falling back to
the usual preprocessor mode as the include server was not started.

This is solved by prepending `pump` to the distcc invocations and
also some trivially failing tests are fixed or disabled when they
make no sense in pump mode.
---
 Makefile.in        |  2 +-
 pump.in            | 13 +++++++++++--
 test/testdistcc.py | 28 ++++++++++++++++++++++++----
 3 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index f240ca6f..79e28380 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -583,7 +583,7 @@ distccmon-gnome@EXEEXT@: $(mon_obj) $(gnome_obj)
 # the distcc version, the source location, the CPP flags (for location of the
 # includes), and the build location.
 include-server:
-	if test -z "$(PYTHON)"; then	\
+	@if test -z "$(PYTHON)"; then	\
 	  echo "Not building $@: No suitable python found"; \
 	else						\
 	  mkdir -p "$(include_server_builddir)" &&      \
diff --git a/pump.in b/pump.in
index 8e46f458..08a32c0e 100755
--- a/pump.in
+++ b/pump.in
@@ -218,7 +218,9 @@ PrintIncludeServerStatusMessage() {
 }
 
 Announce() {
-  echo "__________Using distcc-pump from $DISTCC_LOCATION"
+  if [ "$verbose" = 1 ]; then
+    echo "__________Using distcc-pump from $DISTCC_LOCATION"
+  fi
 }
 
 # Starts up the include server.  Sets $socket, $socket_dir, and
@@ -359,7 +361,9 @@ ShutDown() {
   # Always -- at exit -- shut down include_server and remove $socket_dir
   if [ -n "$include_server_pid" ] && \
     ps -p "$include_server_pid" > /dev/null; then
-    echo '__________Shutting down distcc-pump include server'
+    if [ "$verbose" = 1 ]; then
+      echo '__________Shutting down distcc-pump include server'
+    fi
     kill $include_server_pid
     # Wait until it's really dead.  We need to do this because the
     # include server may produce output after receiving SIGTERM.
@@ -508,6 +512,11 @@ Main() {
 
   Initialize
 
+  # Do not write on stdout if we're testing pump mode
+  if [ "0$DISTCC_TESTING_INCLUDE_SERVER" -ne "0" ]; then
+    verbose=0
+  fi
+
   case "$*" in
     --startup)
       # Don't put ordinary progress messages on stdout,
diff --git a/test/testdistcc.py b/test/testdistcc.py
index dfdf2f13..6377d0b6 100755
--- a/test/testdistcc.py
+++ b/test/testdistcc.py
@@ -258,7 +258,11 @@ def valgrind(self):
         return _valgrind_command;
 
     def distcc(self):
-        return self.valgrind() + "distcc "
+        if "cpp" not in _server_options:
+            return self.valgrind() + "distcc "
+        else:
+            return "DISTCC_TESTING_INCLUDE_SERVER=1 " + self.valgrind() + "pump distcc "
+
 
     def distccd(self):
         return self.valgrind() + "distccd "
@@ -422,6 +426,11 @@ class BogusOption_Case(SimpleDistCC_Case):
     Now that we support implicit compilers, this is passed to gcc,
     which returns a non-zero status."""
     def runtest(self):
+        # Disable the test in pump mode since the pump wrapper fails
+        # before we can run distcc.
+        if "cpp" in _server_options:
+            raise comfychair.NotRunError('pump wrapper expects DISTCC_HOSTS')
+
         error_rc, _, _ = self.runcmd_unchecked(self._cc + " --bogus-option")
         assert error_rc != 0
         self.runcmd(self.distcc() + self._cc + " --bogus-option", error_rc)
@@ -432,7 +441,7 @@ def runtest(self):
 class CompilerOptionsPassed_Case(SimpleDistCC_Case):
     """Test that options following the compiler name are passed to the compiler."""
     def runtest(self):
-        out, err = self.runcmd("DISTCC_HOSTS=localhost "
+        out, err = self.runcmd("DISTCC_HOSTS=localhost%s " % _server_options
                                + self.distcc()
                                + self._cc + " --help")
         if re.search('distcc', out):
@@ -1422,7 +1431,8 @@ def source(self):
 
     def setupEnv(self):
         Compilation_Case.setupEnv(self)
-        os.environ['DISTCC_HOSTS'] = '127.0.0.1:%d,lzo' % self.server_port
+        os.environ['DISTCC_HOSTS'] = (
+            '127.0.0.1:%d,lzo' % self.server_port + _server_options)
 
 class DashONoSpace_Case(CompileHello_Case):
     def compileCmd(self):
@@ -1525,6 +1535,11 @@ def source(self):
 """
 
     def runtest(self):
+        # Disable the test in pump mode since the pump wrapper fails
+        # before we can run distcc.
+        if "cpp" in _server_options:
+            raise comfychair.NotRunError('pump wrapper expects DISTCC_HOSTS')
+
         # -P means not to emit linemarkers
         self.runcmd(self.distcc()
                     + self._cc + " -E testtmp.c -o testtmp.out")
@@ -1828,7 +1843,7 @@ class NoServer_Case(CompileHello_Case):
     """Invalid server name"""
     def setup(self):
         self.stripEnvironment()
-        os.environ['DISTCC_HOSTS'] = 'no.such.host.here'
+        os.environ['DISTCC_HOSTS'] = 'no.such.host.here' + _server_options
         self.distcc_log = 'distcc.log'
         os.environ['DISTCC_LOG'] = self.distcc_log
         self.createSource()
@@ -1874,6 +1889,11 @@ class NoHosts_Case(CompileHello_Case):
     We expect compilation to succeed, but with a warning that it was
     run locally."""
     def runtest(self):
+        # Disable the test in pump mode since the pump wrapper fails
+        # before we can run distcc.
+        if "cpp" in _server_options:
+            raise comfychair.NotRunError('pump wrapper expects DISTCC_HOSTS')
+
         # WithDaemon_Case sets this to point to the local host, but we
         # don't want that.  Note that you cannot delete environment
         # keys in Python1.5, so we need to just set them to the empty