Why would Assets.getBytes returns null in a test environment?

| | August 6, 2015

I’m using the latest Haxe (2.10), NME (3.4.3), and MUnit.

I’ve written some unit tests that need to fetch bitmap data from SWF symbols. The first step is to actually load the SWF data. To do this, I use NME’s getByteArray along with the swf library, like so:

var blah:SWF = new SWF(Assets.getBytes("assets/swf/test.swf"));

The call to Assets.getBytes returns null when I’m running this under MUnit. When running my actual game code, I’m able to get the byte array (and consequentially, instantiate the SWF class).

Am I doing something wrong? What am I missing?

Edit: My directory structure is:

. (root
.assets
.assets*.png (other images)
.assetsswf*.swf (SWFs)
.Source*.hx (source code)
.Test*.hx (tests)

One Response to “Why would Assets.getBytes returns null in a test environment?”

  1. This looks like an issue with the working directory; likely when running under MUnit, your working directory isn’t the same as when running your primarily applicable and thus the paths do not correctly resolve (it’s also possible for some reason that file IO methods are disallowed under test, but that seems egregious).

    Consider using embedding the resources in your test assemblies, or determining how to alter the working directory for MUnit’s test execution.

Leave a Reply