mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
Bug Fix
- Fixed bug that was causing more non-unique UUIDs. Here are the changes made: - Task.cpp, tasks are no longer provided with a UUID in Task::Task. This prevents the global context.task from being constructed before srandom/srand is called. - main.cpp, instead of srandom/srand (time (NULL)), it now uses struct timeval tv_usec member, which has a micro-second granularity, instead of time (NULL) which has a second granularity. When "task add ..." is called in a unit test, several calls are made per second, this the random number generator is seeded with the same value. - Modified the unit test to cover all 6 tasks created, instead of 5.
This commit is contained in:
parent
28ab9e36cd
commit
51ad77e952
3 changed files with 12 additions and 7 deletions
|
@ -38,8 +38,6 @@
|
|||
Task::Task ()
|
||||
: id (0)
|
||||
{
|
||||
// Each new task gets a uuid.
|
||||
set ("uuid", uuid ()); // No i18n
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
#include <iostream>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <sys/time.h>
|
||||
#include "Context.h"
|
||||
#include "../auto.h"
|
||||
|
||||
|
@ -36,10 +36,12 @@ Context context;
|
|||
int main (int argc, char** argv)
|
||||
{
|
||||
// Set up randomness.
|
||||
struct timeval tv;
|
||||
::gettimeofday (&tv, NULL);
|
||||
#ifdef HAVE_SRANDOM
|
||||
srandom (time (NULL));
|
||||
srandom (tv.tv_usec);
|
||||
#else
|
||||
srand (time (NULL));
|
||||
srand (tv.tv_usec);
|
||||
#endif
|
||||
|
||||
int status = 0;
|
||||
|
|
|
@ -73,8 +73,13 @@ $output = qx{../task rc:uuid.rc 5 info};
|
|||
push @all_uuids, $uuid;
|
||||
$unique_uuids{$uuid} = undef;
|
||||
|
||||
is (scalar (@all_uuids), 5, '5 tasks created');
|
||||
is (scalar (keys %unique_uuids), 5, '5 unique UUIDs');
|
||||
$output = qx{../task rc:uuid.rc 6 info};
|
||||
($uuid) = $output =~ /UUID\s+(\S+)/;
|
||||
push @all_uuids, $uuid;
|
||||
$unique_uuids{$uuid} = undef;
|
||||
|
||||
is (scalar (@all_uuids), 6, '6 tasks created');
|
||||
is (scalar (keys %unique_uuids), 6, '6 unique UUIDs');
|
||||
|
||||
# Cleanup.
|
||||
unlink 'pending.data';
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue