// 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) } }