The Elegant Chaos Blog

December 24, 2010

Elegant Chaos would like to wish you all a fantastic Christmas.

Unless, of course, you don’t celebrate Christmas, in which case have a fantastic not-Christmas.

Unless of course, you recognise Christmas, but simply don’t celebrate it, because that misses the point, in which case, have an appropriately sober Christmas… look, just have a good few days why don’t you, for some appropriate value of good!

Oh, and we do hope that you have a great New Year and a brilliant 2011.

Unless of course you don’t follow the Julian calendar, in which case…

:)

more...

December 18, 2010

I’m pleased to announce the release of Neu 1.0.2.

This update contains a number of small changes:

  • Neu now handles the .neulicense file type. Double-clicking on a license file will automatically launch Neu and register the license.
  • Neu now respects symbolic links in the path to the Templates folder, and for individual templates.
  • Added Quit button to “Presence” preference when in “Stealth” mode, since the normal Quit menu item is unavailable.
  • Added tooltips to the preferences panels. Added application name to preference window title.
  • Window changes: added fades, increased the default size, made resizable,changed the buttons to a white-text-on-black-background style to match the windows.
  • Updated sparkle and release notes URLs.
  • Fixed old reference to Replicator in the Updating preferences panel.
  • Updated the in-application Help to reflect the current state of the website.
  • Changed the default Pages template to an iWork ‘08 version, and added a Numbers template (note that this will not affect you unless you throw away your existing templates folder, since these default templates are only used when Neu can’t find a templates folder).
  • Fixed a bug in the build process which was bloating the size of the application.
more...

December 12, 2010

I’ve added a page to the Elegant Chaos website which lists the latest available beta versions of our software.

I’d like to avoid having people accidentally download betas without realising that they are getting untested software, so the main product pages will always link to the latest release version.

Which is why, if you’re the adventurous sort, you may want to keep an eye on the beta versions page.

more...

December 08, 2010

I have a new version of Neu in testing, with a number of minor tweaks and bug fixes:

  • Fixed old reference to Replicator in the Updating preferences panel.
  • Neu now handles the .neulicense file type. Double-clicking on a license file will automatically launch Neu and register the license.
  • Updated the in-application Help to reflect the current state of the website.
  • Template selection windows now fade in/out.
  • Neu now respects symbolic links in the path to the Templates folder, and for individual templates.
  • Changed the default Pages template to an iWork ‘08 version, and added a Numbers template (note that this will not affect you unless you throw away your existing templates folder, since these default templates are only used when Neu can’t find a templates folder).
  • Fixed a bug in the build process which was bloating the size of the application.

It isn’t available via the in-application update mechanism, because I don’t want to dump beta code onto people who’ve paid for the application, but if you’d like to give the beta a spin, you can find it here.

Please let me know if you discover any problems!

more...

This is a bit of a technical one… you have been warned…

I’ve got some internal Objective-C frameworks, and they have some unit tests.

I’ve have targets set up for both SenTestingKit and GHUnit, because I like to have the choice of which one to run (I use SenTestingKit from continuous integration scripts, and GHUnit when I want to run the tests manually).

I recently came across a problem when I wanted to test one of my frameworks which uses another one of my frameworks, using SenTestingKit.

The problem is that SenTestingKit builds your tests into a bundle, then runs another application to load that bundle and execute it. This means that, by default, the application that is running your tests doesn’t know where to find any frameworks that your tests depend on.

There are probably a few ways of solving this, but the one I came up with was this:

First, add a copy files phase to your target, and make it copy any dependent frameworks into Contents/Frameworks/ inside the octest bundle that you’re making.

This gives you a known location containing a copy of any frameworks that you’ll need, but it doesn’t automatically tell the unit test running application to look there.

Second, edit the run script which actually invokes the unit test running app.

By default this script looks like this:

    # Run the unit tests in this test bundle.
    "${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests"

The trick is to add our plugin’s Frameworks folder to the search path for frameworks, before running the tool:

    # Add the unit test plugin's Frameworks/ path to the search paths for dynamic libraries
    export DYLD_FRAMEWORK_PATH="${CONFIGURATION_BUILD_DIR}/${FULL_PRODUCT_NAME}/Contents/Frameworks:$DYLD_FRAMEWORK_PATH"

    # Run the unit tests in this test bundle.
    "${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests"

Bingo - the unit test app now finds the dependent frameworks and runs the tests ok.

more...