See <http://teijenkins.hcmc.uvic.ca/job/TEIP5-Test-dev/3327/display/redirect?pag…>
Changes:
[lou.burnard] close 1538
------------------------------------------
[...truncated 3.25 KB...]
fi
if [ git = "git" ] ; \
then \
git log --max-count=1 --pretty=format:"<info type=\"git\"><entry><commit revision=\"%h\"><date>%ai</date></commit></entry></info>" > repodate.xml ; \
fi
BUILD: Generate modular DTDs, Schemas, Schematron and miscellaneous outputs
ANT_OPTS="-Xss2m -Xmx752m -Djava.awt.headless=true" ant -q -lib Utilities/lib/jing.jar:Utilities/lib/saxon9he.jar -f antbuilder.xml -DXSL=<http://teijenkins.hcmc.uvic.ca/job/TEIP5-Test-dev/ws/P5/../../../Stylesheet…> -DDRIVER=Source/guidelines-en.xml base subset outputs
BUILD FAILED
<http://teijenkins.hcmc.uvic.ca/job/TEIP5-Test-dev/ws/P5/antbuilder.xml>:39: ; SystemID: <http://teijenkins.hcmc.uvic.ca/job/TEIP5-Test-dev/ws/P5/Utilities/expand.xsl;> Line#: 68; Column#: 21
net.sf.saxon.trans.XPathException: org.xml.sax.SAXParseException; systemId: <http://teijenkins.hcmc.uvic.ca/job/TEIP5-Test-dev/ws/P5/Source/Specs/att.gl…;> lineNumber: 265; columnNumber: 11; The element type "attDef" must be terminated by the matching end-tag "</attDef>".
at net.sf.saxon.event.Sender.sendSAXSource(Sender.java:471)
at net.sf.saxon.event.Sender.send(Sender.java:153)
at net.sf.saxon.functions.DocumentFn.makeDoc(DocumentFn.java:330)
at net.sf.saxon.functions.Doc.call(Doc.java:138)
at net.sf.saxon.functions.Doc.call(Doc.java:24)
at net.sf.saxon.expr.FunctionCall.iterate(FunctionCall.java:546)
at net.sf.saxon.expr.Expression.evaluateItem(Expression.java:763)
at net.sf.saxon.expr.SimpleStepExpression.iterate(SimpleStepExpression.java:108)
at net.sf.saxon.value.Closure.iterate(Closure.java:189)
at net.sf.saxon.expr.instruct.ApplyTemplates$ApplyTemplatesPackage.processLeavingTail(ApplyTemplates.java:566)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:387)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates$ApplyTemplatesPackage.processLeavingTail(ApplyTemplates.java:569)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:387)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.DocumentInstr.evaluateItem(DocumentInstr.java:330)
at net.sf.saxon.expr.instruct.DocumentInstr.evaluateItem(DocumentInstr.java:54)
at net.sf.saxon.expr.parser.ExpressionTool.evaluate(ExpressionTool.java:313)
at net.sf.saxon.expr.LetExpression.eval(LetExpression.java:500)
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:702)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.Controller.transformDocument(Controller.java:2291)
at net.sf.saxon.Controller.transform(Controller.java:1863)
at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:579)
at net.sf.saxon.jaxp.TransformerImpl.transform(TransformerImpl.java:185)
at org.apache.tools.ant.taskdefs.optional.TraXLiaison.transform(TraXLiaison.java:195)
at org.apache.tools.ant.taskdefs.XSLTProcess.process(XSLTProcess.java:876)
at org.apache.tools.ant.taskdefs.XSLTProcess.execute(XSLTProcess.java:414)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.Main.runBuild(Main.java:851)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Caused by: org.xml.sax.SAXParseException; systemId: <http://teijenkins.hcmc.uvic.ca/job/TEIP5-Test-dev/ws/P5/Source/Specs/att.gl…;> lineNumber: 265; columnNumber: 11; The element type "attDef" must be terminated by the matching end-tag "</attDef>".
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at net.sf.saxon.event.Sender.sendSAXSource(Sender.java:451)
... 99 more
---------
org.xml.sax.SAXParseException; systemId: <http://teijenkins.hcmc.uvic.ca/job/TEIP5-Test-dev/ws/P5/Source/Specs/att.gl…;> lineNumber: 265; columnNumber: 11; The element type "attDef" must be terminated by the matching end-tag "</attDef>".
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at net.sf.saxon.event.Sender.sendSAXSource(Sender.java:451)
at net.sf.saxon.event.Sender.send(Sender.java:153)
at net.sf.saxon.functions.DocumentFn.makeDoc(DocumentFn.java:330)
at net.sf.saxon.functions.Doc.call(Doc.java:138)
at net.sf.saxon.functions.Doc.call(Doc.java:24)
at net.sf.saxon.expr.FunctionCall.iterate(FunctionCall.java:546)
at net.sf.saxon.expr.Expression.evaluateItem(Expression.java:763)
at net.sf.saxon.expr.SimpleStepExpression.iterate(SimpleStepExpression.java:108)
at net.sf.saxon.value.Closure.iterate(Closure.java:189)
at net.sf.saxon.expr.instruct.ApplyTemplates$ApplyTemplatesPackage.processLeavingTail(ApplyTemplates.java:566)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:387)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates$ApplyTemplatesPackage.processLeavingTail(ApplyTemplates.java:569)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:387)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.ElementCreator.processLeavingTail(ElementCreator.java:364)
at net.sf.saxon.expr.instruct.Copy.processLeavingTail(Copy.java:432)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.expr.instruct.ApplyTemplates.apply(ApplyTemplates.java:298)
at net.sf.saxon.expr.instruct.ApplyTemplates.process(ApplyTemplates.java:251)
at net.sf.saxon.expr.instruct.DocumentInstr.evaluateItem(DocumentInstr.java:330)
at net.sf.saxon.expr.instruct.DocumentInstr.evaluateItem(DocumentInstr.java:54)
at net.sf.saxon.expr.parser.ExpressionTool.evaluate(ExpressionTool.java:313)
at net.sf.saxon.expr.LetExpression.eval(LetExpression.java:500)
at net.sf.saxon.expr.LetExpression.processLeavingTail(LetExpression.java:702)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:353)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:456)
at net.sf.saxon.Controller.transformDocument(Controller.java:2291)
at net.sf.saxon.Controller.transform(Controller.java:1863)
at net.sf.saxon.s9api.XsltTransformer.transform(XsltTransformer.java:579)
at net.sf.saxon.jaxp.TransformerImpl.transform(TransformerImpl.java:185)
at org.apache.tools.ant.taskdefs.optional.TraXLiaison.transform(TraXLiaison.java:195)
at org.apache.tools.ant.taskdefs.XSLTProcess.process(XSLTProcess.java:876)
at org.apache.tools.ant.taskdefs.XSLTProcess.execute(XSLTProcess.java:414)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1393)
at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1248)
at org.apache.tools.ant.Main.runBuild(Main.java:851)
at org.apache.tools.ant.Main.startAnt(Main.java:235)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Total time: 3 seconds
make: *** [p5.xml] Error 1
Build step 'Execute shell' marked build as failure
Not sending mail to unregistered user lou.burnard(a)retired.ox.ac.uk
Dear council members,
I've completed a first phase of development of RomaJS (a placeholder name)
and I would like to both give you an update and seek volunteers for the
next phase of work. *The prompts for your contributions are highlighted in
bold below (bring friends!).*
The code is on GitHub: https://github.com/raffazizzi/romajs
1. Summary of work:
I've have been writing this Redux / React
<http://redux.js.org/docs/basics/UsageWithReact.html> application by
focusing on data operations first, user interface second. Briefly, the
application is now capable of:
- reading in an ODD file from the web or from disk
- reading in a source file (ie p5 subset in JSON format)
- add and remove modules
- add and remove elements
- write an updated ODD to disk (This is actually only mocked for user
testing at the moment.)
- provide basic UI components for these operations (working towards what's
been sketched in the wireframes
<https://docs.google.com/presentation/d/1sUESuY9pF3DkHoQMJJjrVMV2SPFQYE1YqmG…>
)
2. Tests
Each operation is comprehensively tested. I've aimed at creating a solid
testing infrastructure that is at the core of the application development.
I have created two wiki pages to help understanding and developing tests:
- a list of test scenarios
<https://github.com/raffazizzi/romajs/wiki/Test-scenarios>
- a short guide on how to write tests
<https://github.com/raffazizzi/romajs/wiki/How-to-write-tests>
*Please look at the list of test scenarios: have I not tested
something?* You'll
see that the list includes different ways of including/excluding modules
and elements in ODD. *Have I covered all the mechanisms for doing so?
What's missing?* We could discuss this on this email or on the wiki. It
would be awesome if then someone besides me would write new tests that
result from the discussion!
3. Parsing ODD
In order to avoid using a heavy DOM processor, and to make it possible to
include ODD directly in the application state, I've opted to convert ODD to
JSON. At first I was using an off the shelf library that served me very
well until I had to serialize back to XML and realized that mixed content
was all screwy...
So I wrote my own library here:
https://github.com/raffazizzi/squash-xml-json
The library is quite central to the success of RomaJS and while it has some
tests, it needs more extensive testing. *Would anyone like to help test and
develop it? Or perhaps know of viable alternatives I've overlooked?*
4. Getting started with the UI
I've created basic UI components to do the operations described above. Here
is the current very bare version: https://raffazizzi.github.io/romajs/
*Please try it out with as many (canonicalized) ODD files that you have
lying around. Does it do what you expect? Do you get back XML that matched
what you wanted? **Please break it (hopefully it will take a few hits
first).*
5. Next steps
I think I may focus more on UI development now (as per wireframes
<https://docs.google.com/presentation/d/1sUESuY9pF3DkHoQMJJjrVMV2SPFQYE1YqmG…>).
Getting started with a CSS framework library and nail down general
functionality up to the point where we are now. At the same time, I'd like
to get started on operations to change elements (basically creating
elementSpec[@mode="change"]).
*This would be a good time for others to step in the development process:
others could start writing operations and tests for changing elements while
I focus on UI. Or viceversa. The current module/element operations and
tests provide examples of how this all works (and of course I'd be happy to
explain stuff).*
6. Finally: decision tree
At the F2F we started talking about a possible "decision tree" as a way
into RomaJS. I started a document
<https://docs.google.com/document/d/1r33QbY7O0HqOHvTxZtOq_-MrYqtIE572YqPEY3J…>
with a list of possible questions to the user; James commented on it. *Please
comment and add your additions if you can. I would be thrilled if others
would want to explore this further as a mind map, etc. so that it's nicely
planned out before starting development on a decision tree feature.*
As development gains momentum, I hope to write similar reports to this one
at least once monthly.
Raff
Dear all,
As we decided on Thursday, we're going to try out having one volunteer a
month triage new tickets. That is, read them, decide whether they're valid
(not invalid, duplicates, etc.), and assign someone to investigate each
one, taking into account skillsets and workloads. We'll try it for the next
few months and see if we like it, https://doodle.com/poll/2wq9wtq6f69wfxc3
I will take May, and try to clean up the backlog as much as I can now that
the semester is over. I'd appreciate it if you could all take a look at the
unassigned tickets we have now and grab any that suit you. That would be
most helpful.
Thanks,
Hugh