# file : tests/rep-info.testscript # copyright : Copyright (c) 2014-2019 Code Synthesis Ltd # license : MIT; see accompanying LICENSE file .include common.testscript \ auth.testscript \ remote.testscript \ remote-git.testscript # Source repository: # # rep-info # |-- testing -> stable (complement), ../foo/testing (prerequisite) # | |-- foo-1.tar.gz # | `-- repositories.manifest # | # `-- git # |-- libbar.git -> style-basic.git (prerequisite) # `-- style-basic.git # Prepare repositories used by tests if running in the local mode. # +if ($remote != true) rc = $rep_create 2>! # Create the unsigned 'testing' repository. # cp -r $src/testing $out/testing $rc $out/testing &$out/testing/packages.manifest # Create the signed 'testing' repository. # cp -r $src/testing $out/signed cat <<<$cert_manifest >+$out/signed/repositories.manifest $rc --key $key $out/signed &$out/signed/packages.manifest \ &$out/signed/signature.manifest # Create git repositories. # $git_extract $src/git/libbar.tar $git_extract $src/git/style-basic.tar &$out_git/state0/*** end test.options += --auth all --trust-yes posix = ($cxx.target.class != 'windows') : no-location : $* 2>>EOE != 0 error: repository location argument expected info: run 'bpkg help rep-info' for more information EOE : default : { : unsigned : $* $rep/testing >>"EOO" pkg:build2.org/rep-info/testing ($rep/testing) prerequisite pkg:build2.org/foo/testing ($rep_root/foo/testing) complement pkg:build2.org/rep-info/stable ($rep/stable) foo/1 EOO : signed : $* $rep/signed >>"EOO" pkg:build2.org/rep-info/signed ($rep/signed) CN=build2.org/O=Code Synthesis/info@build2.org $cert_fp prerequisite pkg:build2.org/foo/testing ($rep_root/foo/testing) complement pkg:build2.org/rep-info/stable ($rep/stable) foo/1 EOO } : name : $* --name $rep/testing >"pkg:build2.org/rep-info/testing ($rep/testing)" : packages : { test.arguments += --packages # Should go after the rep-info command argument. : list : $* $rep/testing >>EOO foo/1 EOO : manifest : { test.arguments += --manifest : basic : $* $rep/testing >>EOO : 1 name: foo version: 1 summary: The "Foo" utility license: MIT url: http://www.example.org/foo email: foo-users@example.org location: foo-1.tar.gz sha256sum: fee330a362a4f87ff42a954aa305b6446d541b7b60000ebcd2fbf68f2b1ae58e EOO : deep : { test.arguments += --deep : dir : { tar ($posix ? : --force-local) -xf $src/git/libbar.tar &state0/***; $* --type dir "state0/libbar.git" >>~%EOO%d; : 1 name: libbar version: 1.0.0+1 summary: libbar license: MIT description: \ TODO \ description-type: text/plain %.+ EOO rm state0/libbar.git/libbar/README; $* --type dir "state0/libbar.git" 2>>/~%EOE% != 0 %error: unable to read from libbar/README referenced by description-file manifest value in libbar/manifest: .+% % info: repository .+% EOE } : git : : Enable on Windows if/when we make *-file values expansion to properly : work for symlinks on Windows (see rep_fetch_git() for details). : if ($git_supported && $posix) { $* "$rep_git/state0/libbar.git#master" >>~%EOO%d 2>! : 1 name: libbar version: 1.0.0+1 summary: libbar license: MIT description: \ TODO \ description-type: text/plain %.+ : name: libmbar version: 1.0.0 summary: libmbar license: MIT description: \ TODO \ description-type: text/plain %.+ EOO } } } : to-file : { : no-manifest : $* --packages-file m $rep/testing 2>>EOE != 0 error: --packages-file specified without --manifest info: run 'bpkg help rep-info' for more information EOE : manifest : { $* --manifest --packages-file m $rep/testing &m; cat m >>EOO : 1 name: foo version: 1 summary: The "Foo" utility license: MIT url: http://www.example.org/foo email: foo-users@example.org location: foo-1.tar.gz sha256sum: fee330a362a4f87ff42a954aa305b6446d541b7b60000ebcd2fbf68f2b1ae58e EOO } } } : repositories : { # Should go after the rep-info command argument. # test.arguments += --repositories : list : $* $rep/testing >>"EOO" prerequisite pkg:build2.org/foo/testing ($rep_root/foo/testing) complement pkg:build2.org/rep-info/stable ($rep/stable) EOO : manifest : $* --manifest $rep/testing >>EOO : 1 location: ../../foo/testing type: pkg role: prerequisite : location: ../stable type: pkg role: complement : EOO : to-file : { : no-manifest : $* --repositories-file m $rep/testing 2>>EOE != 0 error: --repositories-file specified without --manifest info: run 'bpkg help rep-info' for more information EOE : manifest : { $* --manifest --repositories-file m $rep/testing &m; cat m >>EOO : 1 location: ../../foo/testing type: pkg role: prerequisite : location: ../stable type: pkg role: complement : EOO } } } : cert : { test.arguments += $rep/signed $* --cert-fingerprint >"$cert_fp" : fingerprint $* --cert-name >'name:build2.org' : name $* --cert-organization >'Code Synthesis' : organization $* --cert-email >'info@build2.org' : email } : git-rep : if ($git_supported != true) { # Skip git repository tests. # } else { rep = "$rep_git/state0" test.redirects += 2>! : version-module : : Version module is enabled for the project. : $* "$rep/style-basic.git#master" >>~%EOO% %git:.+style-basic#master .+style-basic.git#master% %style-basic/1\.1\.0-a\.0\.\d+\..+% EOO : manifest-lists : : The packages.manifest and repositories.manifest files are present in the : repository root. : $* "$rep/libbar.git#master" >>~%EOO% %git:.+libbar#master .+libbar.git#master% %prerequisite git:.+style-basic#stable .+style-basic.git#stable% libbar/1.0.0+1 libmbar/1.0.0 EOO : repository-manifests : : Here we test that the base repository manifest that comes from the stable : branch is printed because the stable head commit is newer that of the : master branch. : $* -r --manifest "$rep/style-basic.git#stable,master" >>~%EOO% : 1 email: user@example.com EOO : complete-dependency : $* -p --manifest "$rep/libbar.git#master" >>~%EOO%d : 1 name: libbar version: 1.0.0+1 summary: libbar license: MIT description-file: README url: http://example.org/libbar email: pkg@example.org depends: style-basic >= 1.0.0 location: libbar %fragment: \.+% : name: libmbar version: 1.0.0 summary: libmbar license: MIT description-file: README url: http://example.org/libmbar email: pkg@example.org depends: style-basic >= 1.0.0 location: libmbar %fragment: \.+% EOO } : default-options-files : { : specified-dir : { $cfg_create -d cfg 2>! &cfg/***; mkdir cfg/.build2; echo '--directory .' >= cfg/.build2/bpkg-rep-info.options; $* $rep/testing -d cfg 2>>/~%EOE%d != 0; %\.+/specified-dir/cfg/.build2/bpkg-rep-info.options: error: --directory\|-d in default options file% EOE # Disable default options files loading. # $* --no-default-options --name $rep/testing -d cfg >>"EOO" pkg:build2.org/rep-info/testing ($rep/testing) EOO } : current-dir : { mkdir .bpkg; # Pretend we are in the configuration directory. mkdir .build2; echo '--directory .' >= .build2/bpkg-rep-info.options; # Load options from the current (configuration) directory. # $* $rep/testing 2>>/~%EOE%d != 0; %\.+/current-dir/.build2/bpkg-rep-info.options: error: --directory\|-d in default options file% EOE # Disable loading options from the current (configuration) directory. # $* --name -d '' $rep/testing >>"EOO" pkg:build2.org/rep-info/testing ($rep/testing) EOO } }