chore: feature tests use sys.executable; sync yarn.lock to package.json

1. AppStarter.start_app() spawned the pgAdmin subprocess with bare
   "python" via subprocess.Popen. macOS (and many modern Linux
   distros) do not provide a "python" symlink — only "python3" or a
   venv-specific binary. The result was an Errno 2 "No such file or
   directory" the moment a feature test tried to launch pgAdmin.

   Switch to sys.executable so the spawned pgAdmin uses the same
   interpreter and venv as the test runner. Works regardless of how
   the venv is named or whether "python" is on PATH.

2. yarn.lock churn from `yarn install` resolving the @tanstack /
   moment-timezone / postcss peer-dep ranges. Snapshot the resolved
   versions for reproducibility (post the dependency bumps in
   d55ffe405).
This commit is contained in:
Ashesh Vashi
2026-05-02 11:02:30 +05:30
parent e7eaef0dc0
commit a50a553b0a
2 changed files with 27 additions and 21 deletions
+7 -1
View File
@@ -10,6 +10,7 @@ import os
import subprocess import subprocess
import signal import signal
import secrets import secrets
import sys
import time import time
from selenium.common.exceptions import WebDriverException from selenium.common.exceptions import WebDriverException
@@ -35,8 +36,13 @@ class AppStarter:
env.update(os.environ) env.update(os.environ)
# Add OS check for pass value for 'preexec_fn' # Add OS check for pass value for 'preexec_fn'
# Use sys.executable instead of bare "python" — macOS / many
# Linux distros do not provide a "python" alias, only "python3"
# or a venv-specific binary. sys.executable is the interpreter
# currently running the test runner, so the spawned pgAdmin
# uses the same Python and venv.
self.pgadmin_process = subprocess.Popen( self.pgadmin_process = subprocess.Popen(
["python", "pgAdmin4.py"], [sys.executable, "pgAdmin4.py"],
shell=False, shell=False,
preexec_fn=None if os.name == 'nt' else os.setsid, preexec_fn=None if os.name == 'nt' else os.setsid,
stderr=open(os.devnull, 'w'), stderr=open(os.devnull, 'w'),
+20 -20
View File
@@ -3586,21 +3586,21 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@tanstack/query-core@npm:5.100.1": "@tanstack/query-core@npm:5.100.7":
version: 5.100.1 version: 5.100.7
resolution: "@tanstack/query-core@npm:5.100.1" resolution: "@tanstack/query-core@npm:5.100.7"
checksum: 10c0/62eebf0b493d5931fd0f7946bc321736d9467b9c2e1e52f02eac930a221c38e465305b29920ef6437d18fe10c7f0f3671d2ff60e218672134ef104a2f33edaf5 checksum: 10c0/249ca6e07e69df1646da9fd9c01e9fce0f45c17c855be2cb2321098d049a5e3f0f40d13a66cc75d3aafe7dd90a4984e99aa640eac4b9c01205c5cc3fe6aee7b1
languageName: node languageName: node
linkType: hard linkType: hard
"@tanstack/react-query@npm:^5.100.1": "@tanstack/react-query@npm:^5.100.5":
version: 5.100.1 version: 5.100.7
resolution: "@tanstack/react-query@npm:5.100.1" resolution: "@tanstack/react-query@npm:5.100.7"
dependencies: dependencies:
"@tanstack/query-core": "npm:5.100.1" "@tanstack/query-core": "npm:5.100.7"
peerDependencies: peerDependencies:
react: ^18 || ^19 react: ^18 || ^19
checksum: 10c0/23617f2197b400c32ea15bf448d7cc03b0441f8c431e9c4ecf48c5a85cbfdbca48b4d07ec0590984bd9795e1c9fd7e828f57a2bbe808c2526edde09e15815250 checksum: 10c0/c20eebadb2bbb195d29b0071317470ec08c7e225ac760f87d022c3a57d28092e6d1c25fac15ebea536f084dca813fd36a0d6cbca1c9b8b1360891c44bef2d67c
languageName: node languageName: node
linkType: hard linkType: hard
@@ -10846,12 +10846,12 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"moment-timezone@npm:^0.6.1": "moment-timezone@npm:^0.6.2":
version: 0.6.1 version: 0.6.2
resolution: "moment-timezone@npm:0.6.1" resolution: "moment-timezone@npm:0.6.2"
dependencies: dependencies:
moment: "npm:^2.29.4" moment: "npm:^2.29.4"
checksum: 10c0/708f7a4d2c2d4eb162247ac44655cf5d4eb4076867d308c92cb8967996879bc494b220cea746922c8417769be7561444540e1122de95909e63aeab1ad835e389 checksum: 10c0/dbdca171625edaa73e55e4db152b9d3fe14035766e86c20a4bf881570418ecdbc50cc2d3a84101967b229a5ac0630031b4c3a49b0ba8447a9cd458d76e383cd5
languageName: node languageName: node
linkType: hard linkType: hard
@@ -11983,14 +11983,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"postcss@npm:^8.5.10": "postcss@npm:^8.5.12":
version: 8.5.10 version: 8.5.13
resolution: "postcss@npm:8.5.10" resolution: "postcss@npm:8.5.13"
dependencies: dependencies:
nanoid: "npm:^3.3.11" nanoid: "npm:^3.3.11"
picocolors: "npm:^1.1.1" picocolors: "npm:^1.1.1"
source-map-js: "npm:^1.2.1" source-map-js: "npm:^1.2.1"
checksum: 10c0/c592dffa0c4873b401f01955b265538d9942f425040df5e2b8f0ad34c83773a792ea0fa5859ccc99cfb5b955b4ebff118ab7056315388dc83b107b0fa8313576 checksum: 10c0/3aa7c8cbdfbfd99b34406a433cef56d164dd135fc9cb9e63d487cc363291f877a55ec7b8ff6ec15348c17c2d98a43be46bfad671e6340403041a3e79f70c2f2f
languageName: node languageName: node
linkType: hard linkType: hard
@@ -13006,7 +13006,7 @@ __metadata:
"@simonwep/pickr": "npm:^1.9.1" "@simonwep/pickr": "npm:^1.9.1"
"@svgr/webpack": "npm:^8.1.0" "@svgr/webpack": "npm:^8.1.0"
"@szhsin/react-menu": "npm:^4.5.1" "@szhsin/react-menu": "npm:^4.5.1"
"@tanstack/react-query": "npm:^5.100.1" "@tanstack/react-query": "npm:^5.100.5"
"@tanstack/react-table": "npm:^8.21.3" "@tanstack/react-table": "npm:^8.21.3"
"@tanstack/react-virtual": "npm:^3.13.24" "@tanstack/react-virtual": "npm:^3.13.24"
"@testing-library/dom": "npm:10.4.1" "@testing-library/dom": "npm:10.4.1"
@@ -13066,12 +13066,12 @@ __metadata:
marked: "npm:^18.0.2" marked: "npm:^18.0.2"
mini-css-extract-plugin: "npm:^2.10.2" mini-css-extract-plugin: "npm:^2.10.2"
moment: "npm:^2.30.1" moment: "npm:^2.30.1"
moment-timezone: "npm:^0.6.1" moment-timezone: "npm:^0.6.2"
notificar: "npm:^1.0.1" notificar: "npm:^1.0.1"
notistack: "npm:^3.0.2" notistack: "npm:^3.0.2"
papaparse: "npm:^5.5.3" papaparse: "npm:^5.5.3"
path-fx: "npm:^2.1.2" path-fx: "npm:^2.1.2"
postcss: "npm:^8.5.10" postcss: "npm:^8.5.12"
postcss-loader: "npm:^8.2.1" postcss-loader: "npm:^8.2.1"
process: "npm:^0.11.10" process: "npm:^0.11.10"
prop-types: "npm:^15.8.1" prop-types: "npm:^15.8.1"