diff --git a/.gitignore b/.gitignore index 43fbf0fe..6336c5b8 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/test/Makefile b/test/Makefile new file mode 100644 index 00000000..a9018b59 --- /dev/null +++ b/test/Makefile @@ -0,0 +1,4 @@ +TOPDIR = .. + +include $(TOPDIR)/make/proj.mk +include $(JWBDIR)/make/dirs.mk diff --git a/test/integration/Makefile b/test/integration/Makefile new file mode 100644 index 00000000..b1ec41b6 --- /dev/null +++ b/test/integration/Makefile @@ -0,0 +1,4 @@ +TOPDIR = ../.. + +include $(TOPDIR)/make/proj.mk +include $(JWBDIR)/make/dirs.mk diff --git a/test/integration/jw-pkg/Makefile b/test/integration/jw-pkg/Makefile new file mode 100644 index 00000000..62d684a7 --- /dev/null +++ b/test/integration/jw-pkg/Makefile @@ -0,0 +1,4 @@ +TOPDIR = ../../.. + +include $(TOPDIR)/make/proj.mk +include $(JWBDIR)/make/dirs.mk diff --git a/test/integration/jw-pkg/help/Makefile b/test/integration/jw-pkg/help/Makefile new file mode 100644 index 00000000..d1f0fee3 --- /dev/null +++ b/test/integration/jw-pkg/help/Makefile @@ -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 diff --git a/test/integration/jw-pkg/help/test-expected.txt b/test/integration/jw-pkg/help/test-expected.txt new file mode 100644 index 00000000..dec09556 --- /dev/null +++ b/test/integration/jw-pkg/help/test-expected.txt @@ -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:", "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 (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 "=" (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 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 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 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 diff --git a/test/integration/jw-pkg/help/test.sh b/test/integration/jw-pkg/help/test.sh new file mode 100644 index 00000000..c70723a9 --- /dev/null +++ b/test/integration/jw-pkg/help/test.sh @@ -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 diff --git a/test/integration/jw-pkg/packages/Makefile b/test/integration/jw-pkg/packages/Makefile new file mode 100644 index 00000000..5e331b8e --- /dev/null +++ b/test/integration/jw-pkg/packages/Makefile @@ -0,0 +1,4 @@ +TOPDIR = ../../../.. + +include $(TOPDIR)/make/proj.mk +include $(JWBDIR)/make/dirs.mk diff --git a/test/integration/jw-pkg/packages/ls/Makefile b/test/integration/jw-pkg/packages/ls/Makefile new file mode 100644 index 00000000..58b1cd24 --- /dev/null +++ b/test/integration/jw-pkg/packages/ls/Makefile @@ -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 diff --git a/test/integration/jw-pkg/packages/ls/test.out.expected b/test/integration/jw-pkg/packages/ls/test.out.expected new file mode 100644 index 00000000..e995fcc3 --- /dev/null +++ b/test/integration/jw-pkg/packages/ls/test.out.expected @@ -0,0 +1,2 @@ +/usr/bin/bash +/usr/bin/bashbug