test_imports.py 13 KB

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