test_imports.py 12 KB

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