'Calling L{IConnector.stopConnecting} in C{Factory.startedConnecting}
results in C{Factory.clientConnectionFailed} being called with
L{error.UserError} as the reason.'

def test_userFail(self):

    serverFactory = MyServerFactory()
    reactor = self.buildReactor()
    tcpPort = reactor.listenTCP(0, serverFactory, interface=self.interface)
    portNumber = tcpPort.getHost().port
    fatalErrors = []
    def startedConnecting(connector):
        try:
            connector.stopConnecting()
        except Exception:
            fatalErrors.append(Failure())
            reactor.stop()
    clientFactory = ClientStartStopFactory()
    clientFactory.startedConnecting = startedConnecting
    clientFactory.whenStopped.addBoth((lambda _: reactor.stop()))
    reactor.callWhenRunning((lambda : reactor.connectTCP(self.interface, portNumber, clientFactory)))
    self.runReactor(reactor)
    if fatalErrors:
        self.fail(fatalErrors[0].getTraceback())
    clientFactory.reason.trap(UserError)
    self.assertEqual(clientFactory.failed, 1)
