diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-04-20 01:50:57 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-04-20 01:50:57 +0900 |
| commit | 4648f98272e3b5f1705a87a0bb51e69d3653c7bb (patch) | |
| tree | be270a79a167e7c50483e29975a6500d451ba9b2 /internal/rosa/python.go | |
| parent | 11d99439ac8909c3650911fafeafba17a186501f (diff) | |
internal/rosa/python: run tests via helper
Despite the lack of standards, pytest seems somewhat widely agreed upon.
Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa/python.go')
| -rw-r--r-- | internal/rosa/python.go | 90 |
1 files changed, 70 insertions, 20 deletions
diff --git a/internal/rosa/python.go b/internal/rosa/python.go index 56d50330..f31eec7b 100644 --- a/internal/rosa/python.go +++ b/internal/rosa/python.go @@ -117,14 +117,23 @@ type PipHelper struct { EnterSource bool // Whether to install to build environment after install. Install bool + // Whether to skip running tests. + SkipCheck bool + // Replaces pytest if non-empty. + Check string // Runs after install. Script string } var _ Helper = new(PipHelper) -// extra returns python. -func (*PipHelper) extra(int) P { return P{Python} } +// extra returns python, or pytest if defaults are assumed. +func (attr *PipHelper) extra(int) P { + if attr == nil || (!attr.SkipCheck && attr.Check == "") { + return P{PythonPyTest} + } + return P{Python} +} // wantsChmod returns true. func (*PipHelper) wantsChmod() bool { return true } @@ -154,18 +163,27 @@ func (attr *PipHelper) script(name string) string { --no-build-isolation \` } - script := attr.Script + var script string if attr.Install { - script = `pip3 install \ + script += `pip3 install \ --no-index \ --prefix=/system \ --no-build-isolation \ '` + sourcePath.String() + `' -` + script +` } if attr.EnterSource { - script = "cd '/usr/src/" + name + "'\n" + script + script += "cd '/usr/src/" + name + "'\n" } + if !attr.SkipCheck { + if attr.Check == "" { + // some test suites fall apart when ran out-of-tree + script += "(cd '" + sourcePath.String() + "' && pytest)\n" + } else { + script += attr.Check + } + } + script += attr.Script return ` pip3 install \ @@ -263,7 +281,10 @@ func init() { "pypa/setuptools", "v"+version, checksum, ), nil, &PipHelper{ + // error: invalid command 'dist_info' BuildIsolation: true, + // pytest circular dependency + SkipCheck: true, }, nil) } @@ -284,7 +305,10 @@ func init() { "SETUPTOOLS_SCM_PRETEND_VERSION=" + version, }, }, &PipHelper{ + // upstream is monorepo of two packages (setuptools-scm) Append: []string{"vcs-versioning"}, + // pytest circular dependency + SkipCheck: true, }, nil, PythonSetuptools, PythonPackaging, @@ -308,7 +332,10 @@ func init() { "SETUPTOOLS_SCM_PRETEND_VERSION=" + version, }, }, &PipHelper{ + // upstream is monorepo of two packages Append: []string{"setuptools-scm"}, + // pytest circular dependency + SkipCheck: true, }, nil, PythonSetuptools, PythonVCSVersioning, @@ -328,7 +355,10 @@ func init() { "pypa/flit", version, checksum, ), nil, &PipHelper{ + // upstream has other unused packages with many dependencies Append: []string{"flit_core"}, + // pytest circular dependency + SkipCheck: true, }, nil, ) } @@ -345,7 +375,10 @@ func init() { version, newFromGitHub( "pypa/packaging", version, checksum, - ), nil, nil, P{PythonFlitCore}, + ), nil, &PipHelper{ + // pytest circular dependency + SkipCheck: true, + }, P{PythonFlitCore}, ) } @@ -361,7 +394,10 @@ func init() { version, newFromGitHub( "cpburnz/python-pathspec", "v"+version, checksum, - ), nil, nil, P{PythonFlitCore}, + ), nil, &PipHelper{ + // pytest circular dependency + SkipCheck: true, + }, P{PythonFlitCore}, ) } @@ -377,7 +413,10 @@ func init() { version, newFromGitHub( "pypa/trove-classifiers", version, checksum, - ), nil, nil, P{PythonSetuptools}, + ), nil, &PipHelper{ + // pytest circular dependency + SkipCheck: true, + }, P{PythonSetuptools}, ) } @@ -397,7 +436,10 @@ func init() { Env: []string{ "SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PLUGGY=" + version, }, - }, nil, P{PythonSetuptoolsSCM}, + }, &PipHelper{ + // pytest circular dependency + SkipCheck: true, + }, P{PythonSetuptoolsSCM}, ) } @@ -414,7 +456,10 @@ func init() { "pypa/hatch", "hatch-v"+version, checksum, ), nil, &PipHelper{ + // upstream has other unused packages with many dependencies Append: []string{"backend"}, + // pytest circular dependency + SkipCheck: true, }, nil, PythonPackaging, PythonPathspec, @@ -435,7 +480,10 @@ func init() { version, newFromGitHub( "pygments/pygments", version, checksum, - ), nil, nil, P{PythonHatchling}, + ), nil, &PipHelper{ + // pytest circular dependency + SkipCheck: true, + }, P{PythonHatchling}, ) } @@ -455,7 +503,10 @@ func init() { Env: []string{ "SETUPTOOLS_SCM_PRETEND_VERSION_FOR_INICONFIG=" + version, }, - }, nil, P{PythonSetuptoolsSCM}, + }, &PipHelper{ + // pytest circular dependency + SkipCheck: true, + }, P{PythonSetuptoolsSCM}, ) } @@ -475,7 +526,10 @@ func init() { Env: []string{ "SETUPTOOLS_SCM_PRETEND_VERSION_FOR_PYTEST=" + version, }, - }, nil, P{PythonSetuptoolsSCM}, + }, &PipHelper{ + // many dependencies + SkipCheck: true, + }, P{PythonSetuptoolsSCM}, PythonIniConfig, PythonPackaging, PythonPluggy, @@ -496,13 +550,9 @@ func init() { "pallets/markupsafe", version, checksum, ), nil, &PipHelper{ - EnterSource: true, - Install: true, - Script: "pytest", - }, P{ - PythonSetuptools, - PythonPyTest, - }, + // ModuleNotFoundError: No module named 'markupsafe' + Install: true, + }, P{PythonSetuptools}, ) } |
