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 ()
|
Task::Task ()
|
||||||
: id (0)
|
: id (0)
|
||||||
{
|
{
|
||||||
// Each new task gets a uuid.
|
|
||||||
set ("uuid", uuid ()); // No i18n
|
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <time.h>
|
#include <sys/time.h>
|
||||||
#include "Context.h"
|
#include "Context.h"
|
||||||
#include "../auto.h"
|
#include "../auto.h"
|
||||||
|
|
||||||
|
@ -36,10 +36,12 @@ Context context;
|
||||||
int main (int argc, char** argv)
|
int main (int argc, char** argv)
|
||||||
{
|
{
|
||||||
// Set up randomness.
|
// Set up randomness.
|
||||||
|
struct timeval tv;
|
||||||
|
::gettimeofday (&tv, NULL);
|
||||||
#ifdef HAVE_SRANDOM
|
#ifdef HAVE_SRANDOM
|
||||||
srandom (time (NULL));
|
srandom (tv.tv_usec);
|
||||||
#else
|
#else
|
||||||
srand (time (NULL));
|
srand (tv.tv_usec);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int status = 0;
|
int status = 0;
|
||||||
|
|
|
@ -73,8 +73,13 @@ $output = qx{../task rc:uuid.rc 5 info};
|
||||||
push @all_uuids, $uuid;
|
push @all_uuids, $uuid;
|
||||||
$unique_uuids{$uuid} = undef;
|
$unique_uuids{$uuid} = undef;
|
||||||
|
|
||||||
is (scalar (@all_uuids), 5, '5 tasks created');
|
$output = qx{../task rc:uuid.rc 6 info};
|
||||||
is (scalar (keys %unique_uuids), 5, '5 unique UUIDs');
|
($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.
|
# Cleanup.
|
||||||
unlink 'pending.data';
|
unlink 'pending.data';
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue