#!/usr/bin/env python '''Test suite for p4py''' # Miki Tebeka from unittest import TestCase, main import p4py # Load test config to current environment execfile("test_p4py.conf") class TestDummy(TestCase): def test_not_implemented(self): for func_name, num_args in ( ("tagged", 0), ("translate", 1), ("login", 1), ("passwd", 1)): p4 = p4py.P4() args = (None, ) * num_args func = getattr(p4, func_name) try: func(*args) self.fail() except NotImplementedError: pass def test_dummpy(self): for func_name, retval in ( ("connect", 1), ("disconnect", 1), ("parse_forms", 1), ("dropped", 0)): p4 = p4py.P4() func = getattr(p4, func_name) if func() != retval: self.fail("bad return value from %s" % func_name) class TestP4Py(TestCase): def new_p4(self): p4 = p4py.P4() p4.user = P4USER p4.port = P4PORT p4.client = P4CLIENT return p4 def test_fetch(self): p4 = self.new_p4() user = p4.fetch_user() if user["User"] != P4USER: self.fail("bad user") def test_client(self): p4 = self.new_p4() client = p4.fetch_client() if client["Client"] != P4CLIENT: self.fail("bad client") def test_save(self): p4 = self.new_p4() client = p4.run("client", "-o")[0] desc = "NNN " + client["Description"] client["Description"] = desc p4.save_client(client) client = p4.fetch_client() if client["Description"] != desc: self.fail("bad client description") def test_levels(self): p4 = self.new_p4() p4.exception_level = 0 p4.run("no-such-command") p4.exception_level = 1 try: p4.run("no-such-command") self.fail() except p4py.P4Error: pass def test_files(self): p4 = self.new_p4() if len(p4.run_files("//...")) == 0: self.fail("no files found") def test_fstat(self): p4 = self.new_p4() if len(p4.run_fstat("//%s/..." % p4.client)) == 0: self.fail("no files found") def test_edit(self): p4 = self.new_p4() files = p4.run_edit("//...") if not files: self.fail("can't edit") def test_revert(self): p4 = self.new_p4() files = p4.run_edit("//...") p4.run_revert("//...") files = p4.run_opened("//...") if files: self.fail("can't revert") def test_changes(self): p4 = self.new_p4() changes = p4.run_changes() change_1 = p4.run_changes("-m", "1") if len(change_1) != 1: self.fail("bad number of changes") # FIXME: Should we sort changes by date first? if changes[0] != change_1[0]: self.fail("bad change") if __name__ == "__main__": main()