Skip to content

Script IDE 1.17.0

Choose a tag to compare

@nigelgwork nigelgwork released this 06 Sep 05:24
· 20 commits to main since this release

Compare two gateways, and run your Jython tests. The last two items from the product review, plus its own backlog closed out.

Two gateways side by side

Point the Compare view at another gateway running this module and every script, gateway event handler, Web Dev handler and named query is listed with whether it matches over there. Open a differing one and the peer's copy sits beside your own, read-only.

It reads and it cannot write — the client that talks to the other gateway has a single verb and it is GET, so there is no code path from a comparison to a write on production. Peers are named in the gateway's own policy.properties and chosen by that name, never by a URL from the browser: a route taking ?url= would be a server-side request forgery primitive mounted inside a gateway. Redirects are not followed for the same reason.

The one new authentication surface is a peer read token. It is off unless configured, mounted on reads only — never a write, an execution, an attribute save or the terminal — compared in constant time, and a token under 24 characters is treated as absent rather than accepted.

A Jython test runner

Nothing in Ignition offers one. A def test_* in a module named for tests is discovered, run on the gateway in an isolated interpreter, and reported as passed, failed or errored — with how long it took, the traceback, and whatever it printed before it stopped. setUp and tearDown work the way unittest means them.

Discovery is deliberately narrow: finding def test_* anywhere would put plc.diagnostics.test_connection under a Run All button. Running a test is running arbitrary project code, so it takes the same gate, the same execution service and the same audit line as the console.

Also

  • The README's screenshots are current again, and re-taking them is now a script rather than a chore.
  • The audience decision is on the record: this module stays internal.

Requires Ignition 8.3+. Signed with the Gaskony keystore.