test: Add subdirectory with integration test
All checks were successful
CI / Packaging - Kali Linux (pull_request) Successful in 3m38s
CI / Packaging - OpenSUSE Tumbleweed (pull_request) Successful in 3m39s
CI / Packaging test (pull_request) Successful in 0s
CI / Packaging - Kali Linux (push) Successful in 4m21s
CI / Packaging - OpenSUSE Tumbleweed (push) Successful in 4m32s
CI / Packaging test (push) Successful in 0s
All checks were successful
CI / Packaging - Kali Linux (pull_request) Successful in 3m38s
CI / Packaging - OpenSUSE Tumbleweed (pull_request) Successful in 3m39s
CI / Packaging test (pull_request) Successful in 0s
CI / Packaging - Kali Linux (push) Successful in 4m21s
CI / Packaging - OpenSUSE Tumbleweed (push) Successful in 4m32s
CI / Packaging test (push) Successful in 0s
Add a test/integration subdirectory as a location for integration tests. The first tests that are added are unproblematic in that they don't need superuser privileges to run:
- help: Recursively check if jw-pkg.py's help messages are unchanged
- packages ls: Check if the bash package exists and contains
/usr/bin/bash /usr/bin/bashbugLet's see how that fares in CI.
Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
03325ab7f5
commit
efc5bc1c60
10 changed files with 791 additions and 0 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -3,6 +3,8 @@ bin/*.sh
|
|||
bin/*.py
|
||||
*.done
|
||||
*.dist
|
||||
*.out
|
||||
test-out.txt
|
||||
make/.cache.mk
|
||||
make/jw-pkg.pc
|
||||
minimal-to-master.sh
|
||||
|
|
|
|||
4
test/Makefile
Normal file
4
test/Makefile
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
TOPDIR = ..
|
||||
|
||||
include $(TOPDIR)/make/proj.mk
|
||||
include $(JWBDIR)/make/dirs.mk
|
||||
4
test/integration/Makefile
Normal file
4
test/integration/Makefile
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
TOPDIR = ../..
|
||||
|
||||
include $(TOPDIR)/make/proj.mk
|
||||
include $(JWBDIR)/make/dirs.mk
|
||||
4
test/integration/jw-pkg/Makefile
Normal file
4
test/integration/jw-pkg/Makefile
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
TOPDIR = ../../..
|
||||
|
||||
include $(TOPDIR)/make/proj.mk
|
||||
include $(JWBDIR)/make/dirs.mk
|
||||
19
test/integration/jw-pkg/help/Makefile
Normal file
19
test/integration/jw-pkg/help/Makefile
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
TOPDIR = ../../../..
|
||||
|
||||
OUTPUT = test-out.txt
|
||||
REFERENCE = test-expected.txt
|
||||
|
||||
include $(TOPDIR)/make/proj.mk
|
||||
include $(TOPDIR)/make/test-jw-pkg.mk
|
||||
|
||||
all:
|
||||
|
||||
$(OUTPUT): Makefile test.sh
|
||||
bash ./test.sh $(TEST_CMD_LINE) > $(OUTPUT).tmp
|
||||
diff $(REFERENCE) $(OUTPUT).tmp
|
||||
mv $(OUTPUT).tmp $(OUTPUT)
|
||||
|
||||
test: $(OUTPUT)
|
||||
clean: test.integration.in-tree.clean
|
||||
test.integration.in-tree.clean:
|
||||
rm -f $(OUTPUT) $(OUTPUT).tmp
|
||||
697
test/integration/jw-pkg/help/test-expected.txt
Normal file
697
test/integration/jw-pkg/help/test-expected.txt
Normal file
|
|
@ -0,0 +1,697 @@
|
|||
============= Running: jw-pkg.py --log-level info --help
|
||||
usage: jw-pkg.py [--log-flags LOG_FLAGS] [--log-level LOG_LEVEL]
|
||||
[--log-file LOG_FILE] [--backtrace]
|
||||
[--write-profile WRITE_PROFILE] [-t TOPDIR]
|
||||
[--topdir-format TOPDIR_FORMAT] [-p PREFIX]
|
||||
[--distro-id DISTRO_ID] [--interactive {true,false,auto}]
|
||||
[--verbose] [--target TARGET] [--pkg-filter PKG_FILTER] [-h]
|
||||
...
|
||||
|
||||
jw-pkg swiss army knife
|
||||
|
||||
options:
|
||||
--log-flags LOG_FLAGS
|
||||
Log flags (default: stderr,position,prio,color)
|
||||
--log-level LOG_LEVEL
|
||||
Log level (default: 5)
|
||||
--log-file LOG_FILE Log file (default: None)
|
||||
--backtrace Show exception backtraces (default: False)
|
||||
--write-profile WRITE_PROFILE
|
||||
Profile code and store output to file (default: None)
|
||||
-t, --topdir TOPDIR Project Path (default: None)
|
||||
--topdir-format TOPDIR_FORMAT
|
||||
Output references to topdir as one of "make:<var-
|
||||
name>", "unaltered", "relative", "absolute". Absolute
|
||||
topdir by default (default: absolute)
|
||||
-p, --prefix PREFIX Parent directory of project source directories
|
||||
(default: None)
|
||||
--distro-id DISTRO_ID
|
||||
Distribution ID (default is taken from /etc/os-
|
||||
release) (default: None)
|
||||
--interactive {true,false,auto}
|
||||
Wait for user input or try to proceed unattended
|
||||
(default: true)
|
||||
--verbose Be verbose on stderr about what's being done on the
|
||||
distro level (default: False)
|
||||
--target TARGET Run commands on this host (default: local)
|
||||
--pkg-filter PKG_FILTER
|
||||
Default filter for all distribution package-related
|
||||
operations (default: None)
|
||||
-h, --help Show this help message and exit
|
||||
|
||||
Available subcommands:
|
||||
|
||||
packages (pkg) System package manager wrapper
|
||||
platform Miscellaneous platform-related comamnds
|
||||
posix Perform various operations on a distro through its
|
||||
POSIX utility interface
|
||||
projects Project metadata evaluation for building packages
|
||||
secrets Manage package secrets
|
||||
============= Running: jw-pkg.py --log-level info packages --help
|
||||
usage: jw-pkg.py packages [-h] ...
|
||||
|
||||
System package manager wrapper
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
|
||||
Available subcommands of packages:
|
||||
|
||||
delete Delete packages by name
|
||||
dup Upgrade distribution
|
||||
install Install the distribution's notion of available packages
|
||||
ls List package contents
|
||||
meta List package metadata
|
||||
reboot-required Check whether the machine needs rebooting
|
||||
refresh Refresh the distribution's notion of available packages
|
||||
select Select packages by filter
|
||||
============= Running: jw-pkg.py --log-level info packages delete --help
|
||||
usage: jw-pkg.py packages delete [-h] [names ...]
|
||||
|
||||
Delete packages by name
|
||||
|
||||
positional arguments:
|
||||
names Names of packages to be deleted (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info packages dup --help
|
||||
usage: jw-pkg.py packages dup [-h] [--download-only]
|
||||
|
||||
Upgrade distribution
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--download-only Only download packages from the repos, don't install them,
|
||||
yet (default: False)
|
||||
============= Running: jw-pkg.py --log-level info packages install --help
|
||||
usage: jw-pkg.py packages install [-h] [--only-update] [-F] [names ...]
|
||||
|
||||
Install the distribution's notion of available packages
|
||||
|
||||
positional arguments:
|
||||
names Packages to be installed (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--only-update Only update the listed packages, don't install them
|
||||
(default: False)
|
||||
-F, --fixed-strings Don't expand macros in <names> (default: False)
|
||||
============= Running: jw-pkg.py --log-level info packages ls --help
|
||||
usage: jw-pkg.py packages ls [-h] [names ...]
|
||||
|
||||
List package contents
|
||||
|
||||
positional arguments:
|
||||
names Package names (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info packages meta --help
|
||||
usage: jw-pkg.py packages meta [-h] [names ...]
|
||||
|
||||
List package metadata
|
||||
|
||||
positional arguments:
|
||||
names Package names (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info packages reboot-required --help
|
||||
usage: jw-pkg.py packages reboot-required [-h]
|
||||
|
||||
Check whether the machine needs rebooting
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info packages refresh --help
|
||||
usage: jw-pkg.py packages refresh [-h]
|
||||
|
||||
Refresh the distribution's notion of available packages
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info packages select --help
|
||||
usage: jw-pkg.py packages select [-h] filter
|
||||
|
||||
Select packages by filter
|
||||
|
||||
positional arguments:
|
||||
filter Package filter string
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info platform --help
|
||||
usage: jw-pkg.py platform [-h] ...
|
||||
|
||||
Miscellaneous platform-related comamnds
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
|
||||
Available subcommands of platform:
|
||||
|
||||
info Retrieve information about target platform
|
||||
============= Running: jw-pkg.py --log-level info platform info --help
|
||||
usage: jw-pkg.py platform info [-h] [--format FORMAT]
|
||||
|
||||
Retrieve information about target platform
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--format FORMAT Format string, expanding macros %{os}, %{id}, %{name},
|
||||
%{codename}, %{gnu-triplet}, %{os-cascade}, %{os-release},
|
||||
%{pkg-ext} (default: %{cascade})
|
||||
============= Running: jw-pkg.py --log-level info posix --help
|
||||
usage: jw-pkg.py posix [-h]
|
||||
|
||||
Perform various operations on a distro through its POSIX utility interface
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info projects --help
|
||||
usage: jw-pkg.py projects [-h] ...
|
||||
|
||||
Project metadata evaluation for building packages
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
|
||||
Available subcommands of projects:
|
||||
|
||||
build janware software project build tool
|
||||
canonicalize-remotes
|
||||
Streamline janware Git remotes
|
||||
cflags cflags
|
||||
check Run miscellaneous code and project checks
|
||||
commands List available commands
|
||||
create-file Generate a file from project metadata
|
||||
create-pkg-config Generate a pkg-config file for a module
|
||||
exepath exepath
|
||||
get-auth-info Try to retrieve authentication information from the
|
||||
source tree
|
||||
getval Get value from project config
|
||||
htdocs-dir Print source directory containing document root of a
|
||||
given module
|
||||
ldflags ldflags
|
||||
ldlibpath ldlibpath
|
||||
libname libname
|
||||
list-repos Query a remote GIT server for repositories
|
||||
modules Query existing janware packages
|
||||
path path
|
||||
pkg-conflicts Print packages conflicting with a given package
|
||||
pkg-provides Print packages and capabilities provided by a given
|
||||
package
|
||||
pkg-requires Print packages required for a given package
|
||||
proj-dir Print directory of a given package
|
||||
pythonpath Generate PYTHONPATH for given modules
|
||||
required-os-pkg List distribution packages required for a package
|
||||
summary Print summary description of given modules
|
||||
test Test
|
||||
tmpl-dir Print directory containing templates of a given module
|
||||
============= Running: jw-pkg.py --log-level info projects build --help
|
||||
usage: jw-pkg.py projects build [-h] [--exclude EXCLUDE] [-n] [-O] [-I]
|
||||
[--env-reinit] [--env-keep ENV_KEEP]
|
||||
target modules [modules ...]
|
||||
|
||||
janware software project build tool
|
||||
|
||||
positional arguments:
|
||||
target Build target
|
||||
modules Modules to be built
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--exclude EXCLUDE Space seperated ist of modules to be excluded from
|
||||
build (default: )
|
||||
-n, --dry-run Don't build anything, just print what would be done.
|
||||
(default: False)
|
||||
-O, --build-order Don't build anything, just print the build order.
|
||||
(default: False)
|
||||
-I, --ignore-deps Don't build dependencies, i.e. build only modules
|
||||
specified on the command line (default: False)
|
||||
--env-reinit Source /etc/profile before each build step. Discard
|
||||
environment unless --env-keep is specified (default:
|
||||
False)
|
||||
--env-keep ENV_KEEP Comma seperated list of environment variables to keep,
|
||||
"all" or "none", only meaningful if --env-reinit is
|
||||
specified (default: none)
|
||||
============= Running: jw-pkg.py --log-level info projects canonicalize-remotes --help
|
||||
usage: jw-pkg.py projects canonicalize-remotes [-h] [-n]
|
||||
|
||||
Streamline janware Git remotes
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-n, --dry-run Only log what would be done (default: False)
|
||||
============= Running: jw-pkg.py --log-level info projects cflags --help
|
||||
usage: jw-pkg.py projects cflags [-h] [module ...]
|
||||
|
||||
cflags
|
||||
|
||||
positional arguments:
|
||||
module Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info projects check --help
|
||||
usage: jw-pkg.py projects check [-h] ...
|
||||
|
||||
Run miscellaneous code and project checks
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
|
||||
Available subcommands of check:
|
||||
|
||||
deps Check for circular dependencies between given modules
|
||||
============= Running: jw-pkg.py --log-level info projects check deps --help
|
||||
usage: jw-pkg.py projects check deps [-h] [-f [FLAVOUR]] [module ...]
|
||||
|
||||
Check for circular dependencies between given modules
|
||||
|
||||
positional arguments:
|
||||
module Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-f, --flavour [FLAVOUR]
|
||||
============= Running: jw-pkg.py --log-level info projects commands --help
|
||||
usage: jw-pkg.py projects commands [-h]
|
||||
|
||||
List available commands
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info projects create-file --help
|
||||
usage: jw-pkg.py projects create-file [-h] [--format FORMAT]
|
||||
[--search-path SEARCH_PATH]
|
||||
[--template-name TEMPLATE_NAME]
|
||||
[--quote] [-f KEY=VALUE]
|
||||
module
|
||||
|
||||
Generate a file from project metadata
|
||||
|
||||
positional arguments:
|
||||
module The module to generate the file for
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--format FORMAT pyright (default: None)
|
||||
--search-path SEARCH_PATH
|
||||
Template search path, colon separated (default:
|
||||
/etc/opt/jw-pkg/templates)
|
||||
--template-name TEMPLATE_NAME
|
||||
Template file name (default: None)
|
||||
--quote Enclose variable values in double quotes before
|
||||
substituting (default: False)
|
||||
-f, --field KEY=VALUE
|
||||
Additional fields to insert into the output file
|
||||
(default: [])
|
||||
============= Running: jw-pkg.py --log-level info projects create-pkg-config --help
|
||||
usage: jw-pkg.py projects create-pkg-config [-h] [-F PROJECT_DESCR_FILE]
|
||||
[-d DESCRIPTION] [-n NAME]
|
||||
[-s SUMMARY] [-p PREFIX]
|
||||
[-v VERSION] [-c CFLAGS]
|
||||
[-l LIBFLAGS] [-r REQUIRES_RUN]
|
||||
[-R REQUIRES_BUILD]
|
||||
[-V [VARIABLES ...]]
|
||||
|
||||
Generate a pkg-config file for a module
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-F, --project-descr-file PROJECT_DESCR_FILE
|
||||
-d, --description DESCRIPTION
|
||||
-n, --name NAME
|
||||
-s, --summary SUMMARY
|
||||
-p, --prefix PREFIX
|
||||
-v, --version VERSION
|
||||
-c, --cflags CFLAGS
|
||||
-l, --libflags LIBFLAGS
|
||||
-r, --requires-run REQUIRES_RUN
|
||||
-R, --requires-build REQUIRES_BUILD
|
||||
-V, --variables [VARIABLES ...]
|
||||
============= Running: jw-pkg.py --log-level info projects exepath --help
|
||||
usage: jw-pkg.py projects exepath [-h] [-d [DELIMITER]] [module ...]
|
||||
|
||||
exepath
|
||||
|
||||
positional arguments:
|
||||
module Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-d, --delimiter [DELIMITER]
|
||||
Output words delimiter (default: :)
|
||||
============= Running: jw-pkg.py --log-level info projects get-auth-info --help
|
||||
usage: jw-pkg.py projects get-auth-info [-h] [--only-values] [--username]
|
||||
[--password] [--remote-owner-base]
|
||||
[--remote-base]
|
||||
|
||||
Try to retrieve authentication information from the source tree
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--only-values Don't prefix values by "<field-name>=" (default: False)
|
||||
--username Show user name (default: False)
|
||||
--password Show password (default: False)
|
||||
--remote-owner-base Show remote base URL for owner jw-pkg was cloned from
|
||||
(default: False)
|
||||
--remote-base Show remote base URL (default: False)
|
||||
============= Running: jw-pkg.py --log-level info projects getval --help
|
||||
usage: jw-pkg.py projects getval [-h] [--project PROJECT] section key
|
||||
|
||||
Get value from project config
|
||||
|
||||
positional arguments:
|
||||
section Config section
|
||||
key Config key
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--project PROJECT Project name, default is name of project's topdir
|
||||
(default: None)
|
||||
============= Running: jw-pkg.py --log-level info projects htdocs-dir --help
|
||||
usage: jw-pkg.py projects htdocs-dir [-h] [module ...]
|
||||
|
||||
Print source directory containing document root of a given module
|
||||
|
||||
positional arguments:
|
||||
module Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info projects ldflags --help
|
||||
usage: jw-pkg.py projects ldflags [-h] [--exclude EXCLUDE] [-s] [module ...]
|
||||
|
||||
ldflags
|
||||
|
||||
positional arguments:
|
||||
module Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--exclude EXCLUDE Exclude Modules (default: [])
|
||||
-s, --add-self Include libflags of specified modules, too, not only
|
||||
their dependencies (default: False)
|
||||
============= Running: jw-pkg.py --log-level info projects ldlibpath --help
|
||||
usage: jw-pkg.py projects ldlibpath [-h] [-d [DELIMITER]] [module ...]
|
||||
|
||||
ldlibpath
|
||||
|
||||
positional arguments:
|
||||
module Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-d, --delimiter [DELIMITER]
|
||||
Output words delimiter (default: :)
|
||||
============= Running: jw-pkg.py --log-level info projects libname --help
|
||||
usage: jw-pkg.py projects libname [-h] [module ...]
|
||||
|
||||
libname
|
||||
|
||||
positional arguments:
|
||||
module Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info projects list-repos --help
|
||||
usage: jw-pkg.py projects list-repos [-h] [--username USERNAME]
|
||||
[--askpass ASKPASS]
|
||||
[--from-owner FROM_OWNER]
|
||||
base_url
|
||||
|
||||
Query a remote GIT server for repositories
|
||||
|
||||
positional arguments:
|
||||
base_url Base URL of all Git repositories without user part
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--username USERNAME Username for SSH or HTTP authentication, don't specify
|
||||
for unauthenticated (default: None)
|
||||
--askpass ASKPASS Program to echo password for SSH or HTTP
|
||||
authentication, don't specify for unauthenticated
|
||||
(default: None)
|
||||
--from-owner FROM_OWNER
|
||||
List from-owner's projects (default: janware)
|
||||
============= Running: jw-pkg.py --log-level info projects modules --help
|
||||
usage: jw-pkg.py projects modules [-h] [-F [FILTER]]
|
||||
|
||||
Query existing janware packages
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-F, --filter [FILTER]
|
||||
Key-value pairs, seperated by commas, to be searched
|
||||
for in project.conf (default: None)
|
||||
============= Running: jw-pkg.py --log-level info projects path --help
|
||||
usage: jw-pkg.py projects path [-h] [module ...]
|
||||
|
||||
path
|
||||
|
||||
positional arguments:
|
||||
module Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info projects pkg-conflicts --help
|
||||
usage: jw-pkg.py projects pkg-conflicts [-h] [-S [SUBSECTIONS]]
|
||||
[-d [DELIMITER]] [-p]
|
||||
[--dont-strip-revision]
|
||||
[--expand-semver-revision-range]
|
||||
[--syntax {semver,debian,names-only}]
|
||||
[--recursive]
|
||||
[--dont-expand-version-macros]
|
||||
[--ignore [IGNORE]] [--skip-excluded]
|
||||
[--hide-self] [--hide-jw-pkg]
|
||||
[--quote]
|
||||
flavours [modules ...]
|
||||
|
||||
Print packages conflicting with a given package
|
||||
|
||||
positional arguments:
|
||||
flavours Dependency flavours (run, build, devel, release),
|
||||
separated by comma or whitespace
|
||||
modules Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-S, --subsections [SUBSECTIONS]
|
||||
Subsections to consider, separated by comma or
|
||||
whitespace (default: None)
|
||||
-d, --delimiter [DELIMITER]
|
||||
Output words delimiter (default: , )
|
||||
-p, --no-subpackages Cut -run and -devel from package names (default:
|
||||
False)
|
||||
--dont-strip-revision
|
||||
Always treat VERSION macro as VERSION-REVISION
|
||||
(default: False)
|
||||
--expand-semver-revision-range
|
||||
Always treat =VERSION macro as >= VERSION-0 and <
|
||||
(VERSION+1)-0 (default: False)
|
||||
--syntax {semver,debian,names-only}
|
||||
Output syntax (default: semver)
|
||||
--recursive Find dependencies recursively (default: False)
|
||||
--dont-expand-version-macros
|
||||
Don't expand VERSION and REVISION macros (default:
|
||||
False)
|
||||
--ignore [IGNORE] Packages that should be ignored together with their
|
||||
dependencies (default: )
|
||||
--skip-excluded Don't consider or output modules matching the os
|
||||
cascade in their [build].exclude config (default:
|
||||
False)
|
||||
--hide-self Don't include projects listed in <modules> in the
|
||||
output (default: False)
|
||||
--hide-jw-pkg Don't include packages from requires.jw in the output
|
||||
(default: False)
|
||||
--quote Put double quotes around each listed dependency
|
||||
(default: False)
|
||||
============= Running: jw-pkg.py --log-level info projects pkg-provides --help
|
||||
usage: jw-pkg.py projects pkg-provides [-h] [-S [SUBSECTIONS]]
|
||||
[-d [DELIMITER]] [-p]
|
||||
[--dont-strip-revision]
|
||||
[--expand-semver-revision-range]
|
||||
[--syntax {semver,debian,names-only}]
|
||||
[--recursive]
|
||||
[--dont-expand-version-macros]
|
||||
[--ignore [IGNORE]] [--skip-excluded]
|
||||
[--hide-self] [--hide-jw-pkg] [--quote]
|
||||
flavours [modules ...]
|
||||
|
||||
Print packages and capabilities provided by a given package
|
||||
|
||||
positional arguments:
|
||||
flavours Dependency flavours (run, build, devel, release),
|
||||
separated by comma or whitespace
|
||||
modules Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-S, --subsections [SUBSECTIONS]
|
||||
Subsections to consider, separated by comma or
|
||||
whitespace (default: None)
|
||||
-d, --delimiter [DELIMITER]
|
||||
Output words delimiter (default: , )
|
||||
-p, --no-subpackages Cut -run and -devel from package names (default:
|
||||
False)
|
||||
--dont-strip-revision
|
||||
Always treat VERSION macro as VERSION-REVISION
|
||||
(default: False)
|
||||
--expand-semver-revision-range
|
||||
Always treat =VERSION macro as >= VERSION-0 and <
|
||||
(VERSION+1)-0 (default: False)
|
||||
--syntax {semver,debian,names-only}
|
||||
Output syntax (default: semver)
|
||||
--recursive Find dependencies recursively (default: False)
|
||||
--dont-expand-version-macros
|
||||
Don't expand VERSION and REVISION macros (default:
|
||||
False)
|
||||
--ignore [IGNORE] Packages that should be ignored together with their
|
||||
dependencies (default: )
|
||||
--skip-excluded Don't consider or output modules matching the os
|
||||
cascade in their [build].exclude config (default:
|
||||
False)
|
||||
--hide-self Don't include projects listed in <modules> in the
|
||||
output (default: False)
|
||||
--hide-jw-pkg Don't include packages from requires.jw in the output
|
||||
(default: False)
|
||||
--quote Put double quotes around each listed dependency
|
||||
(default: False)
|
||||
============= Running: jw-pkg.py --log-level info projects pkg-requires --help
|
||||
usage: jw-pkg.py projects pkg-requires [-h] [-S [SUBSECTIONS]]
|
||||
[-d [DELIMITER]] [-p]
|
||||
[--dont-strip-revision]
|
||||
[--expand-semver-revision-range]
|
||||
[--syntax {semver,debian,names-only}]
|
||||
[--recursive]
|
||||
[--dont-expand-version-macros]
|
||||
[--ignore [IGNORE]] [--skip-excluded]
|
||||
[--hide-self] [--hide-jw-pkg] [--quote]
|
||||
flavours [modules ...]
|
||||
|
||||
Print packages required for a given package
|
||||
|
||||
positional arguments:
|
||||
flavours Dependency flavours (run, build, devel, release),
|
||||
separated by comma or whitespace
|
||||
modules Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
-S, --subsections [SUBSECTIONS]
|
||||
Subsections to consider, separated by comma or
|
||||
whitespace (default: None)
|
||||
-d, --delimiter [DELIMITER]
|
||||
Output words delimiter (default: , )
|
||||
-p, --no-subpackages Cut -run and -devel from package names (default:
|
||||
False)
|
||||
--dont-strip-revision
|
||||
Always treat VERSION macro as VERSION-REVISION
|
||||
(default: False)
|
||||
--expand-semver-revision-range
|
||||
Always treat =VERSION macro as >= VERSION-0 and <
|
||||
(VERSION+1)-0 (default: False)
|
||||
--syntax {semver,debian,names-only}
|
||||
Output syntax (default: semver)
|
||||
--recursive Find dependencies recursively (default: False)
|
||||
--dont-expand-version-macros
|
||||
Don't expand VERSION and REVISION macros (default:
|
||||
False)
|
||||
--ignore [IGNORE] Packages that should be ignored together with their
|
||||
dependencies (default: )
|
||||
--skip-excluded Don't consider or output modules matching the os
|
||||
cascade in their [build].exclude config (default:
|
||||
False)
|
||||
--hide-self Don't include projects listed in <modules> in the
|
||||
output (default: False)
|
||||
--hide-jw-pkg Don't include packages from requires.jw in the output
|
||||
(default: False)
|
||||
--quote Put double quotes around each listed dependency
|
||||
(default: False)
|
||||
============= Running: jw-pkg.py --log-level info projects proj-dir --help
|
||||
usage: jw-pkg.py projects proj-dir [-h] [module ...]
|
||||
|
||||
Print directory of a given package
|
||||
|
||||
positional arguments:
|
||||
module Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info projects pythonpath --help
|
||||
usage: jw-pkg.py projects pythonpath [-h] [--subdir SUBDIR]
|
||||
[--delimiter DELIMITER]
|
||||
[--prefix PATH_COMPONENT_PREFIX]
|
||||
[module ...]
|
||||
|
||||
Generate PYTHONPATH for given modules
|
||||
|
||||
positional arguments:
|
||||
module Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--subdir SUBDIR Directories to look for relative to the respective
|
||||
project root directory (default: ['src/python',
|
||||
'tools/python'])
|
||||
--delimiter DELIMITER
|
||||
Delimiter between paths (default: :)
|
||||
--prefix PATH_COMPONENT_PREFIX
|
||||
Prefix to prepend before every path component
|
||||
(default: None)
|
||||
============= Running: jw-pkg.py --log-level info projects required-os-pkg --help
|
||||
usage: jw-pkg.py projects required-os-pkg [-h] [--skip-excluded] [--quote]
|
||||
flavours [modules ...]
|
||||
|
||||
List distribution packages required for a package
|
||||
|
||||
positional arguments:
|
||||
flavours Dependency flavours
|
||||
modules Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
--skip-excluded Output empty prerequisite list for excluded modules
|
||||
(default: False)
|
||||
--quote Put double quotes around each listed dependency (default:
|
||||
False)
|
||||
============= Running: jw-pkg.py --log-level info projects summary --help
|
||||
usage: jw-pkg.py projects summary [-h] [module ...]
|
||||
|
||||
Print summary description of given modules
|
||||
|
||||
positional arguments:
|
||||
module Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info projects test --help
|
||||
usage: jw-pkg.py projects test [-h] blah
|
||||
|
||||
Test
|
||||
|
||||
positional arguments:
|
||||
blah The blah argument
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info projects tmpl-dir --help
|
||||
usage: jw-pkg.py projects tmpl-dir [-h] [module ...]
|
||||
|
||||
Print directory containing templates of a given module
|
||||
|
||||
positional arguments:
|
||||
module Modules (default: None)
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
============= Running: jw-pkg.py --log-level info secrets --help
|
||||
usage: jw-pkg.py secrets [-h]
|
||||
|
||||
Manage package secrets
|
||||
|
||||
options:
|
||||
-h, --help show this help message and exit
|
||||
41
test/integration/jw-pkg/help/test.sh
Normal file
41
test/integration/jw-pkg/help/test.sh
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
#!/bin/bash
|
||||
# shellcheck disable=SC2048,SC2086
|
||||
# Unquoted $* and $cmds are intentional — word splitting for subcommand names
|
||||
|
||||
run()
|
||||
{
|
||||
local log_cmd
|
||||
# shellcheck disable=SC2001
|
||||
log_cmd=$(echo "$*" | sed 's|.*python3[0-9.]*\s\+\(\.\.\/\)*scripts/||')
|
||||
printf '============= Running: %s\n' "$log_cmd"
|
||||
"$@"
|
||||
}
|
||||
|
||||
parse_subcmds()
|
||||
{
|
||||
$jw_pkg_py $* --help | awk '/^ [a-z]/ {print $1}'
|
||||
}
|
||||
|
||||
help_cmd()
|
||||
{
|
||||
local cmds subcommand subcommands
|
||||
cmds="$*"
|
||||
run $jw_pkg_py $cmds --help
|
||||
subcommands=$(parse_subcmds $cmds)
|
||||
for subcommand in $subcommands; do
|
||||
help_cmd $cmds $subcommand
|
||||
done
|
||||
}
|
||||
|
||||
cmd_test()
|
||||
{
|
||||
help_cmd
|
||||
}
|
||||
|
||||
export LC_ALL="C"
|
||||
set -euo pipefail
|
||||
shopt -s nullglob
|
||||
|
||||
jw_pkg_py="$*"
|
||||
|
||||
cmd_test
|
||||
4
test/integration/jw-pkg/packages/Makefile
Normal file
4
test/integration/jw-pkg/packages/Makefile
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
TOPDIR = ../../../..
|
||||
|
||||
include $(TOPDIR)/make/proj.mk
|
||||
include $(JWBDIR)/make/dirs.mk
|
||||
14
test/integration/jw-pkg/packages/ls/Makefile
Normal file
14
test/integration/jw-pkg/packages/ls/Makefile
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
TOPDIR = ../../../../..
|
||||
|
||||
include $(TOPDIR)/make/proj.mk
|
||||
include $(TOPDIR)/make/test-jw-pkg.mk
|
||||
|
||||
all:
|
||||
|
||||
test: test.integration.in-tree
|
||||
test.integration.in-tree:
|
||||
$(TEST_CMD_LINE) --interactive false packages ls bash | grep /bin/bash | sort > test.out
|
||||
diff test.out.expected test.out
|
||||
clean: test.integration.in-tree.clean
|
||||
test.integration.in-tree.clean:
|
||||
rm -f test.out
|
||||
2
test/integration/jw-pkg/packages/ls/test.out.expected
Normal file
2
test/integration/jw-pkg/packages/ls/test.out.expected
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
/usr/bin/bash
|
||||
/usr/bin/bashbug
|
||||
Loading…
Add table
Add a link
Reference in a new issue