src/tests/cli/t_pkglint.py
author Tim Foster <tim.s.foster@oracle.com>
Wed, 29 Sep 2010 11:55:47 +1300
changeset 2090 d84a7b3cafa3
parent 2085 10a27146ebc2
child 2147 d035de6cab14
child 2572 20cf41d565de
permissions -rw-r--r--
17061 pkglint -L output could be improved 17072 pkglint print_fmri check is insufficient for debugging 17086 pkglint -c has different behavior with relative and absolute paths
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2046
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
     1
#!/usr/bin/python
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
     2
#
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
     3
# CDDL HEADER START
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
     4
#
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
     5
# The contents of this file are subject to the terms of the
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
     6
# Common Development and Distribution License (the "License").
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
     7
# You may not use this file except in compliance with the License.
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
     8
#
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
     9
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    10
# or http://www.opensolaris.org/os/licensing.
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    11
# See the License for the specific language governing permissions
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    12
# and limitations under the License.
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    13
#
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    14
# When distributing Covered Code, include this CDDL HEADER in each
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    15
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    16
# If applicable, add the following below this CDDL HEADER, with the
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    17
# fields enclosed by brackets "[]" replaced with your own identifying
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    18
# information: Portions Copyright [yyyy] [name of copyright owner]
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    19
#
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    20
# CDDL HEADER END
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    21
#
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    22
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    23
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    24
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    25
import testutils
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    26
if __name__ == "__main__":
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    27
        testutils.setup_environment("../../../proto")
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    28
import pkg5unittest
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    29
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    30
import os
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    31
import os.path
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    32
import shutil
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    33
import unittest
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    34
import tempfile
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    35
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    36
class TestPkglintBasics(pkg5unittest.CliTestCase):
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    37
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    38
        manifest = """
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    39
set name=pkg.fmri value=pkg://opensolaris.org/system/[email protected],5.11-0.141:20100603T215050Z
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    40
set name=pkg.description value="core kernel software for a specific instruction-set architecture"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    41
set name=info.classification value=org.opensolaris.category.2008:System/Core
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    42
set name=pkg.summary value="Core Solaris Kernel"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    43
set name=org.opensolaris.consolidation value=ON
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    44
set name=variant.arch value=i386 value=sparc
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    45
set name=test value=i386 variant.arch=sparc
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    46
"""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    47
        # has two set actions, which we should catch
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    48
        broken_manifest = """
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    49
set name=pkg.fmri value=pkg://opensolaris.org/system/[email protected],5.11-0.141:20100603T215050Z
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    50
set name=pkg.description value="core kernel software for a specific instruction-set architecture"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    51
set name=info.classification value=org.opensolaris.category.2008:System/Core
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    52
set name=pkg.summary value="Core Solaris Kernel"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    53
set name=org.opensolaris.consolidation value=ON
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    54
set name=org.opensolaris.consolidation value=ON
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    55
set name=variant.arch value=i386 value=sparc
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    56
"""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    57
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    58
        # has two set actions, one of which is linted
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    59
        linted_action = """
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    60
set name=pkg.fmri value=pkg://opensolaris.org/system/[email protected],5.11-0.141:20100603T215050Z
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    61
set name=pkg.description value="core kernel software for a specific instruction-set architecture"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    62
set name=info.classification value=org.opensolaris.category.2008:System/Core
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    63
set name=pkg.summary value="Core Solaris Kernel"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    64
set name=org.opensolaris.consolidation value=ON
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    65
set name=org.opensolaris.consolidation value=ON pkg.linted=True
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    66
set name=variant.arch value=i386 value=sparc
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    67
"""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    68
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    69
        # has two set actions, one of which is linted
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    70
        linted_manifest = """
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    71
set name=pkg.fmri value=pkg://opensolaris.org/system/[email protected],5.11-0.141:20100603T215050Z
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    72
set name=pkg.description value="core kernel software for a specific instruction-set architecture"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    73
set name=info.classification value=org.opensolaris.category.2008:System/Core
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    74
set name=pkg.linted value=True
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    75
set name=pkg.summary value="Core Solaris Kernel"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    76
set name=org.opensolaris.consolidation value=ON
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    77
set name=org.opensolaris.consolidation value=ON
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    78
set name=variant.arch value=i386 value=sparc
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    79
"""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    80
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    81
        module_exclusion_rc = """
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    82
[pkglint]
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    83
pkglint.exclude: pkg.lint.pkglint_manifest.PkgManifestChecker
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    84
"""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    85
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    86
        method_exclusion_rc = """
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    87
[pkglint]
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    88
pkglint.exclude: pkg.lint.pkglint_manifest.PkgManifestChecker.duplicate_sets
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    89
"""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    90
        low_noise_rc = """
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    91
[pkglint]
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    92
log_level = CRITICAL
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    93
"""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    94
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    95
        def setUp(self):                
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    96
                pkg5unittest.CliTestCase.setUp(self)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    97
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    98
        def test_1_usage(self):
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
    99
                """Tests that we show a usage message."""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   100
                ret, output, err = self.pkglint("--help")
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   101
                self.assert_("Usage:" in output,
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   102
                    "No usage string printed")
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   103
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   104
        def test_2_badopts(self):
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   105
                """Tests that we exit with an error on wrong or missing args"""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   106
                for opt in ["-x", "--asdf" ]:
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   107
                        ret, output, err = self.pkglint(opt, exit=2)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   108
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   109
        def test_3_list(self):
2090
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   110
                """Tests that -L prints headers and descriptions or methods."""
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   111
                for flag in ["-L", "-vL"]:
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   112
                        ret, output, err = self.pkglint(flag)
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   113
                        self.assert_("pkglint.dupaction001" in output,
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   114
                            "short name didn't appear in %s output" % flag)
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   115
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   116
                        self.assert_("NAME" in output,
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   117
                            "Header not printed in %s output" % flag)
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   118
                        if flag == "-vL":
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   119
                                self.assert_(
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   120
                                    "pkg.lint.pkglint_action.PkgDupActionChecker.duplicate_paths"
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   121
                                    in output,
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   122
                                    "verbose list output didn't show method")
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   123
                        elif flag == "-L":
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   124
                                self.assert_(
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   125
                                    "Paths should be unique." in output,
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   126
                                    "description didn't appear in -L output: %s" % output)
2046
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   127
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   128
        def test_4_manifests(self):
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   129
                """Tests that we exit normally with a correct manifest."""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   130
                mpath = self.make_manifest(self.manifest)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   131
                self.pkglint(mpath)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   132
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   133
        def test_5_broken_manifest(self):
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   134
                """Tests that we exit with an error when presented one or more
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   135
                broken manifests."""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   136
                mpath = self.make_manifest(self.manifest)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   137
                mpath1 = self.make_manifest(self.broken_manifest)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   138
                self.pkglint(mpath1, exit=1)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   139
                # only one of these is broken
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   140
                self.pkglint("%s %s" % (mpath, mpath1), exit=1)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   141
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   142
        def test_6_rcfile(self):
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   143
                """Checks that check exclusion works, by testing a broken
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   144
                manifest, excluding checks designed to catch the fault.
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   145
                This tests part of the engine, as well as the -f handling
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   146
                in the CLI.
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   147
                """
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   148
                mpath1 = self.make_manifest(self.broken_manifest)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   149
                self.make_misc_files({"rcfile": self.module_exclusion_rc})
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   150
                self.make_misc_files({"rcfile1": self.method_exclusion_rc})
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   151
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   152
                # verify we fail first
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   153
                self.pkglint("%s" % mpath1, exit=1)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   154
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   155
                # now we should succeed
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   156
                self.pkglint("-f %s/rcfile %s" % (self.test_root,  mpath1),
2085
10a27146ebc2 16802 pkglint should check the value of info.classification in manifests
Tim Foster <tim.s.foster@oracle.com>
parents: 2081
diff changeset
   157
                    testrc=False, exit=0)
2046
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   158
                self.pkglint("-f %s/rcfile1 %s" % (self.test_root, mpath1),
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   159
                    exit=0)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   160
2090
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   161
                ret, output, err = self.pkglint("-f %s/rcfile -vL" %
2085
10a27146ebc2 16802 pkglint should check the value of info.classification in manifests
Tim Foster <tim.s.foster@oracle.com>
parents: 2081
diff changeset
   162
                    self.test_root, testrc=False, exit=0)
2046
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   163
                self.assert_(
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   164
                    "pkg.lint.pkglint_manifest.PkgManifestChecker.duplicate_sets"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   165
                    in output, "List output missing excluded checker")
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   166
                self.assert_("Excluded checks:" in output)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   167
2090
d84a7b3cafa3 17061 pkglint -L output could be improved
Tim Foster <tim.s.foster@oracle.com>
parents: 2085
diff changeset
   168
                ret, output, err = self.pkglint("-f %s/rcfile1 -vL" %
2085
10a27146ebc2 16802 pkglint should check the value of info.classification in manifests
Tim Foster <tim.s.foster@oracle.com>
parents: 2081
diff changeset
   169
                    self.test_root, testrc=False, exit=0)
2046
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   170
                self.assert_(
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   171
                    "pkg.lint.pkglint_manifest.PkgManifestChecker.duplicate_sets"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   172
                    in output, "List output missing excluded checker")
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   173
                self.assert_("Excluded checks:" in output)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   174
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   175
        def test_7_linted(self):
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   176
                """Checks that the pkg.linted keyword works for actions and
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   177
                manifests.  While this tests the linted functionality of the
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   178
                engine, it's also a CLI test to ensure we report a zero
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   179
                exit code from a lint check that has emitted output, but
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   180
                doesn't indicate an error."""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   181
                mpath1 = self.make_manifest(self.broken_manifest)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   182
                linted_action_path = self.make_manifest(self.linted_action)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   183
                linted_manifest_path = self.make_manifest(self.linted_manifest)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   184
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   185
                # verify we fail first
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   186
                self.pkglint("%s" % mpath1, exit=1)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   187
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   188
                # now we should succeed
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   189
                self.pkglint(linted_action_path, exit=0)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   190
                self.pkglint(linted_manifest_path, exit=0)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   191
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   192
        def test_8_verbose(self):
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   193
                """Checks that the -v flag works, overriding the log level
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   194
                in pkglintrc."""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   195
                mpath = self.make_manifest(self.broken_manifest)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   196
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   197
                # default log setting
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   198
                ret, output, err = self.pkglint("%s" % mpath, exit=1)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   199
                self.assert_("Total number of checks found" not in output,
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   200
                    "verbose output detected in non-verbose mode")
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   201
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   202
                self.assert_("duplicate set actions" in err)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   203
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   204
                ret, output_verbose, err = self.pkglint("-v %s" % mpath, exit=1)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   205
                self.assert_("Total number of checks found" in output_verbose,
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   206
                    "verbose output not printed in verbose mode")
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   207
                self.assert_("duplicate set actions" in err)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   208
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   209
                # override log setting in config file
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   210
                self.make_misc_files(
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   211
                    {"low_noise_rc": self.low_noise_rc})
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   212
                ret, output, err = self.pkglint("-f %s/low_noise_rc %s" %
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   213
                    (self.test_root, mpath), exit=0)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   214
                self.assert_("Total number of checks found" not in output,
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   215
                    "verbose output detected in non-verbose mode")
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   216
                self.assert_("duplicate set actions" not in err)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   217
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   218
                ret, output, err = self.pkglint("-v -f %s/low_noise_rc %s" %
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   219
                    (self.test_root, mpath), exit=1)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   220
                self.assert_("Total number of checks found" in output,
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   221
                    "verbose output detected in non-verbose mode")
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   222
                self.assert_("duplicate set actions" in err)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   223
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   224
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   225
class TestPkglintCliDepot(pkg5unittest.ManyDepotTestCase):
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   226
        """Tests that exercise the CLI aspect of dealing with repositories"""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   227
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   228
        ref_mf = {}
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   229
        ref_mf["ref-sample1.mf"] = """
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   230
#
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   231
# A sample package which delivers several actions
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   232
#
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   233
set name=pkg.fmri value=pkg://opensolaris.org/system/[email protected],5.11-0.141
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   234
set name=pkg.description value="core kernel software for a specific instruction-set architecture"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   235
set name=info.classification value=org.opensolaris.category.2008:System/Core
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   236
set name=pkg.summary value="Core Solaris Kernel"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   237
set name=org.opensolaris.consolidation value=osnet
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   238
set name=variant.arch value=i386 value=sparc
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   239
file /etc/passwd path=etc/passwd group=sys mode=0644 owner=root preserve=true
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   240
dir group=sys mode=0755 owner=root path=etc
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   241
"""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   242
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   243
        ref_mf["ref-sample2.mf"] = """
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   244
#
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   245
# A sample package which delivers several actions
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   246
#
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   247
set name=pkg.fmri value=pkg://opensolaris.org/system/[email protected],5.11-0.141
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   248
set name=pkg.description value="additional reference actions for pkglint"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   249
set name=info.classification value=org.opensolaris.category.2008:System/Core
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   250
set name=pkg.summary value="Core Solaris Kernel"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   251
set name=org.opensolaris.consolidation value=osnet
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   252
set name=variant.arch value=i386 value=sparc
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   253
file /etc/motd group=sys mode=0644 owner=root path=etc/motd
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   254
dir group=sys mode=0755 owner=root path=etc
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   255
dir group=sys mode=0755 owner=root path=etc
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   256
"""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   257
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   258
        ref_mf["ref-sample3.mf"] = """
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   259
#
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   260
# A sample package which delivers several actions
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   261
#
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   262
set name=pkg.fmri value=pkg://opensolaris.org/system/[email protected],5.11-0.141
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   263
set name=pkg.description value="additional reference actions for pkglint"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   264
set name=info.classification value=org.opensolaris.category.2008:System/Core
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   265
set name=pkg.summary value="Core Solaris Kernel"
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   266
set name=org.opensolaris.consolidation value=osnet
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   267
set name=variant.arch value=i386 value=sparc
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   268
file /etc/group group=sys mode=0644 owner=root path=etc/group
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   269
dir group=sys mode=0755 owner=root path=etc
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   270
"""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   271
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   272
        lint_mf = {}
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   273
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   274
        def setUp(self):
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   275
                pkg5unittest.ManyDepotTestCase.setUp(self, ["opensolaris.org",
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   276
                    "opensolaris.org"], start_depots=True)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   277
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   278
                self.ref_uri = self.dcs[1].get_depot_url()
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   279
                self.lint_uri = self.dcs[2].get_depot_url()
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   280
                self.cache_dir = os.path.join(self.test_root, "pkglint-cache")
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   281
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   282
                paths = self.make_misc_files(self.ref_mf)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   283
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   284
                for item in paths:
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   285
                        self.pkgsend(depot_url=self.ref_uri,
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   286
                            command="publish --fmri-in-manifest %s" % item)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   287
                self.pkgsend(depot_url=self.ref_uri,
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   288
                            command="refresh-index")
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   289
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   290
        def test_1_invalid_uri(self):
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   291
                """ Tests that we can cope with bad URIs for both ref and
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   292
                lint repository arguments."""
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   293
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   294
                bad = ["htto://foobar", "https://nosuchhost", "file:/dev/null",
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   295
                    "file:///dev/null", "utternonsense"]
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   296
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   297
                cache = tempfile.mkdtemp("pkglint-cache", "", self.test_root)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   298
                for uri in bad:
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   299
                        # bad usage, missing a -c argument
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   300
                        self.pkglint("-l %s" % uri, exit=2)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   301
                        self.pkglint("-r %s -l %s" % (self.lint_uri, uri),
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   302
                            exit=2)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   303
                        self.pkglint("-r %s -l %s" % (uri, self.ref_uri),
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   304
                            exit=2)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   305
                        self.pkglint
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   306
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   307
                        if os.path.exists(cache):
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   308
                                shutil.rmtree(cache)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   309
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   310
                        self.pkglint("-c %s -l %s" % (cache, uri), exit=1)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   311
                        self.pkglint("-c %s -r %s -l %s" %
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   312
                            (cache, self.lint_uri, uri), exit=1)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   313
                        self.pkglint("-c %s -r %s -l %s" %
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   314
                            (cache, uri, self.ref_uri), exit=1)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   315
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   316
        def test_2_badcache(self):
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   317
                """Checks we can deal with bad -c options """
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   318
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   319
                opts = ["/dev/null", "/home", "/usr", "/etc/passwd"]
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   320
                for cache in opts:
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   321
                        self.pkglint("-c %s -r %s -l %s" %
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   322
                            (cache, self.ref_uri, self.lint_uri), exit=1)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   323
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   324
                # now sufficiently corrupt the cache, such that we couldn't
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   325
                # use the provided cache dir
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   326
                for name in ["lint_image", "ref_image"]:
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   327
                        cache = tempfile.mkdtemp("pkglint-cache", "",
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   328
                            self.test_root)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   329
                        path = os.path.join(cache, name)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   330
                        f = file(path, "w")
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   331
                        f.close()
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   332
                        self.pkglint("-c %s -r %s -l %s" %
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   333
                            (cache, self.ref_uri, self.lint_uri), exit=1)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   334
                        shutil.rmtree(cache)
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   335
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   336
if __name__ == "__main__":
2522cde7adc2 13536 We need a way to audit one or more packages
Tim Foster <tim.s.foster@oracle.com>
parents:
diff changeset
   337
        unittest.main()