Extension Projects (Mac IDE)

I’m having trouble figuring out how to test examples with extension projects with the MacOS IDE 1.68.1 (on MacOS 12.2, on a MacBook Pro with a touchbar, which I understand has speed issues with the Mac IDE, but which I wasn’t expecting to alter behavior).

I’ve tried creating them from several existing Internal and Public Library extensions (including Approaches, Disappearing Doors, Rideable Vehicles); I’ve tried creating them from scratch, being as meticulous as I could about correctly creating examples. Either way, the example pulldown never gets populated and the Test and Go icons remain grayed out. The only option that the top bar ever makes available is to Install it (which works).

Am I missing something?

I don’t think these have been working for a long time, but I’m not sure when they broke. Perhaps in the 64-bit update?

1 Like

I’m still using IDE 1.65 on High Sierra and haven’t used an extension project since 2015. But I recall that even back then I had trouble making the Test button to appear and Examples menu to populate in a project of my own. This would be independent of any actual break that may have occurred since.

When I looked for help, Zarf suggested there could be really subtle compiler / IDE disagreements about formatting (technically, bugs) that could be stopping the IDE recognising the source as an extension project. In my case, he was right. I had an indent out of place or somewhere the IDE didn’t like, and once I fixed that it started working. (6M62 - how to do something with an extensions project? - #2 by zarf)

Having said all that, today I tested the ‘Create from an installed extension’ option with Emily Short’s Introductions, and it instantly made a working extensions project. So if you can’t do that with this extension, then maybe Petter’s right about it having broken.

-Wade

1 Like

Thanks for checking. Introductions doesn’t work any better than the others. (I had found that thread, and had been assuming bad indentation was the issue until I couldn’t get it work with any of several extensions.)

Looks like with the release of the 64-bit update, the release process pulled in an updated version of intest, which is responsible for identifying and running the test cases. This binary changed its expected arguments to include the root folder of the project. Unfortunately, the IDE is still trying to invoke intest using the old signature, and therefore failing silently.

I’ve opened a PR with a fix into the OSX IDE repo ( here ) if anybody is curious.

5 Likes

You don’t have a working binary somewhere, do you? Testing failing is a real pain for extension maintenance.

Unfortunately I cannot publish a binary without a paid Apple developer account. Given the problem is with how intest is invoked, it may be possible to intercept the call to intest via a bash script to inject the required parameter, and ‘patch’ an existing binary. I’ll take a look and update here if I manage to get it to work.

I have a paid account, I’ll see if I can work out how to build it (my Apple work is on iOS mostly, so macOS is not familiar territory).

So I managed to get something working with the existing OSX 6M62 Interim binary, but depends on a little bit of shell knowledge to work. Basically we want to rename the existing intest binary and replace it with a bash script which, in turn, invokes the original intest binary with the correct parameters.

Caveat: I’ve tested this locally and seems to be working well, but proceed at your own risk! This is aimed at fixing the invocation of intest as included in the OSX 6M62 Interim release.

  • Locate the app on your machine (normally this would be here /Applications/Inform.app).
  • Open the app as a folder (ctrl-click → Show Package Contents) and navigate to Contents/MacOS.
  • Rename intest to intest.bin
  • Copy the following into a file named intest in the same folder (replacing /Applications/Inform.app in the last line with your app path from above):
#!/bin/bash

CAPTURE_EXTENSION=0
EXTENSION=""

for ARGUMENT in "$@"
do
	if [ $CAPTURE_EXTENSION -eq 1 ]; then
		EXTENSION="$ARGUMENT"
		CAPTURE_EXTENSION=0
	fi
   	if [[ $ARGUMENT == "-extension" ]]; then
   		CAPTURE_EXTENSION=1
   	fi
done

/Applications/Inform.app/Contents/MacOS/intest.bin "${EXTENSION%.i7xp*}.i7xp" "$@"
  • Open a terminal and enter the following (to make your new script executable), again replacing /Applications/Inform.app as above:
cd /Applications/Inform.app/Contents/MacOS
chmod +x ./intest

Let me know if this is helpful (and indeed if it works for you).

@Stephen Took me a while to get it building in modern XCode, but this is what I was missing (after changing the more obvious code signing identity etc.):

  • Add --deep to Other Code Signing Flags on the Inform target.

This works 100%. I’ll play with Xcode on the weekend and try to make a real binary, but this solves the immediate problem for me!

Thanks very much!