diff --git a/makefile b/makefile index ea03f993e5de1dbc19606e3dae4804b0e4c6bf7a..49c65fbf7cd92e2100bd41d337464ee8e9033a3d 100644 --- a/makefile +++ b/makefile @@ -56,7 +56,10 @@ test: easy-units mvn test -X test_misc: - cd misc/bend_symlinks/ && /bin/bash -c /usr/bin/shunit2 test/test_suite.sh + cd misc/bend_symlinks/ && ./bend_symlinks.sh -h && test/test_suite.sh | tee test_output + cat misc/bend_symlinks/test_output | grep "Ran 10 tests." + cat misc/bend_symlinks/test_output | grep "OK" + rm misc/bend_symlinks/test_output clean: clean-antlr mvn clean diff --git a/misc/bend_symlinks/README.md b/misc/bend_symlinks/README.md index f72357f8636a2cf961434108a52e98ef05181e62..a1fa833e262b47e619237bf79db77c1d4b2421a5 100644 --- a/misc/bend_symlinks/README.md +++ b/misc/bend_symlinks/README.md @@ -103,4 +103,4 @@ Run test suite with - $ shunit2 test/test_suite.sh + $ ./test/test_suite.sh diff --git a/misc/bend_symlinks/test/test_suite.sh b/misc/bend_symlinks/test/test_suite.sh old mode 100644 new mode 100755 index 781e477e1ffacda36b12687ec05ebf5c9d021e15..9ffa6b1fffe9ec095ebbc3a25bdfa5ee767e1a69 --- a/misc/bend_symlinks/test/test_suite.sh +++ b/misc/bend_symlinks/test/test_suite.sh @@ -1,8 +1,9 @@ +#!/bin/bash - -source "./src/utils.sh" +source ./src/utils.sh set +o errexit + BEND=./bend_symlinks.sh FILE_SYSTEM_ROOT=test_dir/links DATA_DIR=test_dir/original @@ -226,4 +227,4 @@ testSymlinkToSymlink () { } - +source shunit2 diff --git a/src/main/java/caosdb/datetime/UTCTimeZoneShift.java b/src/main/java/caosdb/datetime/UTCTimeZoneShift.java index 0784c67bd9ba31786605a16cf1ff309b08562090..a5930d7d72250749d351000343e92ee4b24a02ac 100644 --- a/src/main/java/caosdb/datetime/UTCTimeZoneShift.java +++ b/src/main/java/caosdb/datetime/UTCTimeZoneShift.java @@ -111,4 +111,17 @@ public class UTCTimeZoneShift extends TimeZone { public String getID() { return str; } + + /** + * Generate an ISO 8601 time zone offset string (e.g. +0200) from the given raw offset in + * milliseconds. + * + * @param rawOffset - offset in ms. + * @return ISO 8601 time zone offset. + */ + public static String getISO8601Offset(int rawOffset) { + int h = Integer.divideUnsigned(rawOffset, 1000 * 60 * 60); + int m = Integer.remainderUnsigned(rawOffset, 1000 * 60 * 60); + return generateString(Integer.signum(h), h, m); + } } diff --git a/src/main/java/caosdb/server/resource/InfoResource.java b/src/main/java/caosdb/server/resource/InfoResource.java index a03dfe29810cd02b16442866343caa401c3c8af8..2c8139c1c00201756bd474e5351ab4916f61fcd0 100644 --- a/src/main/java/caosdb/server/resource/InfoResource.java +++ b/src/main/java/caosdb/server/resource/InfoResource.java @@ -22,10 +22,12 @@ */ package caosdb.server.resource; +import caosdb.datetime.UTCTimeZoneShift; import caosdb.server.database.backend.implementation.MySQL.ConnectionException; import caosdb.server.database.misc.TransactionBenchmark; import caosdb.server.utils.FlagInfo; import caosdb.server.utils.Info; +import java.util.TimeZone; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; @@ -43,6 +45,7 @@ public class InfoResource extends XMLServerResource { protected Representation httpGetInChildClass() throws Exception { final Document doc = new Document(); final Element root = generateRootElement(); + root.addContent(getTimeZone()); root.addContent(Info.toElement()); root.addContent(FlagInfo.toElement()); root.addContent(TransactionBenchmark.getRootInstance().toElememt()); @@ -50,6 +53,14 @@ public class InfoResource extends XMLServerResource { return ok(doc); } + public Element getTimeZone() { + TimeZone d = TimeZone.getDefault(); + return new Element("TimeZone") + .setAttribute("offset", UTCTimeZoneShift.getISO8601Offset(d.getRawOffset())) + .setAttribute("id", d.getID()) + .addContent(d.getDisplayName()); + } + /** There is no POST request specified for the /Info resource. */ @Override protected Representation httpPostInChildClass(final Representation entity)