src/tests/api/t_p5i.py
author Tom Mueller <Tom.Mueller@sun.com>
Thu, 23 Jul 2009 14:51:15 -0500
changeset 1265 c700981b0af2
parent 1253 6398a8499a91
child 1507 b956ea23d3a6
permissions -rw-r--r--
8656 build download hash check fails in Windows due to text mode open 9997 transport.engine uses SIGPIPE which doesn't exist on Windows 9998 URL construction incorrect in p5i and t_p5i 9999 t_p5i test case leaves file descriptor open 10000 pycurl and CA certs fail to build on Windows 10001 t_plat test cases fail because working directory is inside image to be removed 10127 transport module uses os.statvfs which isn't available on Windows
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1117
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     1
#!/usr/bin/python2.4
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     2
#
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     3
# CDDL HEADER START
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     4
#
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     5
# The contents of this file are subject to the terms of the
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     6
# Common Development and Distribution License (the "License").
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     7
# You may not use this file except in compliance with the License.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     8
#
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
     9
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    10
# or http://www.opensolaris.org/os/licensing.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    11
# See the License for the specific language governing permissions
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    12
# and limitations under the License.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    13
#
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    14
# When distributing Covered Code, include this CDDL HEADER in each
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    15
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    16
# If applicable, add the following below this CDDL HEADER, with the
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    17
# fields enclosed by brackets "[]" replaced with your own identifying
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    18
# information: Portions Copyright [yyyy] [name of copyright owner]
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    19
#
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    20
# CDDL HEADER END
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    21
#
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    22
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    23
#
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    24
# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    25
# Use is subject to license terms.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    26
#
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    27
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    28
import errno
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    29
import unittest
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    30
import cStringIO
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    31
import os
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    32
import pkg.client.api_errors as api_errors
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    33
import pkg.client.publisher as publisher
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    34
import pkg.fmri as fmri
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    35
import pkg.p5i as p5i
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    36
import shutil
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    37
import sys
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    38
import tempfile
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    39
import urllib
1265
c700981b0af2 8656 build download hash check fails in Windows due to text mode open
Tom Mueller <Tom.Mueller@sun.com>
parents: 1253
diff changeset
    40
import urlparse
1117
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    41
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    42
# Set the path so that modules above can be found
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    43
path_to_parent = os.path.join(os.path.dirname(__file__), "..")
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    44
sys.path.insert(0, path_to_parent)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    45
import pkg5unittest
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    46
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    47
class TestP5I(pkg5unittest.Pkg5TestCase):
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    48
        """Class to test the functionality of the pkg.p5i module."""
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    49
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    50
        p5i_bobcat = """{
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    51
  "packages": [
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    52
    "pkg:/[email protected],5.11-0", 
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    53
    "baz"
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    54
  ], 
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    55
  "publishers": [
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    56
    {
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    57
      "alias": "cat", 
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    58
      "name": "bobcat", 
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    59
      "packages": [
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    60
        "pkg:/[email protected],5.11-0"
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    61
      ], 
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    62
      "repositories": [
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    63
        {
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    64
          "collection_type": "core", 
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    65
          "description": "xkcd.net/325", 
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    66
          "legal_uris": [
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    67
            "http://xkcd.com/license.html"
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    68
          ], 
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    69
          "mirrors": [], 
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    70
          "name": "source", 
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    71
          "origins": [
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    72
            "http://localhost:12001/"
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    73
          ], 
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    74
          "refresh_seconds": 43200, 
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    75
          "registration_uri": "", 
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    76
          "related_uris": []
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    77
        }
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    78
      ]
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    79
    }
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    80
  ], 
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    81
  "version": 1
1253
6398a8499a91 9027 p5i module should add terminating newline
Shawn Walker <srw@sun.com>
parents: 1117
diff changeset
    82
}
6398a8499a91 9027 p5i module should add terminating newline
Shawn Walker <srw@sun.com>
parents: 1117
diff changeset
    83
"""
1117
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    84
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    85
        misc_files = [ "libc.so.1" ]
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    86
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    87
        def setUp(self):
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    88
                self.pid = os.getpid()
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    89
                self.pwd = os.getcwd()
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    90
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    91
                self.__test_prefix = os.path.join(tempfile.gettempdir(),
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    92
                    "ips.test.%d" % self.pid)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    93
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    94
                try:
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    95
                        os.makedirs(self.__test_prefix, 0755)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    96
                except OSError, e:
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    97
                        if e.errno != errno.EEXIST:
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    98
                                raise e
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
    99
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   100
                for p in self.misc_files:
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   101
                        fpath = os.path.join(self.get_test_prefix(), p)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   102
                        f = open(fpath, "wb")
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   103
                        # write the name of the file into the file, so that
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   104
                        # all files have differing contents
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   105
                        f.write(fpath)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   106
                        f.close()
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   107
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   108
        def tearDown(self):
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   109
                shutil.rmtree(self.get_test_prefix())
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   110
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   111
        def get_test_prefix(self):
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   112
                return self.__test_prefix
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   113
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   114
        def test_parse_write(self):
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   115
                """Verify that the p5i parsing and writing works as expected."""
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   116
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   117
                # First build a publisher object matching our expected data.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   118
                repo = publisher.Repository(description="xkcd.net/325",
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   119
                    legal_uris=["http://xkcd.com/license.html"],
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   120
                    name="source", origins=["http://localhost:12001/"],
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   121
                    refresh_seconds=43200)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   122
                pub = publisher.Publisher("bobcat", alias="cat",
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   123
                    repositories=[repo])
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   124
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   125
                # Verify that p5i export and parse works as expected.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   126
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   127
                # Ensure that PkgFmri and strings are supported properly.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   128
                # Build a simple list of packages.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   129
                fmri_foo = fmri.PkgFmri("pkg:/[email protected],5.11-0", None)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   130
                pnames = {
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   131
                    "bobcat": [fmri_foo],
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   132
                    "": ["pkg:/[email protected],5.11-0", "baz"],
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   133
                }
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   134
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   135
                # Dump the p5i data.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   136
                fobj = cStringIO.StringIO()
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   137
                p5i.write(fobj, [pub], pkg_names=pnames)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   138
1253
6398a8499a91 9027 p5i module should add terminating newline
Shawn Walker <srw@sun.com>
parents: 1117
diff changeset
   139
                # Verify that the p5i data ends with a terminating newline.
6398a8499a91 9027 p5i module should add terminating newline
Shawn Walker <srw@sun.com>
parents: 1117
diff changeset
   140
                fobj.seek(-1, 2)
6398a8499a91 9027 p5i module should add terminating newline
Shawn Walker <srw@sun.com>
parents: 1117
diff changeset
   141
                self.assertEqual(fobj.read(), "\n")
6398a8499a91 9027 p5i module should add terminating newline
Shawn Walker <srw@sun.com>
parents: 1117
diff changeset
   142
1117
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   143
                # Verify that output matches expected output.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   144
                fobj.seek(0)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   145
                output = fobj.read()
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   146
                self.assertEqual(output, self.p5i_bobcat)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   147
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   148
                def validate_results(results):
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   149
                        # First result should be 'bobcat' publisher and its
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   150
                        # pkg_names.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   151
                        pub, pkg_names = results[0]
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   152
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   153
                        self.assertEqual(pub.prefix, "bobcat")
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   154
                        self.assertEqual(pub.alias, "cat")
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   155
                        repo = pub.selected_repository
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   156
                        self.assertEqual(repo.name, "source")
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   157
                        self.assertEqual(repo.description, "xkcd.net/325")
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   158
                        self.assertEqual(repo.legal_uris[0],
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   159
                            "http://xkcd.com/license.html")
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   160
                        self.assertEqual(repo.refresh_seconds, 43200)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   161
                        self.assertEqual(pkg_names, [str(fmri_foo)])
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   162
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   163
                        # Last result should be no publisher and a list of
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   164
                        # pkg_names.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   165
                        pub, pkg_names = results[1]
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   166
                        self.assertEqual(pub, None)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   167
                        self.assertEqual(pkg_names, ["pkg:/[email protected],5.11-0",
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   168
                            "baz"])
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   169
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   170
                # Verify that parse returns the expected object and information
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   171
                # when provided a fileobj.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   172
                fobj.seek(0)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   173
                validate_results(p5i.parse(fileobj=fobj))
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   174
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   175
                # Verify that parse returns the expected object and information
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   176
                # when provided a file path.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   177
                fobj.seek(0)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   178
                (fd1, path1) = tempfile.mkstemp(dir=self.get_test_prefix())
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   179
                os.write(fd1, fobj.read())
1265
c700981b0af2 8656 build download hash check fails in Windows due to text mode open
Tom Mueller <Tom.Mueller@sun.com>
parents: 1253
diff changeset
   180
                os.close(fd1)
1117
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   181
                validate_results(p5i.parse(location=path1))
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   182
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   183
                # Verify that parse returns the expected object and information
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   184
                # when provided a file URI.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   185
                location = os.path.abspath(path1)
1265
c700981b0af2 8656 build download hash check fails in Windows due to text mode open
Tom Mueller <Tom.Mueller@sun.com>
parents: 1253
diff changeset
   186
                location = urlparse.urlunparse(("file", "",
c700981b0af2 8656 build download hash check fails in Windows due to text mode open
Tom Mueller <Tom.Mueller@sun.com>
parents: 1253
diff changeset
   187
                    urllib.pathname2url(location), "", "", ""))
1117
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   188
                validate_results(p5i.parse(location=location))
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   189
                fobj.close()
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   190
                fobj = None
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   191
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   192
                # Verify that appropriate exceptions are raised for p5i
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   193
                # information that can't be retrieved (doesn't exist).
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   194
                nefpath = os.path.join(self.get_test_prefix(), "non-existent")
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   195
                self.assertRaises(api_errors.RetrievalError,
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   196
                    p5i.parse, location="file://%s" % nefpath)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   197
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   198
                self.assertRaises(api_errors.RetrievalError,
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   199
                    p5i.parse, location=nefpath)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   200
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   201
                # Verify that appropriate exceptions are raised for invalid
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   202
                # p5i information.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   203
                lcpath = os.path.join(self.get_test_prefix(), "libc.so.1")
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   204
                location = os.path.abspath(lcpath)
1265
c700981b0af2 8656 build download hash check fails in Windows due to text mode open
Tom Mueller <Tom.Mueller@sun.com>
parents: 1253
diff changeset
   205
                location = urlparse.urlunparse(("file", "",
c700981b0af2 8656 build download hash check fails in Windows due to text mode open
Tom Mueller <Tom.Mueller@sun.com>
parents: 1253
diff changeset
   206
                    urllib.pathname2url(location), "", "", ""))
1117
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   207
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   208
                # First, test as a file:// URI.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   209
                self.assertRaises(api_errors.InvalidP5IFile, p5i.parse,
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   210
                    location=location)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   211
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   212
                # Last, test as a pathname.
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   213
                self.assertRaises(api_errors.InvalidP5IFile, p5i.parse,
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   214
                    location=location)
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   215
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   216
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   217
if __name__ == "__main__":
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   218
        unittest.main()
667aecade0ab 7862 install links using p5i for search results desired
Shawn Walker <srw@sun.com>
parents:
diff changeset
   219