Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows GafferArnold tests #5860

Open
wants to merge 14 commits into
base: 1.4_maintenance
Choose a base branch
from
Open

Conversation

ericmehl
Copy link
Collaborator

This enables running tests for Arnold on Windows CI : GafferArnoldTest, GafferArnoldUITest and IECoreArnoldTest.

There are a few that I haven't figured out how to fix to get them passing - those have been marked with skipIf decorators in order to get all the other tests exercising on Windows.

Checklist

  • I have read the contribution guidelines.
  • I have updated the documentation, if applicable.
  • I have tested my change(s) in the test suite, and added new test cases where necessary.
  • My code follows the Gaffer project's prevailing coding style and conventions.

ericmehl added 13 commits May 17, 2024 12:56
Windows won't be able to delete the temporary file in `tearDown()` if
it is still open.
Calling `kick` from Gaffer currently doesn't work for at least two
reasons:

1. We create an Arnold plugin called `Gaffer.dll`. When calling `kick`,
it will attempt to load this plugin. `kick` seems to think it should
use the `Gaffer.dll` we build for core Gaffer - renaming the plugin
fixes the loading problem.
2. Even with that fix, there's an error `IECoreGL::init::DllMain :
Failed to register window class`. I'm not sure what the cause of this
error is yet.
- Windows doesn't allow read-only directories, so we split that part out
of `testLogDirectoryCreation` into a separate test we can skip.
- Something is holding the Arnold log open even after destroying the
renderer. This prevents Windows from cleaning up without errors.
- Use "gaffer.cmd". We don't use `str( Gaffer.executablePath() )` to
avoid the dependency on the `Gaffer` module.
- Arnold returns `atStringStruct` instead of `atStringReturn`.
- Don't attempt to run `kick` which isn't working on Windows currently.
When setting outputs directly with `addOutput`, we need to do the
conversion to `/`-based paths because there is no string plug to do
the conversion for us.
Without this, on Windows `GafferArnoldUITest` errors with a long string
of `ERROR : Qt : QEventDispatcherWin32::wakeUp: Failed to post a message (Not enough quota is available to process this command.)`
On Windows, the script to build the scene in `testUserDefaultMetadata()`
was failing to execute correctly, resulting in no scene being written.
I don't know exactly the cause, but writing out the script to a
temporary file works around whatever differences there are in passing
a multi-line command to Python.
`GafferArnold` on Windows does not seem to reliably fill the id or depth
buffers used by `SceneGadget::objectAt()` ( via `OutputBuffer::idAt` ).

In order to get the vast majority of GafferArnold tests activated, we
skip these for now.
Automated testing of automatic light groups fails, whereas the same
tests done manually give the expected results.

In order to get the vast majority of GafferArnold tests activated, we
skip this test for now.
@ericmehl ericmehl force-pushed the Windows-GafferArnoldTest branch from 995b1db to a48b8f6 Compare May 20, 2024 13:42
@ericmehl ericmehl force-pushed the Windows-GafferArnoldTest branch from cd0a9c0 to 876d23f Compare May 21, 2024 20:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant