From 386b8f62a729de3587b10de64fccd34ddb916550 Mon Sep 17 00:00:00 2001
From: inso <insomniak.fr@gmaiL.com>
Date: Thu, 30 Nov 2017 22:42:30 +0100
Subject: [PATCH] Fix tests

---
 requirements.txt                        |  2 +-
 src/sakia/data/processors/blockchain.py | 52 +++++++++++++------------
 2 files changed, 29 insertions(+), 25 deletions(-)

diff --git a/requirements.txt b/requirements.txt
index 5e01047a..b505e855 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,7 +1,7 @@
 git+https://github.com/Insoleet/quamash.git@master
 asynctest
 networkx
-attrs
+attrs<=17.2
 duniter-mirage
 duniterpy>=0.40
 pytest
diff --git a/src/sakia/data/processors/blockchain.py b/src/sakia/data/processors/blockchain.py
index c724af32..24211187 100644
--- a/src/sakia/data/processors/blockchain.py
+++ b/src/sakia/data/processors/blockchain.py
@@ -294,30 +294,34 @@ class BlockchainProcessor:
                 dt_reeval_block_target = max(blockchain.current_buid.number - int(last_reeval_offset
                                                                                   / blockchain.parameters.avg_gen_time),
                                              0)
-                last_ud_reeval_block_number = [b for b in blocks_with_ud if b <= dt_reeval_block_target][-1]
-
-                block_with_ud = await self._bma_connector.get(currency, bma.blockchain.block,
-                                                              req_args={'number': last_ud_reeval_block_number})
-                if block_with_ud:
-                    blockchain.last_members_count = block_with_ud['membersCount']
-                    blockchain.last_ud = block_with_ud['dividend']
-                    blockchain.last_ud_base = block_with_ud['unitbase']
-                    blockchain.last_ud_time = block_with_ud['medianTime']
-                    blockchain.last_mass = block_with_ud['monetaryMass']
-
-                self._logger.debug("Requesting previous block with dividend")
-                dt_reeval_block_target = max(dt_reeval_block_target - int(blockchain.parameters.dt_reeval
-                                                                          / blockchain.parameters.avg_gen_time),
-                                             0)
-                previous_ud_reeval_block_number = [b for b in blocks_with_ud if b <= dt_reeval_block_target][-1]
-
-                block_with_ud = await self._bma_connector.get(currency, bma.blockchain.block,
-                                                              req_args={'number': previous_ud_reeval_block_number})
-                blockchain.previous_mass = block_with_ud['monetaryMass']
-                blockchain.previous_members_count = block_with_ud['membersCount']
-                blockchain.previous_ud = block_with_ud['dividend']
-                blockchain.previous_ud_base = block_with_ud['unitbase']
-                blockchain.previous_ud_time = block_with_ud['medianTime']
+                try:
+                    last_ud_reeval_block_number = [b for b in blocks_with_ud if b <= dt_reeval_block_target][-1]
+                except IndexError:
+                    last_ud_reeval_block_number = 0
+
+                if last_ud_reeval_block_number:
+                    block_with_ud = await self._bma_connector.get(currency, bma.blockchain.block,
+                                                                  req_args={'number': last_ud_reeval_block_number})
+                    if block_with_ud:
+                        blockchain.last_members_count = block_with_ud['membersCount']
+                        blockchain.last_ud = block_with_ud['dividend']
+                        blockchain.last_ud_base = block_with_ud['unitbase']
+                        blockchain.last_ud_time = block_with_ud['medianTime']
+                        blockchain.last_mass = block_with_ud['monetaryMass']
+
+                    self._logger.debug("Requesting previous block with dividend")
+                    dt_reeval_block_target = max(dt_reeval_block_target - int(blockchain.parameters.dt_reeval
+                                                                              / blockchain.parameters.avg_gen_time),
+                                                 0)
+                    previous_ud_reeval_block_number = [b for b in blocks_with_ud if b <= dt_reeval_block_target][-1]
+
+                    block_with_ud = await self._bma_connector.get(currency, bma.blockchain.block,
+                                                                  req_args={'number': previous_ud_reeval_block_number})
+                    blockchain.previous_mass = block_with_ud['monetaryMass']
+                    blockchain.previous_members_count = block_with_ud['membersCount']
+                    blockchain.previous_ud = block_with_ud['dividend']
+                    blockchain.previous_ud_base = block_with_ud['unitbase']
+                    blockchain.previous_ud_time = block_with_ud['medianTime']
             except errors.DuniterError as e:
                 if e.ucode != errors.NO_CURRENT_BLOCK:
                     raise
-- 
GitLab