It looks like a neat and tidy solution to me Dan.
Just one minor nit on the example: I had to really think about what 'UnexpectedReturnException' meant, and after looking through the code a couple of times I think I got it - it's saying that the method return value was not correct.

I'm just wondering if there could be a more obvious name than 'UnexpectedReturnException' - maybe 'WrongReturnValueException'?

Trev

Dan Price wrote:
I'm working on rewriting the test harness for the CLI testing in
terms of python's unittest framework, to achieve a higher level of
uniformity among our test cases, and also cut down the time it
takes to develop a new test case.

At the end of this mail I've included a sample test case using
my new harness.  Feedback appreciated on the usability of this
sort of API.

Notably, all of the error checking is built into the superclass
infrastructure-- so if something exits with an unexpected status or
does a traceback, we get an exception and therefore a traceback.
The depot is created for you before the test case starts and shutdown
at the end.  The whole pkgsend PKG_TRANS_ID stuff is all taken care
of automagically by the "pkgsend()" routine.

The code is also designed (although not implemented) so that we should
be able to drop in a "TwoDepotTestCase" superclass which starts up
multiple depots, similar to our existing two-depot.ksh tests.

Running the attached code yields:

xanadu # python t_pkg_install_basics.py .
----------------------------------------------------------------------
Ran 1 test in 2.707s

Something going wrong looks like this (contrived example):

E
======================================================================
ERROR: Send empty package [EMAIL PROTECTED], install and uninstall
----------------------------------------------------------------------
Traceback (most recent call last):
  File "t_pkg_install_basics.py", line 51, in test_basics_1
    self.pkg("verify", exit = 1)
  File "/net/snowdog/aux/dp/ips-fixes/gate/src/tests/cli/testutils.py", line 
94, in pkg
    raise UnexpectedReturnException(output)
UnexpectedReturnException

----------------------------------------------------------------------
Ran 1 test in 2.706s

FAILED (errors=1)

Comments appreciated,

        -dp

----------------- ----------------- ----------------- -----------------
#!/usr/bin/python
#

import unittest
import os

import testutils

class TestPkgInstallBasics(testutils.SingleDepotTestCase):

        def test_basics_1(self):
                """ Send empty package [EMAIL PROTECTED], install and uninstall 
"""
                durl = self.dc.get_depot_url()

                self.pkgsend(durl, "open [EMAIL PROTECTED],5.11-0")
                self.pkgsend(durl, "close")

                self.image_create(durl)

                self.pkg("status -a")
                self.pkg("status", exit=1)

                self.pkg("install foo")

                self.pkg("status")
                self.pkg("verify")

                self.pkg("uninstall foo")
                self.pkg("verify")


if __name__ == "__main__":
        unittest.main()
----------------- ----------------- ----------------- -----------------


Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

_______________________________________________
pkg-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/pkg-discuss

Reply via email to