[PATCH] rtemstoolkit/mailer.py: Fix option ordering for add_arguments

Alex White alex.white at oarcorp.com
Wed May 5 14:08:41 UTC 2021


The ordering of keys cannot be guaranteed in a dictionary. This changes
the options dictionary to an OrderedDict to preserve key order. This
also fixes the iteration start point in add_arguments.

Closes #4402
---
 rtemstoolkit/mailer.py | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/rtemstoolkit/mailer.py b/rtemstoolkit/mailer.py
index ae51d78..ad832d5 100644
--- a/rtemstoolkit/mailer.py
+++ b/rtemstoolkit/mailer.py
@@ -1,6 +1,7 @@
 #
 # RTEMS Tools Project (http://www.rtems.org/)
 # Copyright 2013-2016 Chris Johns (chrisj at rtems.org)
+# Copyright (C) 2021 On-Line Applications Research Corporation (OAR)
 # All rights reserved.
 #
 # This file is part of the RTEMS Tools package in 'rtems-tools'.
@@ -33,6 +34,7 @@
 #
 
 from __future__ import print_function
+from collections import OrderedDict
 
 import os
 import smtplib
@@ -43,16 +45,16 @@ from rtemstoolkit import execute
 from rtemstoolkit import options
 from rtemstoolkit import path
 
-_options = {
-    '--mail'         : 'Send email report or results.',
-    '--use-gitconfig': 'Use mail configuration from git config.',
-    '--mail-to'      : 'Email address to send the email to.',
-    '--mail-from'    : 'Email address the report is from.',
-    '--smtp-host'    : 'SMTP host to send via.',
-    '--smtp-port'    : 'SMTP port to send via.',
-    '--smtp-user'    : 'User for SMTP authentication.',
-    '--smtp-password': 'Password for SMTP authentication.'
-}
+_options = OrderedDict([
+    ('--mail'         , 'Send email report or results.'),
+    ('--use-gitconfig', 'Use mail configuration from git config.'),
+    ('--mail-to'      , 'Email address to send the email to.'),
+    ('--mail-from'    , 'Email address the report is from.'),
+    ('--smtp-host'    , 'SMTP host to send via.'),
+    ('--smtp-port'    , 'SMTP port to send via.'),
+    ('--smtp-user'    , 'User for SMTP authentication.'),
+    ('--smtp-password', 'Password for SMTP authentication.')
+])
 
 def append_options(opts):
     for o in _options:
@@ -61,7 +63,7 @@ def append_options(opts):
 def add_arguments(argsp):
     argsp.add_argument('--mail', help = _options['--mail'], action = 'store_true')
     argsp.add_argument('--use-gitconfig', help = _options['--use-gitconfig'], action = 'store_true')
-    for o in list(_options)[1:]:
+    for o in list(_options)[2:]:
         argsp.add_argument(o, help = _options[o], type = str)
 
 class mail:
-- 
2.27.0



More information about the devel mailing list