test_imports.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. # These tests import Panda3D modules just to make sure that there are no
  2. # missing imports. It is useful for a quick and dirty test to make sure
  3. # that there are no obvious build issues.
  4. import pytest
  5. # This will print out imports on the command line.
  6. #import direct.showbase.VerboseImport
  7. def test_imports_panda3d():
  8. import importlib, os, sys
  9. import panda3d
  10. # Look for panda3d.* modules in builtins - pfreeze might put them there.
  11. for mod in sys.builtin_module_names:
  12. if mod.startswith('panda3d.'):
  13. importlib.import_module(mod)
  14. if panda3d.__spec__.origin != 'frozen':
  15. dir = os.path.dirname(panda3d.__file__)
  16. # Iterate over the things in the panda3d package that look like modules.
  17. extensions = set(importlib.machinery.all_suffixes())
  18. for basename in os.listdir(dir):
  19. if basename.startswith('lib'):
  20. # This not a Python module.
  21. continue
  22. module = basename.split('.', 1)[0]
  23. ext = basename[len(module):]
  24. if ext in extensions:
  25. importlib.import_module('panda3d.%s' % (module))
  26. def test_imports_direct():
  27. import direct.actor.Actor
  28. import direct.actor.DistributedActor
  29. import direct.controls.BattleWalker
  30. import direct.controls.ControlManager
  31. import direct.controls.DevWalker
  32. import direct.controls.GhostWalker
  33. import direct.controls.GravityWalker
  34. import direct.controls.InputState
  35. import direct.controls.NonPhysicsWalker
  36. import direct.controls.ObserverWalker
  37. import direct.controls.SwimWalker
  38. import direct.controls.TwoDWalker
  39. import direct.directnotify.DirectNotify
  40. import direct.directnotify.DirectNotifyGlobal
  41. import direct.directnotify.Logger
  42. import direct.directnotify.LoggerGlobal
  43. import direct.directnotify.Notifier
  44. import direct.directnotify.RotatingLog
  45. import direct.directtools.DirectCameraControl
  46. import direct.directtools.DirectGeometry
  47. import direct.directtools.DirectGlobals
  48. import direct.directtools.DirectGrid
  49. import direct.directtools.DirectLights
  50. import direct.directtools.DirectManipulation
  51. import direct.directtools.DirectSelection
  52. import direct.directtools.DirectUtil
  53. import direct.directutil.DeltaProfiler
  54. import direct.directutil.DistributedLargeBlobSender
  55. import direct.directutil.DistributedLargeBlobSenderAI
  56. import direct.directutil.LargeBlobSenderConsts
  57. import direct.directutil.Mopath
  58. import direct.directutil.Verify
  59. import direct.directutil.WeightedChoice
  60. import direct.dist.FreezeTool
  61. import direct.dist.icon
  62. import direct.dist.commands
  63. import direct.extensions_native.extension_native_helpers
  64. import direct.filter.CommonFilters
  65. import direct.filter.FilterManager
  66. import direct.fsm.ClassicFSM
  67. import direct.fsm.FSM
  68. import direct.fsm.FourState
  69. import direct.fsm.FourStateAI
  70. import direct.fsm.SampleFSM
  71. import direct.fsm.State
  72. import direct.fsm.StateData
  73. import direct.fsm.StatePush
  74. import direct.gui.DirectButton
  75. import direct.gui.DirectCheckBox
  76. import direct.gui.DirectCheckButton
  77. import direct.gui.DirectDialog
  78. import direct.gui.DirectEntry
  79. import direct.gui.DirectEntryScroll
  80. import direct.gui.DirectFrame
  81. import direct.gui.DirectGui
  82. import direct.gui.DirectGuiBase
  83. import direct.gui.DirectGuiGlobals
  84. import direct.gui.DirectLabel
  85. import direct.gui.DirectOptionMenu
  86. import direct.gui.DirectRadioButton
  87. import direct.gui.DirectScrollBar
  88. import direct.gui.DirectScrolledFrame
  89. import direct.gui.DirectScrolledList
  90. import direct.gui.DirectSlider
  91. import direct.gui.DirectWaitBar
  92. import direct.gui.OnscreenGeom
  93. import direct.gui.OnscreenImage
  94. import direct.gui.OnscreenText
  95. import direct.interval.ActorInterval
  96. import direct.interval.AnimControlInterval
  97. import direct.interval.FunctionInterval
  98. import direct.interval.IndirectInterval
  99. import direct.interval.Interval
  100. import direct.interval.IntervalGlobal
  101. import direct.interval.IntervalManager
  102. import direct.interval.LerpBlendHelpers
  103. import direct.interval.LerpInterval
  104. import direct.interval.MetaInterval
  105. import direct.interval.MopathInterval
  106. import direct.interval.ParticleInterval
  107. import direct.interval.ProjectileInterval
  108. import direct.interval.ProjectileIntervalTest
  109. import direct.interval.SoundInterval
  110. import direct.interval.TestInterval
  111. import direct.motiontrail.MotionTrail
  112. import direct.showbase.Audio3DManager
  113. import direct.showbase.BufferViewer
  114. import direct.showbase.BulletinBoard
  115. import direct.showbase.BulletinBoardGlobal
  116. import direct.showbase.BulletinBoardWatcher
  117. import direct.showbase.ContainerLeakDetector
  118. import direct.showbase.ContainerReport
  119. import direct.showbase.CountedResource
  120. import direct.showbase.DirectObject
  121. import direct.showbase.DistancePhasedNode
  122. import direct.showbase.EventGroup
  123. import direct.showbase.EventManager
  124. import direct.showbase.EventManagerGlobal
  125. import direct.showbase.ExceptionVarDump
  126. import direct.showbase.Factory
  127. import direct.showbase.Finder
  128. import direct.showbase.GarbageReport
  129. import direct.showbase.GarbageReportScheduler
  130. import direct.showbase.InputStateGlobal
  131. import direct.showbase.Job
  132. import direct.showbase.JobManager
  133. import direct.showbase.JobManagerGlobal
  134. import direct.showbase.LeakDetectors
  135. import direct.showbase.Loader
  136. import direct.showbase.Messenger
  137. import direct.showbase.MessengerGlobal
  138. import direct.showbase.MessengerLeakDetector
  139. import direct.showbase.MirrorDemo
  140. import direct.showbase.ObjectPool
  141. import direct.showbase.ObjectReport
  142. import direct.showbase.OnScreenDebug
  143. import direct.showbase.PhasedObject
  144. import direct.showbase.Pool
  145. import direct.showbase.ProfileSession
  146. import direct.showbase.PythonUtil
  147. import direct.showbase.RandomNumGen
  148. import direct.showbase.ReferrerSearch
  149. import direct.showbase.SfxPlayer
  150. import direct.showbase.ShadowDemo
  151. import direct.showbase.ShadowPlacer
  152. import direct.showbase.ShowBase
  153. import direct.showbase.TaskThreaded
  154. import direct.showbase.ThreeUpShow
  155. import direct.showbase.Transitions
  156. import direct.showbase.VFSImporter
  157. import direct.showbase.WxGlobal
  158. import direct.showutil.BuildGeometry
  159. import direct.showutil.Effects
  160. import direct.showutil.Rope
  161. import direct.showutil.TexMemWatcher
  162. import direct.showutil.TexViewer
  163. import direct.stdpy.file
  164. import direct.stdpy.glob
  165. import direct.stdpy.pickle
  166. import direct.stdpy.thread
  167. import direct.stdpy.threading
  168. import direct.stdpy.threading2
  169. import direct.task.FrameProfiler
  170. import direct.task.MiniTask
  171. import direct.task.Task
  172. import direct.task.TaskManagerGlobal
  173. import direct.task.TaskProfiler
  174. import direct.task.Timer
  175. def test_imports_direct_physics():
  176. pytest.importorskip("panda3d.physics")
  177. import direct.controls.PhysicsWalker
  178. import direct.particles.ForceGroup
  179. import direct.particles.GlobalForceGroup
  180. import direct.particles.ParticleEffect
  181. import direct.particles.ParticleManagerGlobal
  182. import direct.particles.Particles
  183. import direct.particles.SpriteParticleRendererExt
  184. import direct.showbase.PhysicsManagerGlobal
  185. def test_imports_direct_net():
  186. from panda3d import core
  187. if not hasattr(core, 'ConnectionWriter'):
  188. pytest.skip("Build without HAVE_NET")
  189. import direct.cluster.ClusterClient
  190. import direct.cluster.ClusterConfig
  191. import direct.cluster.ClusterMsgs
  192. import direct.cluster.ClusterServer
  193. import direct.distributed.AsyncRequest
  194. import direct.distributed.CRCache
  195. import direct.distributed.CRDataCache
  196. import direct.distributed.CachedDOData
  197. import direct.distributed.CartesianGridBase
  198. import direct.distributed.ClientRepository
  199. import direct.distributed.ClientRepositoryBase
  200. import direct.distributed.ClockDelta
  201. import direct.distributed.ConnectionRepository
  202. import direct.distributed.DistributedCamera
  203. import direct.distributed.DistributedCameraAI
  204. import direct.distributed.DistributedCameraOV
  205. import direct.distributed.DistributedCartesianGrid
  206. import direct.distributed.DistributedCartesianGridAI
  207. import direct.distributed.DistributedNode
  208. import direct.distributed.DistributedNodeAI
  209. import direct.distributed.DistributedNodeUD
  210. import direct.distributed.DistributedObject
  211. import direct.distributed.DistributedObjectAI
  212. import direct.distributed.DistributedObjectBase
  213. import direct.distributed.DistributedObjectGlobal
  214. import direct.distributed.DistributedObjectGlobalAI
  215. import direct.distributed.DistributedObjectGlobalUD
  216. import direct.distributed.DistributedObjectOV
  217. import direct.distributed.DistributedObjectUD
  218. import direct.distributed.DistributedSmoothNodeAI
  219. import direct.distributed.DistributedSmoothNodeBase
  220. import direct.distributed.DoCollectionManager
  221. import direct.distributed.DoHierarchy
  222. import direct.distributed.DoInterestManager
  223. import direct.distributed.GridChild
  224. import direct.distributed.GridParent
  225. import direct.distributed.InterestWatcher
  226. import direct.distributed.MsgTypes
  227. import direct.distributed.MsgTypesCMU
  228. import direct.distributed.NetMessenger
  229. import direct.distributed.ParentMgr
  230. import direct.distributed.PyDatagram
  231. import direct.distributed.PyDatagramIterator
  232. import direct.distributed.RelatedObjectMgr
  233. import direct.distributed.SampleObject
  234. import direct.distributed.ServerRepository
  235. import direct.distributed.StagedObject
  236. import direct.distributed.TimeManager
  237. import direct.distributed.TimeManagerAI
  238. def test_imports_tk():
  239. Pmw = pytest.importorskip('Pmw')
  240. import direct.showbase.TkGlobal
  241. import direct.tkpanels.AnimPanel
  242. import direct.tkpanels.DirectSessionPanel
  243. import direct.tkpanels.FSMInspector
  244. import direct.tkpanels.Inspector
  245. import direct.tkpanels.MopathRecorder
  246. import direct.tkpanels.NotifyPanel
  247. import direct.tkpanels.ParticlePanel
  248. import direct.tkpanels.Placer
  249. import direct.tkpanels.TaskManagerPanel
  250. import direct.tkwidgets.AppShell
  251. import direct.tkwidgets.Dial
  252. import direct.tkwidgets.EntryScale
  253. import direct.tkwidgets.Floater
  254. import direct.tkwidgets.MemoryExplorer
  255. import direct.tkwidgets.ProgressBar
  256. import direct.tkwidgets.SceneGraphExplorer
  257. import direct.tkwidgets.Slider
  258. import direct.tkwidgets.Tree
  259. import direct.tkwidgets.Valuator
  260. import direct.tkwidgets.VectorWidgets
  261. import direct.tkwidgets.WidgetPropertiesDialog
  262. def test_imports_wx():
  263. wx = pytest.importorskip('wx')
  264. import direct.wxwidgets.ViewPort
  265. import direct.wxwidgets.WxAppShell
  266. import direct.wxwidgets.WxPandaShell
  267. import direct.wxwidgets.WxPandaWindow
  268. import direct.wxwidgets.WxSlider
  269. import direct.leveleditor.ActionMgr
  270. import direct.leveleditor.AnimControlUI
  271. import direct.leveleditor.AnimGlobals
  272. import direct.leveleditor.AnimMgr
  273. import direct.leveleditor.AnimMgrBase
  274. import direct.leveleditor.CurveAnimUI
  275. import direct.leveleditor.CurveEditor
  276. import direct.leveleditor.FileMgr
  277. import direct.leveleditor.GraphEditorUI
  278. import direct.leveleditor.HotKeyUI
  279. import direct.leveleditor.LayerEditorUI
  280. import direct.leveleditor.LevelEditor
  281. import direct.leveleditor.LevelEditorBase
  282. import direct.leveleditor.LevelEditorStart
  283. import direct.leveleditor.LevelEditorUI
  284. import direct.leveleditor.LevelEditorUIBase
  285. import direct.leveleditor.LevelLoader
  286. import direct.leveleditor.LevelLoaderBase
  287. import direct.leveleditor.MayaConverter
  288. import direct.leveleditor.ObjectGlobals
  289. import direct.leveleditor.ObjectHandler
  290. import direct.leveleditor.ObjectMgr
  291. import direct.leveleditor.ObjectMgrBase
  292. import direct.leveleditor.ObjectPalette
  293. import direct.leveleditor.ObjectPaletteBase
  294. import direct.leveleditor.ObjectPaletteUI
  295. import direct.leveleditor.ObjectPropertyUI
  296. import direct.leveleditor.PaletteTreeCtrl
  297. import direct.leveleditor.ProtoObjs
  298. import direct.leveleditor.ProtoObjsUI
  299. import direct.leveleditor.ProtoPalette
  300. import direct.leveleditor.ProtoPaletteBase
  301. import direct.leveleditor.ProtoPaletteUI
  302. import direct.leveleditor.SceneGraphUI
  303. import direct.leveleditor.SceneGraphUIBase