]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
pytest: do not ignore server issues
authorStefan Eissing <stefan@eissing.org>
Tue, 16 Dec 2025 09:12:07 +0000 (10:12 +0100)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 16 Dec 2025 12:19:00 +0000 (13:19 +0100)
When a test server is found or configured, do not silently ignore
errors to start and disable them when checking their version.

This forces pytest to fail when a server is not operating
as it should.

Closes #19996

tests/http/testenv/env.py

index 8fbc3bd2f3a594f9c2759414d1afa22eb597f9a4..d0ce6f53f82bb87680dd0ce3fbef059607306ed6 100644 (file)
@@ -215,110 +215,92 @@ class EnvConfig:
         self._nghttpx_version = None
         self.nghttpx_with_h3 = False
         if self.nghttpx is not None:
-            try:
-                self._nghttpx_version = NghttpxUtil.version(self.nghttpx)
-                self.nghttpx_with_h3 = NghttpxUtil.version_with_h3(self._nghttpx_version)
-            except RuntimeError:
-                # not a working nghttpx
-                log.exception('checking nghttpx version')
-                self.nghttpx = None
+            self._nghttpx_version = NghttpxUtil.version(self.nghttpx)
+            self.nghttpx_with_h3 = NghttpxUtil.version_with_h3(self._nghttpx_version)
 
         self.caddy = self.config['caddy']['caddy']
         self._caddy_version = None
         if len(self.caddy.strip()) == 0:
             self.caddy = None
         if self.caddy is not None:
-            try:
-                p = subprocess.run(args=[self.caddy, 'version'],
-                                   capture_output=True, text=True)
-                if p.returncode != 0:
-                    # not a working caddy
-                    self.caddy = None
-                m = re.match(r'v?(\d+\.\d+\.\d+).*', p.stdout)
-                if m:
-                    self._caddy_version = m.group(1)
-                else:
-                    raise RuntimeError(f'Unable to determine cadd version from: {p.stdout}')
-            # TODO: specify specific exceptions here
-            except:  # noqa: E722
+            p = subprocess.run(args=[self.caddy, 'version'],
+                               capture_output=True, text=True)
+            if p.returncode != 0:
+                # not a working caddy
                 self.caddy = None
+            m = re.match(r'v?(\d+\.\d+\.\d+).*', p.stdout)
+            if m:
+                self._caddy_version = m.group(1)
+            else:
+                raise RuntimeError(f'Unable to determine cadd version from: {p.stdout}')
 
         self.vsftpd = self.config['vsftpd']['vsftpd']
         if self.vsftpd == '':
             self.vsftpd = None
         self._vsftpd_version = None
         if self.vsftpd is not None:
-            try:
-                with tempfile.TemporaryFile('w+') as tmp:
-                    p = subprocess.run(args=[self.vsftpd, '-v'],
-                                       capture_output=True, text=True, stdin=tmp)
-                    if p.returncode != 0:
-                        # not a working vsftpd
-                        self.vsftpd = None
-                    if p.stderr:
-                        ver_text = p.stderr
-                    else:
-                        # Oddly, some versions of vsftpd write to stdin (!)
-                        # instead of stderr, which is odd but works. If there
-                        # is nothing on stderr, read the file on stdin and use
-                        # any data there instead.
-                        tmp.seek(0)
-                        ver_text = tmp.read()
-                m = re.match(r'vsftpd: version (\d+\.\d+\.\d+)', ver_text)
-                if m:
-                    self._vsftpd_version = m.group(1)
-                elif len(p.stderr) == 0:
-                    # vsftp does not use stdout or stderr for printing its version... -.-
-                    self._vsftpd_version = 'unknown'
+            with tempfile.TemporaryFile('w+') as tmp:
+                p = subprocess.run(args=[self.vsftpd, '-v'],
+                                   capture_output=True, text=True, stdin=tmp)
+                if p.returncode != 0:
+                    # not a working vsftpd
+                    self.vsftpd = None
+                if p.stderr:
+                    ver_text = p.stderr
                 else:
-                    raise Exception(f'Unable to determine VsFTPD version from: {p.stderr}')
-            except Exception:
-                self.vsftpd = None
+                    # Oddly, some versions of vsftpd write to stdin (!)
+                    # instead of stderr, which is odd but works. If there
+                    # is nothing on stderr, read the file on stdin and use
+                    # any data there instead.
+                    tmp.seek(0)
+                    ver_text = tmp.read()
+            m = re.match(r'vsftpd: version (\d+\.\d+\.\d+)', ver_text)
+            if m:
+                self._vsftpd_version = m.group(1)
+            elif len(p.stderr) == 0:
+                # vsftp does not use stdout or stderr for printing its version... -.-
+                self._vsftpd_version = 'unknown'
+            else:
+                raise Exception(f'Unable to determine VsFTPD version from: {p.stderr}')
 
         self.danted = self.config['danted']['danted']
         if self.danted == '':
             self.danted = None
         self._danted_version = None
         if self.danted is not None:
-            try:
-                p = subprocess.run(args=[self.danted, '-v'],
-                                   capture_output=True, text=True)
-                assert p.returncode == 0
-                if p.returncode != 0:
-                    # not a working vsftpd
-                    self.danted = None
-                m = re.match(r'^Dante v(\d+\.\d+\.\d+).*', p.stdout)
-                if not m:
-                    m = re.match(r'^Dante v(\d+\.\d+\.\d+).*', p.stderr)
-                if m:
-                    self._danted_version = m.group(1)
-                else:
-                    self.danted = None
-                    raise Exception(f'Unable to determine danted version from: {p.stderr}')
-            except Exception:
+            p = subprocess.run(args=[self.danted, '-v'],
+                               capture_output=True, text=True)
+            assert p.returncode == 0
+            if p.returncode != 0:
+                # not a working vsftpd
                 self.danted = None
+            m = re.match(r'^Dante v(\d+\.\d+\.\d+).*', p.stdout)
+            if not m:
+                m = re.match(r'^Dante v(\d+\.\d+\.\d+).*', p.stderr)
+            if m:
+                self._danted_version = m.group(1)
+            else:
+                self.danted = None
+                raise Exception(f'Unable to determine danted version from: {p.stderr}')
 
         self.sshd = self.config['sshd']['sshd']
         if self.sshd == '':
             self.sshd = None
         self._sshd_version = None
         if self.sshd is not None:
-            try:
-                p = subprocess.run(args=[self.sshd, '-V'],
-                                   capture_output=True, text=True)
-                assert p.returncode == 0
-                if p.returncode != 0:
-                    self.sshd = None
-                else:
-                    m = re.match(r'^OpenSSH_(\d+\.\d+.*),.*', p.stderr)
-                    assert m, f'version: {p.stderr}'
-                    if m:
-                        self._sshd_version = m.group(1)
-                    else:
-                        self.sshd = None
-                        raise Exception(f'Unable to determine sshd version from: {p.stderr}')
-            except Exception:
+            p = subprocess.run(args=[self.sshd, '-V'],
+                               capture_output=True, text=True)
+            assert p.returncode == 0
+            if p.returncode != 0:
                 self.sshd = None
+            else:
+                m = re.match(r'^OpenSSH_(\d+\.\d+.*),.*', p.stderr)
+                assert m, f'version: {p.stderr}'
+                if m:
+                    self._sshd_version = m.group(1)
+                else:
+                    self.sshd = None
+                    raise Exception(f'Unable to determine sshd version from: {p.stderr}')
 
         if self.sshd:
             self.sftpd = self.config['sshd']['sftpd']