From deb3c7ac87670d8cf09ab8c82b4f7e3895b77b0f Mon Sep 17 00:00:00 2001 From: k-dovgan Date: Wed, 22 Jul 2020 17:38:56 +0300 Subject: [PATCH] fix(p4): add disconnect before any connect It seems that an expired session might still return True for p4.connected() --- universum/modules/vcs/perforce_vcs.py | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/universum/modules/vcs/perforce_vcs.py b/universum/modules/vcs/perforce_vcs.py index df56bedc..2e03f0ac 100644 --- a/universum/modules/vcs/perforce_vcs.py +++ b/universum/modules/vcs/perforce_vcs.py @@ -89,13 +89,13 @@ def __init__(self, *args, **kwargs): @make_block("Connecting") @catch_p4exception() def connect(self): - if not self.p4.connected(): - self.p4.port = self.settings.port - self.p4.user = self.settings.user - self.p4.password = self.settings.password + self.disconnect() + self.p4.port = self.settings.port + self.p4.user = self.settings.user + self.p4.password = self.settings.password - self.p4.connect() - self.append_repo_status("Perforce server: " + self.settings.port + "\n\n") + self.p4.connect() + self.append_repo_status("Perforce server: " + self.settings.port + "\n\n") @make_block("Disconnecting") def disconnect(self): @@ -103,14 +103,12 @@ def disconnect(self): self.p4.disconnect() if not w: return - if "Not connected" in str(w[0].message): - text = "Perforce client is not connected on disconnect. Something must have gone wrong" - self.structure.fail_current_block(text) - else: - text = "" - for line in w: - text += "\n" + warnings.formatwarning(line.message, line.category, line.filename, line.lineno) - self.structure.fail_current_block("Unexpected warning(s): " + text) + if "Not connected" in str(w[0].message): # We consider it ok for a session to expire or not be created yet + return + text = "" + for line in w: + text += "\n" + warnings.formatwarning(line.message, line.category, line.filename, line.lineno) + self.structure.fail_current_block("Unexpected warning(s): " + text) raise SilentAbortException() def finalize(self):