Releases: IDML/idml
v2.0.0-RC2: Revamp the `apply` tool to add tracing, do a few bugfixes (#16)
* Revamp the `apply` tool to add tracing, do a few bugfixes * Let the user pick non-existent files to trace into * remove debug printlns * Hook up idml tutor * ignore empty lines in apply
2.0.0-RC1: 2.0 Breaking Release (#15)
This is a large set of changes intended to be released as a breaking release. * All keys are now alphabetically sorted all the time * We now support pluggable JSON parsing, Jackson and Circe are the initial modules (you will need to pick one of these to use IDML now, if in doubt, pick Jackson) * Triple quoted strings can be used for multiline literals * There is now a `tutor` command inside the main `idml` tool for walking through lessons * Anything that mentioned `Ptolemy` has become `Idml` * The Java API has been reimagined to be easier to use from java and kotlin, including declared exceptions and a focus on using `java.util.Map` and `java.util.List` * `JIdmlValue` can be used to instantiate PtolemyValues from Java easily * `IdmlBuilder` can be used to make Idml engines from Java easily * `Idml` (the new `Ptolemy`) has a revamped java-friendly API * Big performance improvements in server, test and idmldoc due to using the Circe module
2.0.0 Release Candidate 1
- All keys are now alphabetically sorted all the time
- We now support pluggable JSON parsing, Jackson and Circe are the initial modules (you will need to pick one of these to use IDML now, if in doubt, pick Jackson)
- Triple quoted strings can be used for multiline literals
- There is now a
tutor
command inside the mainidml
tool for walking through lessons - Anything that mentioned
Ptolemy
has becomeIdml
- The Java API has been reimagined to be easier to use from java and kotlin, including declared exceptions and a focus on using
java.util.Map
andjava.util.List
JIdmlValue
can be used to instantiate PtolemyValues from Java easilyIdmlBuilder
can be used to make Idml engines from Java easilyIdml
(the newPtolemy
) has a revamped java-friendly API
- Big performance improvements in server, test and idmldoc due to using the Circe module
v1.0.34
Make stripTags decode html entities again (#13)
v1.0.33: Fix conflicting cats-effect and fs2 versions in tools (#12)
Update libraries in tools, and fix jsoup thread safety
v1.0.32
Swap to using jsoup's clean mode with whitespace preserved (#11)
v1.0.31: Merge pull request #10 from IDML/feature/add-log-and-abs
Add `log` and `abs` functions
v1.0.30: Align circe versions across the tools (#9)
Bump cats and associated libraries
v1.0.29: Make geo module log errors (#8)
Make geo module log errors
Tooling Update: `idml test` and `--dynamic-plugins`
Dynamic Plugins
Every command under idml
now has an extra pair of arguments, --dynamic-plugins
and --plugin-folder
, the first flags to load extra plugins from the classpath, and the second allows you to provide an extra set of .jars to load plugins from. The dynamic mode will enable things like geo
and jsoup
, while --plugin-folder
lets you bring in your own custom functions.
idml test
We now provide a set of testing tools which live under the test
command.
This initial release is aimed at providing a snapshot testing workflow for building out regression tests.
Test Format
Tests are defined in JSON ,a test looks like this:
{
"name" : "example test",
"code" : "r = a + b",
"input" : {
"a" : 2,
"b" : 2
},
"output" : {
"r": 4
}
}
You can make the code
, input
or output
sections available in separate files by using JSON references, like so:
"output": {
"$ref": "./blah.json"
}
Multiple tests can be defined in the same file by putting them in an array.
What is Snapshot Testing?
When you write tests you can omit defining the output
object. The command has an --update
flag which will create or update the output object based on what's currently produced by running the input
through the code
, this will either update the referenced file, or the main test's JSON file.
test
command
Usage: idml test [--filter <string>] [--update] [--failed-only] [--dynamic-plugins] [--plugin-folder <URL>]... [--no-report] <test.json>...
run IDML tests
Options and flags:
--help
Display this help text.
--filter <string>, -f <string>
filter to run specific tests, use re2 compatible regex or a prefix
--update, -u
update test snapshots
--failed-only, -x
suppress successful output
--dynamic-plugins, -d
resolve plugins from the normal classpath
--plugin-folder <URL>, -p <URL>, -f <URL>
folder with IDML plugin jars
--no-report, -n, -r
disable the test reporter at the end of a run
sbt Plugin
There is now an sbt plugin which will automatically run tests inside idmlTestDirectory
(configurable, default is src/main/test/idml/
), which also inserts itself into the sbt test
command.