Skip to content

Latest commit

 

History

History
42 lines (36 loc) · 2.44 KB

TODO.md

File metadata and controls

42 lines (36 loc) · 2.44 KB

Rough TODO List

This document is not really a task list, but more of a few vague ideas for refactoring and feature development.

Refactoring, Cleanup, and Bug Fixes

Unit tests should not require a database or filesystem.
Many of the current unit tests are closer to integration tests and require particular file layouts and database configurations. We can add to these with sets of true unit tests that take better advantage of mocks.
Unit/integration tests should not require specific setups of multiple databases.
Configuration should be handled within the tests as much as possible, with Assumption tests to check if the tests being run are actually failing or if they are simply not valid.
Integration tests should work consistently when run back-to-back.
Sometimes running the current unit tests without a `clean` step results in one or more of the tests failing.
Take better advantage of guice, especially for unit tests.
While the current setup takes heavy advantage of guice, it is a little cumbersome to work with for unit testing.
Restructuring for easier testing
There are a few places where a little refactoring could make the bulk of the code easier to unit test.
Better command-line Javadocs/Findbugs/Checkstyle support
Currently not generating reports for these, could be useful for future development.

Features

Allow for Arbitrary Script Files
Currently it only allows for script files that are in the classpath.
Execute In Transactions
When scripts run, either in part or in whole, they should be run in a transaction to enable easy rollback if something goes wrong.
Alternative Language Support
Currently the only real support is for Java and Groovy. It'd be nice to extend this to other languages that run on the JVM, such as Scala.
Down Support
Currently the emphasis is on upgrading the database. Should also support rollbacks.
Maintenance
Working on a database frequently involves occasional maintenance operations such as reindexing. There's a request to put these into a separate table.