#!/usr/bin/env python
'''Test suite for p4py'''
# Miki Tebeka <mtebeka@qualcomm.com>
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()