manpagez: man pages & more
info libtool
Home | html | info | man

File: libtool.info,  Node: Test descriptions,  Next: When tests fail,  Up: Libtool test suite

14.1.1 Description of test suite
--------------------------------

The test suite uses keywords to classify certain test groups:

‘CXX’
‘F77’
‘FC’
‘GCJ’
     The test group exercises one of these ‘libtool’ language tags.

‘autoconf’
‘automake’
     These keywords denote that the respective external program is
     needed by the test group.  The tests are typically skipped if the
     program is not installed.  The ‘automake’ keyword may also denote
     use of the ‘aclocal’ program.

‘interactive’
     This test group may require user interaction on some systems.
     Typically, this means closing a popup window about a DLL load error
     on Windows.

‘libltdl’
     Denote that the ‘libltdl’ library is exercised by the test group.

‘libtool’
‘libtoolize’
     Denote that the ‘libtool’ or ‘libtoolize’ scripts are exercised by
     the test group, respectively.

‘recursive’
     Denote that this test group may recursively re-invoke the test
     suite itself, with changed settings and maybe a changed ‘libtool’
     script.  You may use the ‘INNER_TESTSUITEFLAGS’ variable to pass
     additional settings to this recursive invocation.  Typically,
     recursive invocations delimit the set of tests with another
     keyword, for example by passing ‘-k libtool’ right before the
     expansion of the ‘INNER_TESTSUITEFLAGS’ variable (without an
     intervening space, so you get the chance for further delimitation).

     Test groups with the keyword ‘recursive’ should not be denoted with
     keywords, in order to avoid infinite recursion.  As a consequence,
     recursive test groups themselves should never require user
     interaction, while the test groups they invoke may do so.

   There is a convenience target ‘check-noninteractive’ that runs all
tests from both test suites that do not cause user interaction on
Windows.  Conversely, the target ‘check-interactive’ runs the complement
of tests and might require closing popup windows about DLL load errors
on Windows.

   Here is a list of the some of the current files in the test suite,
and what they test for:

‘tests/am-subdirs.at’
     Tests that a binary can be built and ran from outside of the
     sub-directory that it is built and ran in.

‘tests/archive-in-archive.at’
     Tests convenience archive within another convenience archive.
     Compiles ‘foo()’ in ‘libfoo’, then compiles ‘libfoo’ (and ‘bar()’
     function) into ‘libbar’.

‘tests/bindir.at’
     Tests include a demonstration of various scenarios related to using
     the ‘-bindir’ option with ‘libtool’, verifying that installed files
     are correctly linked and executed, and demonstrating flexibility in
     handling different installation paths and adapting to changing
     directory structures.

‘tests/bug_42313.at’
     Tests that there are no conflicting warnings about AC_PROG_RANLIB
     by verifying no autoscan AC_PROG_RANLIB warning and checking that
     AC_PROG_RANLIB declaration has a warning.

‘tests/bug_62343.at’
     Tests that the ‘-no-canonical-prefixes’ flag is not removed from
     the linking command, but it is instead passed through to the
     linker.

‘tests/bug_71489.at’
     Tests that the local version of an installed program is used both
     with and without an external library.

‘tests/cdemo.at’
     Tests include a demonstration of ‘libtool’ convenience libraries, a
     mechanism that allows build-time static libraries to be created, in
     a way that their components can be later linked into programs or
     other libraries, even shared ones.

‘tests/cmdline_wrap.at’
     Tests include a verification that ‘libtool’ operates properly when
     the maximum command line length is very small.

‘tests/configure-funcs.at’
     Tests creation of shell functions shared with ‘configure’ and
     ‘libtool’.

‘tests/configure-iface.at’
     Tests that exercise the configure interface to ‘libltdl’.

‘tests/convenience.at’
     Tests demonstrate ‘libtool’'s convenience archive capabilities for
     C, C++, Fortran, and Java languages.

‘tests/ctor.at’
     Test that ‘libtool’ can handle code with C++ constructors.

‘tests/cwrapper.at’
     Test cwrapper compliance with standards for uninstalled
     executables, string length, and installed shared libraries.

‘tests/darwin.at’
     Tests for macOS X including compilation, concurrent library
     extraction, ‘GDB’ debug information, ‘ld’ warnings, and verifying
     ‘.dylib’ and ‘.so’ files can be used with ‘lt_dlopen’.

‘tests/demo.at’
     Tests include a demonstration of a trivial package that uses
     ‘libtool’.  The tests include scenarios to build both static and
     shared libraries, only static libraries, only shared libraries,
     disabling fast-install mode, building PIC code, and building
     non-PIC code.

‘tests/depdemo.at’
     Tests include a demonstration of inter-library dependencies with
     ‘libtool’.  The test programs link some interdependent libraries
     under different scenarios.

‘tests/deplib-in-subdir.at’
     Tests building and linking various libraries within various
     directories and sub-directories while changing directories as well.
     It should be possible to use a nontrivial relative path to the
     output file name when creating libraries and programs.  The
     ‘deplibs’ of these might have relative paths as well.  When
     executing uninstalled programs, the paths relative to ‘$PWD’ at
     build time needs to be translated to a path valid at execution
     time.  Also test installing these libraries and programs; however,
     use consistent relative paths between ‘libtool’ ‘--mode=link’ and
     ‘libtool’ ‘--mode=install’ in this test.

‘tests/deplibs-ident.at’
     Tests the correct detection and handling of identical dependency
     libraries when using ‘libtool’.

‘tests/deplibs-mingw.at’
     Tests include various scenarios related to detecting deplibs
     correctly, including cases where there is no ‘file’ command
     installed as well as the host OS being MinGW.

‘tests/destdir.at’
     Installs some libs in ‘$DESTDIR’, moves them to a different dir,
     then installs some false libraries in ‘$DESTDIR’ that should not be
     linked against.  If the program refers to these false libraries,
     there is a bug.

‘tests/dlloader-api.at’
     Tests that ‘lt_dlopen’ can open a shared library and call a
     function from the library, verifies that ‘lt_dlsym’ can find a
     symbol in the opened library, and make sure that ‘lt_dlclose’ can
     properly close the library.

‘tests/dumpbin-symbols.at’
     Tests whether on Windows a convenience symbol in a section of a
     ‘.lib’ file is present even if that section is hidden in the ‘.obj’
     file.

‘tests/duplicate_conv.at’
     Tests two convenience archives with the same name, and also
     containing an object with the same name.

‘tests/duplicate_deps.at’
     Tests circular call of dependencies between two libraries, ‘liba’
     and ‘libb’.  Function ‘a1()’ from ‘liba’ calls ‘b1()’ from ‘libb’
     and function ‘b1()’ from ‘libb’ calls ‘a2()’ from ‘liba’.

‘tests/duplicate_members.at’
     Tests a library with multiple files of the same name (from
     different directories), such as ‘1/a.c’, ‘2/a.c’, ‘3/a.c’, etc.

‘tests/early-libtool.at’
     Tests building binaries using ‘libtool’ using two configure
     approaches.

‘tests/exceptions.at’
     Tests C++ exception handling with ‘libtool’.

‘tests/execute-mode.at’
     Tests the ‘--mode=execute’ feature of ‘libtool’.

‘tests/exeext.at’
     Tests ensure that ‘$EXEEXT’ handling works by linking and
     installing an executable.

‘tests/export.at’
     Tests symbol exports if shared libraries are enabled.

‘tests/export-def.at’
     Test exporting from a DLL with module definition (‘.def’ files).
     This test only runs if shared libraries are enabled and building a
     DLL is supported.

‘tests/f77demo.at’
     Tests test Fortran 77 support in ‘libtool’ by creating libraries
     from Fortran 77 sources, and mixed Fortran and C sources, and a
     Fortran 77 program to use the former library, and a C program to
     use the latter library.

‘tests/fail.at’
     Tests to ensure that ‘libtool’ really fails when it should,
     including after compile failure, program creation failure, and
     shared library creation failure.

‘tests/fcdemo.at’
     Tests are similar to the ‘tests/f77demo.at’ tests, except that
     Fortran 90 is used in combination with the ‘FC’ interface provided
     by Autoconf and Automake.

‘tests/flags.at’
     Tests include checks that compile and linker flags get passed
     through ‘libtool’.  Tests flags for C, C++, Fortran 77, and Fortran
     90.

‘tests/help.at’
     Tests a variety of mode commands, including mode short-hands, to
     ensure basic command line functionality.  Also verify that the
     ‘--debug’ flag is handled correctly in each mode.

‘tests/indirect_deps.at’
     Tests indirect dependencies (or nested dependencies).  ‘libd’
     depends on ‘libconv’, which depends on ‘libb’, which depends on
     ‘liba’.

‘tests/infer-tag.at’
     Tests that ‘func_infer_tag’ works by compiling various code
     snippets in various languages (C, C++, Fortran, Java) without a
     ‘--tag’ flag.

‘tests/inherited_flags.at’
     Tests the functionality of the ‘inherited_linker_flags’ variable in
     ‘libtool’ library files.

‘tests/install.at’
     Tests install mode and ensures that ‘install_override_mode’
     overrides the mode of the shared library (and only the shared
     library).

‘tests/lalib-syntax.at’
     Tests parsing of ‘.la’ files including both correctly formed ‘.la’
     files and malformed or bogus ‘.la’ files.

‘tests/libtool.at’
     Tests basic ‘libtool’ functionality including shell meta-character
     removal, lack of supplied mode option, file extension handling,
     simple linking, ‘objectlist’ flag usage, and ‘LT_SUPPORTED_TAG’
     usage.

‘tests/libtoolize.at’
     Tests that errors and warnings are reported for invalid and unknown
     ‘LIBTOOLIZE_OPTIONS’ as well as checking the ‘--no-warn’ flag
     suppresses ‘libtoolize’ warnings.

‘tests/link-order2.at’
     Tests to make sure that ‘depdepls’ are added right after the
     libraries that pull them in which is necessary at least for static
     linking and on systems where libraries do not link against other
     libraries.

‘tests/link-order.at’
     Tests for problems with linking libraries in different order.

‘tests/loadlibrary.at’
     Tests ‘libltdl’ (a ‘libdl’ API for ‘dlopen’) support of
     ‘LoadLibrary’ for dynamically linking DLLs in Windows environments.

‘tests/localization.at’
     Tests to verify that invoking C compiler language localization
     options do not cause problems with ‘libtool’.

‘tests/lt_dladvise.at’
     Tests ‘libltdl’ (a ‘libdl’ API for ‘dlopen’) module loading advisor
     functions.

‘tests/lt_dlexit.at’
     Tests ‘libltdl’ (a ‘libdl’ API for ‘dlopen’) for a memory use after
     free bug in ‘lt_dlexit’.

‘tests/lt_dlopen_a.at’
     Tests ‘lt_dlopen’ with an archive file.  Verifies that ‘lt_dlopen’
     can load an archive file and successfully return a handle to it.

‘tests/lt_dlopen.at’
     Tests ‘libltdl’ (a ‘libdl’ API for ‘dlopen’) with a basic C
     example.

‘tests/lt_dlopenext.at’
     Tests ‘libltdl’ (a ‘libdl’ API for ‘dlopen’) with an extern C++
     function.

‘tests/ltdl-api.at’
     Tests that ‘libtool’ doesn't mangle ‘gnulib’ ‘argv’ names.

‘tests/ltdl-libdir.at’
     Tests if ‘ltdl’ can find an installed module using the ‘libdir’
     variable in the ‘.la’ file.  Tests also include a MinGW test which
     uses a Windows-style ‘libdir’ name.

‘tests/mdemo.at’
     Tests include a demonstration of a package that uses ‘libtool’ and
     the system independent ‘dlopen’ wrapper ‘libltdl’ to load modules.
     The library ‘libltdl’ provides a ‘dlopen’ wrapper for various
     platforms (POSIX) including support for ‘dlpreopened’ modules
     (*note Dlpreopening::).

‘tests/need_lib_prefix.at’
     Tests to check for failures on systems that require libraries to be
     prefixed with ‘lib’.

‘tests/nocase.at’
     Tests the ‘want_nocaseglob’ configuration option to search for
     libraries regardless of case.

‘tests/no-executables.at’
     Tests ‘AC_NO_EXECUTABLES’ macro with ‘gcc’.

‘tests/nonrecursive.at’
     Tests non-recursive DLL libraries with nonrecursive Automake
     ‘libltdl’ (a ‘libdl’ API for ‘dlopen’) build.

‘tests/old-m4-iface.at’
     Tests various aspects of ‘libtool’'s old ‘m4’ interface.

‘tests/pic_flag.at’
     Tests the ‘-fpic’ flag with ‘gcc’ and ‘g++’.

‘tests/recursive.at’
     Tests recursive DLL libraries with recursive Automake ‘libltdl’ (a
     ‘libdl’ API for ‘dlopen’) build.

‘tests/resident.at’
     Tests that resident modules are not unloaded at program exit, as
     they need to be able to invoke ‘atexit’ handlers.  A module being a
     resident module means it is prevented from being ‘lt_dlclosed’.

‘tests/runpath-in-lalib.at’
     Tests the runpath configuration options in ‘libtool’ (‘-R’ and
     ‘-rpath’) and that the resulting ‘.la’ files are installed in the
     directory appended to their respective library's ‘dependency_libs’
     by ‘-R’.

‘tests/search-path.at’
     Tests ‘sys_lib_search_path_spec’, which is an expression to get the
     compile-time system library search path.  Tests include determining
     if it is possible to link an executable to system libraries and if
     ‘sys_lib_search_path_spec’ also works on MSVC (Microsoft Visual
     C++).

‘tests/shlibpath.at’
     Tests include verifying proper behaviour of the ‘shlibpath_var’,
     which is the variable responsible for telling the linker where to
     find shared libraries.  Additionally, this tests the behaviour of
     the ‘shlibpath_overrides_runpath’ variable, which determines if it
     possible to override an executable's hardcoded library search path
     with an environment variable.

‘tests/slist.at’
     Tests the functionality of the SList datastructure, which is an
     implementation of singly linked lists.  Tests include verifying the
     usual linked list functions such as finding, removing, deleting,
     reversing, and sorting the element(s) in SLists.

‘tests/standalone.at’
     Tests ‘libltdl’ functionality as a standalone tool.  Tests include
     compiling a symlinked version of ‘libltdl’ and a copied version of
     ‘libltdl’.  Next ‘libltdl’ is installed locally and linked in a
     project without the use of Autoconf or Automake.

‘tests/static.at’
     Tests various flags related to static and dynamic linking including
     ‘-Bstatic’ and ‘-Bdynamic’.

‘tests/stresstest.at’
     Tests various ‘libtool’ flag and option combinations, tests linking
     various types of objects in different sections, and tests regular
     expressions to cover edge cases and unusual configurations over
     multiple iterations.

‘tests/subproject.at’
     Tests the ‘libltdl’ flag for building subprojects in individual
     directories.  Tests cover soft-linked libltdl trees, copied
     ‘libltdl’ trees, and linking ‘libltdl’ without Autotools.

‘tests/sysroot.at’
     Tests that ‘libtool’ runs properly in sandboxed ‘sysroot’
     directories.

‘tests/tagdemo.at’
     Tests include a demonstration of a package that uses ‘libtool’'s
     multi-language support through configuration tags.  It generates a
     library from C++ sources, which is then linked to a C++ program.

‘tests/template.at’
     Tests that ‘libtool’ can handle C++ code utilizing templates.

‘tests/testsuite.at’
     Main testsuite framework file processed by ‘autom4te’ processes
     enable running the ‘libtool’ test cases.

‘tests/versioning.at’
     Tests ‘libtool’'s versioning system.  Tests begin with verifying
     the behaviour of ‘libtool’ versioning flags ‘-version-info’ and
     ‘-version-number’.  Next, this tests installing a library, then
     updating the library with a new revision, a compatible update, and
     an incompatible update.  In each case, the tests verify that the
     original library will link and install as expected.

‘tests/with_pic.at’
     Tests the function of the ‘--enable-pic’ flag.  The ‘--enable-pic’
     flag is used to specify whether or not ‘libtool’ uses PIC objects.
     This includes tests for setting ‘--enable-pic’ to no, yes, or a
     comma delimited list of package names.

© manpagez.com 2000-2025
Individual documents may contain additional copyright information.