179 lines
6.4 KiB
Python
179 lines
6.4 KiB
Python
import locale
|
|
|
|
try: locale.setlocale( locale.LC_ALL, '' )
|
|
except: pass
|
|
|
|
from include import HydrusConstants as HC
|
|
|
|
from include import ClientConstants as CC
|
|
from include import HydrusNetworking
|
|
from include import HydrusSessions
|
|
from include import HydrusTags
|
|
from include import TestClientConstants
|
|
from include import TestClientDaemons
|
|
from include import TestConstants
|
|
from include import TestDialogs
|
|
from include import TestDB
|
|
from include import TestFunctions
|
|
from include import TestHydrusDownloading
|
|
from include import TestHydrusEncryption
|
|
from include import TestHydrusImageHandling
|
|
from include import TestHydrusNATPunch
|
|
from include import TestHydrusServer
|
|
from include import TestHydrusSessions
|
|
from include import TestHydrusTags
|
|
import collections
|
|
import os
|
|
import sys
|
|
import threading
|
|
import time
|
|
import unittest
|
|
import wx
|
|
from twisted.internet import reactor
|
|
|
|
only_run = None
|
|
|
|
class App( wx.App ):
|
|
|
|
def OnInit( self ):
|
|
|
|
HC.app = self
|
|
|
|
HC.http = HydrusNetworking.HTTPConnectionManager()
|
|
|
|
def show_text( text ): pass
|
|
|
|
HC.ShowText = show_text
|
|
|
|
self._reads = {}
|
|
|
|
self._reads[ 'hydrus_sessions' ] = []
|
|
self._reads[ 'local_booru_share_keys' ] = []
|
|
self._reads[ 'messaging_sessions' ] = []
|
|
self._reads[ 'tag_censorship' ] = []
|
|
self._reads[ 'options' ] = CC.CLIENT_DEFAULT_OPTIONS
|
|
|
|
services = []
|
|
services.append( CC.Service( HC.LOCAL_BOORU_SERVICE_KEY, HC.LOCAL_BOORU, HC.LOCAL_BOORU_SERVICE_KEY, { 'max_monthly_data' : None, 'used_monthly_data' : 0 } ) )
|
|
services.append( CC.Service( HC.LOCAL_FILE_SERVICE_KEY, HC.LOCAL_FILE, HC.LOCAL_FILE_SERVICE_KEY, {} ) )
|
|
services.append( CC.Service( HC.LOCAL_TAG_SERVICE_KEY, HC.LOCAL_TAG, HC.LOCAL_TAG_SERVICE_KEY, {} ) )
|
|
self._reads[ 'services' ] = services
|
|
|
|
self._reads[ 'sessions' ] = []
|
|
self._reads[ 'tag_parents' ] = {}
|
|
self._reads[ 'tag_siblings' ] = {}
|
|
self._reads[ 'web_sessions' ] = {}
|
|
|
|
HC.options = CC.CLIENT_DEFAULT_OPTIONS
|
|
HC.pubsub = TestConstants.FakePubSub()
|
|
|
|
self._writes = collections.defaultdict( list )
|
|
|
|
self._managers = {}
|
|
|
|
self._managers[ 'services' ] = CC.ServicesManager()
|
|
|
|
self._managers[ 'hydrus_sessions' ] = HydrusSessions.HydrusSessionManagerClient()
|
|
self._managers[ 'tag_censorship' ] = HydrusTags.TagCensorshipManager()
|
|
self._managers[ 'tag_siblings' ] = HydrusTags.TagSiblingsManager()
|
|
self._managers[ 'tag_parents' ] = HydrusTags.TagParentsManager()
|
|
self._managers[ 'undo' ] = CC.UndoManager()
|
|
self._managers[ 'web_sessions' ] = TestConstants.FakeWebSessionManager()
|
|
self._managers[ 'restricted_services_sessions' ] = HydrusSessions.HydrusSessionManagerServer()
|
|
self._managers[ 'messaging_sessions' ] = HydrusSessions.HydrusMessagingSessionManagerServer()
|
|
self._managers[ 'local_booru' ] = CC.LocalBooruCache()
|
|
|
|
self._cookies = {}
|
|
|
|
suites = []
|
|
|
|
if only_run is None: run_all = True
|
|
else: run_all = False
|
|
|
|
if run_all or only_run == 'cc': suites.append( unittest.TestLoader().loadTestsFromModule( TestClientConstants ) )
|
|
if run_all or only_run == 'daemons': suites.append( unittest.TestLoader().loadTestsFromModule( TestClientDaemons ) )
|
|
if run_all or only_run == 'dialogs': suites.append( unittest.TestLoader().loadTestsFromModule( TestDialogs ) )
|
|
if run_all or only_run == 'db': suites.append( unittest.TestLoader().loadTestsFromModule( TestDB ) )
|
|
if run_all or only_run == 'downloading': suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusDownloading ) )
|
|
if run_all or only_run == 'encryption': suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusEncryption ) )
|
|
if run_all or only_run == 'functions': suites.append( unittest.TestLoader().loadTestsFromModule( TestFunctions ) )
|
|
if run_all or only_run == 'image': suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusImageHandling ) )
|
|
if run_all or only_run == 'nat': suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusNATPunch ) )
|
|
if run_all or only_run == 'server': suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusServer ) )
|
|
if run_all or only_run == 'sessions': suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusSessions ) )
|
|
if run_all or only_run == 'tags': suites.append( unittest.TestLoader().loadTestsFromModule( TestHydrusTags ) )
|
|
|
|
suite = unittest.TestSuite( suites )
|
|
|
|
threading.Thread( target = reactor.run, kwargs = { 'installSignalHandlers' : 0 } ).start()
|
|
|
|
runner = unittest.TextTestRunner( verbosity = 1 )
|
|
|
|
runner.run( suite )
|
|
|
|
reactor.callFromThread( reactor.stop )
|
|
|
|
return True
|
|
|
|
|
|
def GetManager( self, manager_type ): return self._managers[ manager_type ]
|
|
|
|
def GetWrite( self, name ):
|
|
|
|
write = self._writes[ name ]
|
|
|
|
del self._writes[ name ]
|
|
|
|
return write
|
|
|
|
|
|
def Read( self, name, *args, **kwargs ): return self._reads[ name ]
|
|
|
|
def ReadDaemon( self, name, *args, **kwargs ): return self.Read( name )
|
|
|
|
def ResetIdleTimer( self ): pass
|
|
|
|
def SetRead( self, name, value ): self._reads[ name ] = value
|
|
|
|
def SetWebCookies( self, name, value ): self._cookies[ name ] = value
|
|
|
|
def Write( self, name, *args, **kwargs ):
|
|
|
|
self._writes[ name ].append( ( args, kwargs ) )
|
|
|
|
|
|
def WriteSynchronous( self, name, *args, **kwargs ):
|
|
|
|
self._writes[ name ].append( ( args, kwargs ) )
|
|
|
|
if name == 'import_file':
|
|
|
|
( path, ) = args
|
|
|
|
with open( path, 'rb' ) as f: file = f.read()
|
|
|
|
if file == 'blarg': raise Exception( 'File failed to import for some reason!' )
|
|
else: return ( 'successful', 'hash' )
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
args = sys.argv[1:]
|
|
|
|
if len( args ) > 0:
|
|
|
|
only_run = args[0]
|
|
|
|
else: only_run = None
|
|
|
|
old_pubsub = HC.pubsub
|
|
|
|
app = App()
|
|
|
|
HC.shutdown = True
|
|
|
|
HC.pubsub.WXpubimmediate( 'shutdown' )
|
|
|
|
old_pubsub.WXpubimmediate( 'shutdown' )
|
|
|
|
raw_input() |