summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormio <[email protected]>2025-03-08 19:53:55 +1000
committermio <[email protected]>2025-03-10 09:13:10 +1000
commit7d3bf3e611cf7638426b69564ba1786c307893fb (patch)
tree4dcd4af0ee5e9b55abcb05714125577b641a27f7
parent0418e523c6365efea9aca1811cb92b830752e76e (diff)
downloadtdelibs-7d3bf3e611cf7638426b69564ba1786c307893fb.tar.gz
tdelibs-7d3bf3e611cf7638426b69564ba1786c307893fb.zip
KRFCDate minutes/seconds can be omitted (ISO8601)
ISO 8601 allows for dates and times to be represented with "reduced precision". In the case of times, this means the minutes and seconds can be omitted. More automated tests have been enabled, with the remaining ones to be fixed up in a later PR. Signed-off-by: mio <[email protected]> (cherry picked from commit b56e68eac7a8e916a905e5f8ebe058907340128b)
-rw-r--r--tdecore/krfcdate.cpp10
-rw-r--r--tdecore/tests/CMakeLists.txt42
-rw-r--r--tdecore/tests/krfcdatetest.cpp6
3 files changed, 43 insertions, 15 deletions
diff --git a/tdecore/krfcdate.cpp b/tdecore/krfcdate.cpp
index 327736b40..08691fd15 100644
--- a/tdecore/krfcdate.cpp
+++ b/tdecore/krfcdate.cpp
@@ -431,12 +431,16 @@ KRFCDate::parseDateISO8601( const TQString& input_ )
l = TQStringList::split(':', timeString);
- if (l.size() < 3)
+ // If the 'T' separator was included, there must at least
+ // be the hour, if not then it is invalid.
+ if (l.size() < 1)
return 0;
hour = l[0].toUInt();
- min = l[1].toUInt();
- sec = l[2].toUInt();
+
+ // Minutes and seconds can be omitted.
+ min = (l.size() >= 2) ? l[1].toUInt() : 0;
+ sec = (l.size() >= 3) ? l[2].toUInt() : 0;
time_t result = ymdhms_to_seconds(year, month, mday, hour, min, sec);
diff --git a/tdecore/tests/CMakeLists.txt b/tdecore/tests/CMakeLists.txt
index 6ccc215bd..cc6d45049 100644
--- a/tdecore/tests/CMakeLists.txt
+++ b/tdecore/tests/CMakeLists.txt
@@ -30,23 +30,41 @@ tde_add_library( tdeconfigtest SHARED AUTOMOC
EXCLUDE_FROM_ALL
)
-set( CHECKS
- tdeconfigtestgui klocaletest kprocesstest ksimpleconfigtest kstandarddirstest
- kuniqueapptest ktempfiletest krandomsequencetest kdebugtest
- ksocktest kstringhandlertest kcmdlineargstest kapptest kmemtest
- dcopkonqtest kipctest cplusplustest kiconloadertest kresolvertest
- kmdcodectest knotifytest ksortablevaluelisttest krfcdatetest testqtargs
- kprociotest kcharsetstest kcalendartest kmacroexpandertest kshelltest
- kxerrorhandlertest startserviceby kglobaltest ktimezonestest
+set( AUTOMATED_CHECKS
+ kcharsetstest kglobaltest kmacroexpandertest krfcdatetest
+ kstringhandlertest kurltest tdestdacceltest
+
+ # cplusplustest # -- skip (doesn't error on errors)
+ # ksimpleconfigtest # -- skip (doesn't error on errors)
+ # ksortablevaluelist # -- skip (doesn't error on errors)
+ # ksocktest # -- skip due to DNS failure
)
+# Tests that require some graphical interaction / confirmation.
+set( MANUAL_CHECKS_GUI
+ kdebugtest klocaletest knotifytest kxerrorhandlertest
+ startserviceby tdeconfigtestgui kprocesstest testqtargs
+)
-foreach( _check ${CHECKS} )
- tde_add_check_executable( ${_check} AUTOMOC LINK tdeconfigtest-shared )
+# Tests that require some interaction using a terminal
+set( MANUAL_CHECKS_TUI
+ dcopkonqtest kcalendartest kcmdlineargstest kiconloadertest
+ kipctest kmemtest krandomsequencetest kresolvertest
+ kmdcodectest kshelltest ktempfiletest ktimezonestest
+ kapptest kprociotest kstandarddirstest kuniqueapptest
+)
+
+foreach( _check ${AUTOMATED_CHECKS} )
+ tde_add_check_executable( ${_check} AUTOMOC LINK tdeconfigtest-shared TEST )
endforeach( )
-tde_add_check_executable( kurltest AUTOMOC LINK tdeconfigtest-shared TEST )
-tde_add_check_executable( tdestdacceltest AUTOMOC LINK tdeconfigtest-shared TEST )
+foreach( _check ${MANUAL_CHECKS_GUI})
+ tde_add_check_executable( ${_check} AUTOMOC LINK tdeconfigtest-shared )
+endforeach()
+
+foreach( _check ${MANUAL_CHECKS_TUI})
+ tde_add_check_executable( ${_check} AUTOMOC LINK tdeconfigtest-shared )
+endforeach()
tde_add_check_executable( kidlservertest AUTOMOC SOURCES KIDLTest.cpp KIDLTest.skel
LINK tdeconfigtest-shared )
diff --git a/tdecore/tests/krfcdatetest.cpp b/tdecore/tests/krfcdatetest.cpp
index 94358a8f1..c67c5a4e2 100644
--- a/tdecore/tests/krfcdatetest.cpp
+++ b/tdecore/tests/krfcdatetest.cpp
@@ -59,6 +59,12 @@ int main(int argc, char *argv[])
a = KRFCDate::parseDateISO8601("1994-01-01");
check( "1994-01-01", a, b );
+ a = KRFCDate::parseDateISO8601("1994-01-01T12");
+ check("1994-01-01T12", a, b);
+
+ a = KRFCDate::parseDateISO8601("1994-01-01T12:00");
+ check("1994-01-01T12:00", a, b);
+
b = 0;
// pass RFC date to ISO parser