@@ -415,6 +415,64 @@ def testActiveSettingsPathResetOnFileNew(self):
415415 UsdDefaultRenderSettings .getActiveRenderSettingsPath (),
416416 defaultPath )
417417
418+ # ------------------------------------------------------------------
419+ # Hydra renderer selection (currentRenderer)
420+ # ------------------------------------------------------------------
421+
422+ def testCurrentRendererDefault (self ):
423+ '''Default currentRenderer is empty; no Hydra renderer is chosen yet.'''
424+ nodeName = UsdDefaultRenderSettings .find ()
425+ self .assertEqual (UsdDefaultRenderSettings .getCurrentRenderer (), '' )
426+ self .assertEqual (
427+ cmds .getAttr (nodeName + '.currentRenderer' ), '' )
428+
429+ def testCurrentRendererSetter (self ):
430+ '''Writing through the helper updates every read path.'''
431+ rendererName = 'HdStormRendererPlugin'
432+ self .assertTrue (
433+ UsdDefaultRenderSettings .setCurrentRenderer (rendererName ))
434+
435+ self .assertEqual (
436+ UsdDefaultRenderSettings .getCurrentRenderer (), rendererName )
437+ nodeName = UsdDefaultRenderSettings .find ()
438+ self .assertEqual (
439+ cmds .getAttr (nodeName + '.currentRenderer' ), rendererName )
440+
441+ def testCurrentRendererRoundTrip (self ):
442+ '''A custom currentRenderer survives a save/open cycle.'''
443+ rendererName = 'SomeCustomRenderer'
444+ self .assertTrue (
445+ UsdDefaultRenderSettings .setCurrentRenderer (rendererName ))
446+
447+ tmpDir = tempfile .mkdtemp (prefix = 'testSceneRenderSettings_' )
448+ try :
449+ tmpFile = os .path .join (tmpDir , 'currentRendererRoundTrip.ma' )
450+ cmds .file (rename = tmpFile )
451+ cmds .file (save = True , type = 'mayaAscii' )
452+ cmds .file (new = True , force = True )
453+ cmds .file (tmpFile , open = True , force = True )
454+
455+ self .assertEqual (
456+ UsdDefaultRenderSettings .getCurrentRenderer (),
457+ rendererName )
458+ finally :
459+ cmds .file (new = True , force = True )
460+ shutil .rmtree (tmpDir , ignore_errors = True )
461+
462+ def testCurrentRendererResetOnFileNew (self ):
463+ '''File > New restores the empty default value.'''
464+ self .assertEqual (UsdDefaultRenderSettings .getCurrentRenderer (), '' )
465+
466+ rendererName = 'TemporaryRenderer'
467+ self .assertTrue (
468+ UsdDefaultRenderSettings .setCurrentRenderer (rendererName ))
469+ self .assertEqual (
470+ UsdDefaultRenderSettings .getCurrentRenderer (), rendererName )
471+
472+ cmds .file (new = True , force = True )
473+
474+ self .assertEqual (UsdDefaultRenderSettings .getCurrentRenderer (), '' )
475+
418476 # ------------------------------------------------------------------
419477 # Locked-node invariant
420478 # ------------------------------------------------------------------
0 commit comments