You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
clair/ext/featurefmt/dpkg/dpkg_test.go

199 lines
9.3 KiB

// Copyright 2017 clair authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package dpkg
import (
"testing"
"github.com/coreos/clair/database"
"github.com/coreos/clair/ext/featurefmt"
"github.com/coreos/clair/ext/versionfmt/dpkg"
)
func TestListFeatures(t *testing.T) {
for _, test := range []featurefmt.TestCase{
{
"valid status file",
map[string]string{"var/lib/dpkg/status": "dpkg/testdata/valid"},
[]database.Feature{
{"libapt-pkg5.0", "1.6.3ubuntu0.1", "dpkg", "binary"},
{"perl-base", "5.26.1-6ubuntu0.2", "dpkg", "binary"},
{"libmount1", "2.31.1-0.4ubuntu3.1", "dpkg", "binary"},
{"perl", "5.26.1-6ubuntu0.2", "dpkg", "source"},
{"libgnutls30", "3.5.18-1ubuntu1", "dpkg", "binary"},
{"liblzma5", "5.2.2-1.3", "dpkg", "binary"},
{"ncurses-bin", "6.1-1ubuntu1.18.04", "dpkg", "binary"},
{"lsb", "9.20170808ubuntu1", "dpkg", "source"},
{"sed", "4.4-2", "dpkg", "source"},
{"libsystemd0", "237-3ubuntu10.3", "dpkg", "binary"},
{"procps", "2:3.3.12-3ubuntu1.1", "dpkg", "source"},
{"login", "1:4.5-1ubuntu1", "dpkg", "binary"},
{"libunistring2", "0.9.9-0ubuntu1", "dpkg", "binary"},
{"sed", "4.4-2", "dpkg", "binary"},
{"libselinux", "2.7-2build2", "dpkg", "source"},
{"libseccomp", "2.3.1-2.1ubuntu4", "dpkg", "source"},
{"libss2", "1.44.1-1", "dpkg", "binary"},
{"liblz4-1", "0.0~r131-2ubuntu3", "dpkg", "binary"},
{"libsemanage1", "2.7-2build2", "dpkg", "binary"},
{"libtasn1-6", "4.13-2", "dpkg", "source"},
{"libzstd1", "1.3.3+dfsg-2ubuntu1", "dpkg", "binary"},
{"fdisk", "2.31.1-0.4ubuntu3.1", "dpkg", "binary"},
{"xz-utils", "5.2.2-1.3", "dpkg", "source"},
{"lsb-base", "9.20170808ubuntu1", "dpkg", "binary"},
{"libpam-modules-bin", "1.1.8-3.6ubuntu2", "dpkg", "binary"},
{"dash", "0.5.8-2.10", "dpkg", "binary"},
{"gnupg2", "2.2.4-1ubuntu1.1", "dpkg", "source"},
{"libfdisk1", "2.31.1-0.4ubuntu3.1", "dpkg", "binary"},
{"lz4", "0.0~r131-2ubuntu3", "dpkg", "source"},
{"libpam0g", "1.1.8-3.6ubuntu2", "dpkg", "binary"},
{"libc-bin", "2.27-3ubuntu1", "dpkg", "binary"},
{"libcap-ng", "0.7.7-3.1", "dpkg", "source"},
{"libcom-err2", "1.44.1-1", "dpkg", "binary"},
{"libudev1", "237-3ubuntu10.3", "dpkg", "binary"},
{"debconf", "1.5.66", "dpkg", "binary"},
{"tar", "1.29b-2", "dpkg", "binary"},
{"diffutils", "1:3.6-1", "dpkg", "source"},
{"gcc-8", "8-20180414-1ubuntu2", "dpkg", "source"},
{"e2fsprogs", "1.44.1-1", "dpkg", "source"},
{"bzip2", "1.0.6-8.1", "dpkg", "source"},
{"diffutils", "1:3.6-1", "dpkg", "binary"},
{"grep", "3.1-2", "dpkg", "binary"},
{"libgcc1", "1:8-20180414-1ubuntu2", "dpkg", "binary"},
{"bash", "4.4.18-2ubuntu1", "dpkg", "source"},
{"libtinfo5", "6.1-1ubuntu1.18.04", "dpkg", "binary"},
{"procps", "2:3.3.12-3ubuntu1.1", "dpkg", "binary"},
{"bzip2", "1.0.6-8.1", "dpkg", "binary"},
{"init-system-helpers", "1.51", "dpkg", "binary"},
{"libncursesw5", "6.1-1ubuntu1.18.04", "dpkg", "binary"},
{"init-system-helpers", "1.51", "dpkg", "source"},
{"libpam-modules", "1.1.8-3.6ubuntu2", "dpkg", "binary"},
{"libext2fs2", "1.44.1-1", "dpkg", "binary"},
{"libacl1", "2.2.52-3build1", "dpkg", "binary"},
{"hostname", "3.20", "dpkg", "binary"},
{"libgpg-error", "1.27-6", "dpkg", "source"},
{"acl", "2.2.52-3build1", "dpkg", "source"},
{"apt", "1.6.3ubuntu0.1", "dpkg", "binary"},
{"base-files", "10.1ubuntu2.2", "dpkg", "source"},
{"libgpg-error0", "1.27-6", "dpkg", "binary"},
{"audit", "1:2.8.2-1ubuntu1", "dpkg", "source"},
{"hostname", "3.20", "dpkg", "source"},
{"gzip", "1.6-5ubuntu1", "dpkg", "binary"},
{"libc6", "2.27-3ubuntu1", "dpkg", "binary"},
{"libnettle6", "3.4-1", "dpkg", "binary"},
{"sysvinit-utils", "2.88dsf-59.10ubuntu1", "dpkg", "binary"},
{"debianutils", "4.8.4", "dpkg", "source"},
{"libstdc++6", "8-20180414-1ubuntu2", "dpkg", "binary"},
{"libsepol", "2.7-1", "dpkg", "source"},
{"libpcre3", "2:8.39-9", "dpkg", "binary"},
{"libuuid1", "2.31.1-0.4ubuntu3.1", "dpkg", "binary"},
{"systemd", "237-3ubuntu10.3", "dpkg", "source"},
{"tar", "1.29b-2", "dpkg", "source"},
{"ubuntu-keyring", "2018.02.28", "dpkg", "source"},
{"passwd", "1:4.5-1ubuntu1", "dpkg", "binary"},
{"sysvinit", "2.88dsf-59.10ubuntu1", "dpkg", "source"},
{"libidn2-0", "2.0.4-1.1build2", "dpkg", "binary"},
{"libhogweed4", "3.4-1", "dpkg", "binary"},
{"db5.3", "5.3.28-13.1ubuntu1", "dpkg", "source"},
{"sensible-utils", "0.0.12", "dpkg", "source"},
{"dpkg", "1.19.0.5ubuntu2", "dpkg", "source"},
{"libp11-kit0", "0.23.9-2", "dpkg", "binary"},
{"glibc", "2.27-3ubuntu1", "dpkg", "source"},
{"mount", "2.31.1-0.4ubuntu3.1", "dpkg", "binary"},
{"libsemanage-common", "2.7-2build2", "dpkg", "binary"},
{"libblkid1", "2.31.1-0.4ubuntu3.1", "dpkg", "binary"},
{"libdebconfclient0", "0.213ubuntu1", "dpkg", "binary"},
{"libffi", "3.2.1-8", "dpkg", "source"},
{"pam", "1.1.8-3.6ubuntu2", "dpkg", "source"},
{"bsdutils", "1:2.31.1-0.4ubuntu3.1", "dpkg", "binary"},
{"libtasn1-6", "4.13-2", "dpkg", "binary"},
{"libaudit-common", "1:2.8.2-1ubuntu1", "dpkg", "binary"},
{"gpgv", "2.2.4-1ubuntu1.1", "dpkg", "binary"},
{"libzstd", "1.3.3+dfsg-2ubuntu1", "dpkg", "source"},
{"base-passwd", "3.5.44", "dpkg", "source"},
{"adduser", "3.116ubuntu1", "dpkg", "binary"},
{"libattr1", "1:2.4.47-2build1", "dpkg", "binary"},
{"libncurses5", "6.1-1ubuntu1.18.04", "dpkg", "binary"},
{"coreutils", "8.28-1ubuntu1", "dpkg", "binary"},
{"base-passwd", "3.5.44", "dpkg", "binary"},
{"ubuntu-keyring", "2018.02.28", "dpkg", "binary"},
{"adduser", "3.116ubuntu1", "dpkg", "source"},
{"libsmartcols1", "2.31.1-0.4ubuntu3.1", "dpkg", "binary"},
{"libunistring", "0.9.9-0ubuntu1", "dpkg", "source"},
{"mawk", "1.3.3-17ubuntu3", "dpkg", "source"},
{"coreutils", "8.28-1ubuntu1", "dpkg", "source"},
{"attr", "1:2.4.47-2build1", "dpkg", "source"},
{"gmp", "2:6.1.2+dfsg-2", "dpkg", "source"},
{"libsemanage", "2.7-2build2", "dpkg", "source"},
{"libselinux1", "2.7-2build2", "dpkg", "binary"},
{"libseccomp2", "2.3.1-2.1ubuntu4", "dpkg", "binary"},
{"zlib1g", "1:1.2.11.dfsg-0ubuntu2", "dpkg", "binary"},
{"dash", "0.5.8-2.10", "dpkg", "source"},
{"gnutls28", "3.5.18-1ubuntu1", "dpkg", "source"},
{"libpam-runtime", "1.1.8-3.6ubuntu2", "dpkg", "binary"},
{"libgcrypt20", "1.8.1-4ubuntu1.1", "dpkg", "source"},
{"sensible-utils", "0.0.12", "dpkg", "binary"},
{"p11-kit", "0.23.9-2", "dpkg", "source"},
{"ncurses-base", "6.1-1ubuntu1.18.04", "dpkg", "binary"},
{"e2fsprogs", "1.44.1-1", "dpkg", "binary"},
{"libgcrypt20", "1.8.1-4ubuntu1.1", "dpkg", "binary"},
{"libprocps6", "2:3.3.12-3ubuntu1.1", "dpkg", "binary"},
{"debconf", "1.5.66", "dpkg", "source"},
{"gcc-8-base", "8-20180414-1ubuntu2", "dpkg", "binary"},
{"base-files", "10.1ubuntu2.2", "dpkg", "binary"},
{"libbz2-1.0", "1.0.6-8.1", "dpkg", "binary"},
{"grep", "3.1-2", "dpkg", "source"},
{"bash", "4.4.18-2ubuntu1", "dpkg", "binary"},
{"libgmp10", "2:6.1.2+dfsg-2", "dpkg", "binary"},
{"shadow", "1:4.5-1ubuntu1", "dpkg", "source"},
{"libidn2", "2.0.4-1.1build2", "dpkg", "source"},
{"gzip", "1.6-5ubuntu1", "dpkg", "source"},
{"util-linux", "2.31.1-0.4ubuntu3.1", "dpkg", "binary"},
{"libaudit1", "1:2.8.2-1ubuntu1", "dpkg", "binary"},
{"libsepol1", "2.7-1", "dpkg", "binary"},
{"pcre3", "2:8.39-9", "dpkg", "source"},
{"apt", "1.6.3ubuntu0.1", "dpkg", "source"},
{"nettle", "3.4-1", "dpkg", "source"},
{"util-linux", "2.31.1-0.4ubuntu3.1", "dpkg", "source"},
{"libcap-ng0", "0.7.7-3.1", "dpkg", "binary"},
{"debianutils", "4.8.4", "dpkg", "binary"},
{"ncurses", "6.1-1ubuntu1.18.04", "dpkg", "source"},
{"libffi6", "3.2.1-8", "dpkg", "binary"},
{"cdebconf", "0.213ubuntu1", "dpkg", "source"},
{"findutils", "4.6.0+git+20170828-2", "dpkg", "source"},
{"libdb5.3", "5.3.28-13.1ubuntu1", "dpkg", "binary"},
{"zlib", "1:1.2.11.dfsg-0ubuntu2", "dpkg", "source"},
{"findutils", "4.6.0+git+20170828-2", "dpkg", "binary"},
{"dpkg", "1.19.0.5ubuntu2", "dpkg", "binary"},
{"mawk", "1.3.3-17ubuntu3", "dpkg", "binary"},
},
},
{
"corrupted status file",
map[string]string{"var/lib/dpkg/status": "dpkg/testdata/corrupted"},
[]database.Feature{
{"libpam-modules-bin", "1.1.8-3.1ubuntu3", "dpkg", "binary"},
{"gcc-5", "5.1.1-12ubuntu1", "dpkg", "source"},
{"makedev", "2.3.1-93ubuntu1", "dpkg", "binary"},
{"libgcc1", "1:5.1.1-12ubuntu1", "dpkg", "binary"},
{"pam", "1.1.8-3.1ubuntu3", "dpkg", "source"},
{"makedev", "2.3.1-93ubuntu1", "dpkg", "source"},
{"libpam-runtime", "1.1.8-3.1ubuntu3", "dpkg", "binary"},
},
},
} {
featurefmt.RunTest(t, test, &lister{}, dpkg.ParserName)
}
}