Hi Marc, Please keep the mailing list in CC.
> > Does it still do so if you remove the 'valgrind-tests' modules from the > > list? > > > > It does not. OK, then the problem is that gnulib-tool does not know that 'valgrind-tests' is special. Fixed like this. We could have noticed the problem before, by looking at the gnulib-tool results in liboath/ and libpskc/ of oath-toolkit. 2024-08-16 Bruno Haible <br...@clisp.org> gnulib-tool.py: Don't treat 'valgrind-tests' as a tests module. Reported by Marc Nieper-Wißkirchen <marc.nieper+...@gmail.com> in <https://lists.gnu.org/archive/html/bug-gnulib/2024-08/msg00093.html>. * pygnulib/GLModuleSystem.py (_isTestsModuleName): New function. (GLModuleSystem.list, GLModule.isNonTests, GLModule.getApplicability, GLModule.getDependencies, GLModule.getAutomakeSnippet_Unconditional, GLModule.getLicense): Use it. diff --git a/pygnulib/GLModuleSystem.py b/pygnulib/GLModuleSystem.py index 09afcf6883..1f758fb0e5 100644 --- a/pygnulib/GLModuleSystem.py +++ b/pygnulib/GLModuleSystem.py @@ -55,6 +55,10 @@ def _extract_lib_SOURCES(snippet: str) -> list[str]: for line in lines for file_name in line.split() ] +def _isTestsModuleName(name: str) -> bool: + '''Determine whether a module is a tests module, given its name.''' + return name.endswith('-tests') and name != 'valgrind-tests' + #=============================================================================== # Define GLModuleSystem class @@ -162,7 +166,7 @@ def list(self) -> list[str]: # Filter out undesired file names. listing = [ line for line in listing - if self.file_is_module(line) and not line.endswith('-tests') ] + if self.file_is_module(line) and not _isTestsModuleName(line) ] modules = sorted(set(listing)) return modules @@ -307,7 +311,7 @@ def isTests(self) -> bool: def isNonTests(self) -> bool: '''Check whether module is not a *-tests module.''' - result = not self.name.endswith('-tests') + result = not _isTestsModuleName(self.name) return result def getTestsName(self) -> str: @@ -426,7 +430,7 @@ def getApplicability(self) -> str: result = result.strip() if not result: # The default is 'main' or 'tests', depending on the module's name. - if self.name.endswith('-tests'): + if _isTestsModuleName(self.name): result = 'tests' else: result = 'main' @@ -467,7 +471,7 @@ def getDependencies(self) -> str: if 'dependencies' not in self.cache: result = '' # ${module}-tests implicitly depends on ${module}, if that module exists. - if self.name.endswith('-tests'): + if _isTestsModuleName(self.name): main_module = subend('-tests', '', self.name) if self.modulesystem.exists(main_module): result += '%s\n' % main_module @@ -657,7 +661,7 @@ def getAutomakeSnippet_Unconditional(self) -> str: auxdir = self.config['auxdir'] result = '' if 'makefile-unconditional' not in self.cache: - if self.name.endswith('-tests'): + if _isTestsModuleName(self.name): # *-tests module live in tests/, not lib/. # Synthesize an EXTRA_DIST augmentation. files = self.getFiles() @@ -734,7 +738,7 @@ def getLicense(self) -> str: if 'license' not in self.cache: license = self.getLicense_Raw().strip() # Warn if the License field is missing. - if not self.name.endswith('-tests'): + if not _isTestsModuleName(self.name): if not license: if self.config['errors']: raise GLError(18, self.name)