Skip to content

Commit 853f4b8

Browse files
committed
Python 3.x compatibility for test_builtin_options
1 parent 4495775 commit 853f4b8

File tree

9 files changed

+151
-92
lines changed

9 files changed

+151
-92
lines changed

examples/searchcommands_app/package/default/logging.conf

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,44 +7,64 @@
77
keys = root, splunklib, CountMatchesCommand, GenerateHelloCommand, GenerateTextCommand, SimulateCommand, SumCommand
88

99
[logger_root]
10-
level = WARNING ; Default: WARNING
11-
handlers = stderr ; Default: stderr
10+
; Default: WARNING
11+
level = WARNING
12+
; Default: stderr
13+
handlers = stderr
1214

1315
[logger_splunklib]
1416
qualname = splunklib
15-
level = NOTSET ; Default: WARNING
16-
handlers = splunklib ; Default: stderr
17-
propagate = 0 ; Default: 1
17+
; Default: WARNING
18+
level = NOTSET
19+
; Default: stderr
20+
handlers = splunklib
21+
; Default: 1
22+
propagate = 0
1823

1924
[logger_CountMatchesCommand]
2025
qualname = CountMatchesCommand
21-
level = NOTSET ; Default: WARNING
22-
handlers = app ; Default: stderr
23-
propagate = 0 ; Default: 1
26+
; Default: WARNING
27+
level = NOTSET
28+
; Default: stderr
29+
handlers = app
30+
; Default: 1
31+
propagate = 0
2432

2533
[logger_GenerateHelloCommand]
2634
qualname = GenerateHelloCommand
27-
level = DEBUG ; Default: WARNING
28-
handlers = app ; Default: stderr
29-
propagate = 0 ; Default: 1
35+
; Default: WARNING
36+
level = DEBUG
37+
; Default: stderr
38+
handlers = app
39+
; Default: 1
40+
propagate = 0
3041

3142
[logger_GenerateTextCommand]
3243
qualname = GenerateTextCommand
33-
level = DEBUG ; Default: WARNING
34-
handlers = app ; Default: stderr
35-
propagate = 0 ; Default: 1
44+
; Default: WARNING
45+
level = DEBUG
46+
; Default: stderr
47+
handlers = app
48+
; Default: 1
49+
propagate = 0
3650

3751
[logger_SimulateCommand]
3852
qualname = SimulateCommand
39-
level = NOTSET ; Default: WARNING
40-
handlers = app ; Default: stderr
41-
propagate = 0 ; Default: 1
53+
; Default: WARNING
54+
level = NOTSET
55+
; Default: stderr
56+
handlers = app
57+
; Default: 1
58+
propagate = 0
4259

4360
[logger_SumCommand]
4461
qualname = SumCommand
45-
level = NOTSET ; Default: WARNING
46-
handlers = splunklib ; Default: stderr
47-
propagate = 0 ; Default: 1
62+
; Default: WARNING
63+
level = NOTSET
64+
; Default: stderr
65+
handlers = splunklib
66+
; Default: 1
67+
propagate = 0
4868

4969
[handlers]
5070
# See [logging.handlers](https://docs.python.org/2/library/logging.handlers.html)

examples/searchcommands_template/default/logging.conf

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,31 @@
77
keys = root, splunklib, %(command.title())Command
88

99
[logger_root]
10-
level = WARNING ; Default: WARNING
11-
handlers = stderr ; Default: stderr
10+
; Default: WARNING
11+
level = WARNING
12+
; Default: stderr
13+
handlers = stderr
1214

1315
[logger_splunklib]
1416
qualname = splunklib
15-
level = NOTSET ; Default: WARNING
16-
handlers = splunklib ; Default: stderr
17-
propagate = 0 ; Default: 1
17+
; Default: WARNING
18+
level = NOTSET
19+
; Default: stderr
20+
handlers = splunklib
21+
; Default: 1
22+
propagate = 0
23+
24+
[logger_SearchCommand]
25+
qualname = SearchCommand
1826

1927
[logger_%(command.title())Command]
2028
qualname = %(command.title())Command
21-
level = NOTSET ; Default: WARNING
22-
handlers = app ; Default: stderr
23-
propagate = 0 ; Default: 1
29+
; Default: WARNING
30+
level = NOTSET
31+
; Default: stderr
32+
handlers = app
33+
; default: 1
34+
propagate = 0
2435

2536
[handler_app]
2637
# Select this handler to log events to $SPLUNK_HOME/var/log/splunk/searchcommands_app.log

tests/searchcommands/__init__.py

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,22 @@
1919

2020
from sys import version_info as python_version
2121

22-
if not (python_version[0] == 2 and python_version[1] == 7):
23-
def load_tests(loader, tests, pattern):
24-
return
25-
else:
26-
from os import path
27-
import logging
22+
from os import path
23+
import logging
2824

29-
from splunklib.searchcommands import environment
30-
from splunklib import searchcommands
25+
from splunklib.searchcommands import environment
26+
from splunklib import searchcommands
3127

32-
package_directory = path.dirname(path.realpath(__file__))
33-
project_root = path.dirname(path.dirname(package_directory))
28+
package_directory = path.dirname(path.realpath(__file__))
29+
project_root = path.dirname(path.dirname(package_directory))
3430

3531

36-
def rebase_environment(name):
32+
def rebase_environment(name):
33+
environment.app_root = path.join(package_directory, 'apps', name)
34+
logging.Logger.manager.loggerDict.clear()
35+
del logging.root.handlers[:]
3736

38-
environment.app_root = path.join(package_directory, 'apps', name)
39-
logging.Logger.manager.loggerDict.clear()
40-
del logging.root.handlers[:]
41-
42-
environment.splunklib_logger, environment.logging_configuration = environment.configure_logging('splunklib')
43-
searchcommands.logging_configuration = environment.logging_configuration
44-
searchcommands.splunklib_logger = environment.splunklib_logger
45-
searchcommands.app_root = environment.app_root
37+
environment.splunklib_logger, environment.logging_configuration = environment.configure_logging('splunklib')
38+
searchcommands.logging_configuration = environment.logging_configuration
39+
searchcommands.splunklib_logger = environment.splunklib_logger
40+
searchcommands.app_root = environment.app_root

tests/searchcommands/apps/app_with_logging_configuration/default/alternative-logging.conf

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,28 @@
77
keys = root, splunklib, SearchCommand
88

99
[logger_root]
10-
level = WARNING ; Default: WARNING
11-
handlers = stderr ; Default: stderr
10+
; Default: WARNING
11+
level = WARNING
12+
; Default: stderr
13+
handlers = stderr
1214

1315
[logger_splunklib]
1416
qualname = splunklib
15-
level = NOTSET ; Default: WARNING
16-
handlers = splunklib ; Default: stderr
17-
propagate = 0 ; Default: 1
17+
; Default: WARNING
18+
level = NOTSET
19+
; Default: stderr
20+
handlers = splunklib
21+
; Default: 1
22+
propagate = 0
1823

1924
[logger_SearchCommand]
2025
qualname = SearchCommand
21-
level = NOTSET ; Default: WARNING
22-
handlers = app ; Default: stderr
23-
propagate = 0 ; Default: 1
26+
; Default: WARNING
27+
level = NOTSET
28+
; Default: stderr
29+
handlers = app
30+
; default: 1
31+
propagate = 0
2432

2533
[handlers]
2634
# See [logging.handlers](https://docs.python.org/2/library/logging.handlers.html)

tests/searchcommands/apps/app_with_logging_configuration/default/logging.conf

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,28 @@
77
keys = root, splunklib, SearchCommand
88

99
[logger_root]
10-
level = WARNING ; Default: WARNING
11-
handlers = stderr ; Default: stderr
10+
; Default: WARNING
11+
level = WARNING
12+
; Default: stderr
13+
handlers = stderr
1214

1315
[logger_splunklib]
1416
qualname = splunklib
15-
level = NOTSET ; Default: WARNING
16-
handlers = splunklib ; Default: stderr
17-
propagate = 0 ; Default: 1
17+
; Default: WARNING
18+
level = NOTSET
19+
; Default: stderr
20+
handlers = splunklib
21+
; Default: 1
22+
propagate = 0
1823

1924
[logger_SearchCommand]
2025
qualname = SearchCommand
21-
level = NOTSET ; Default: WARNING
22-
handlers = app ; Default: stderr
23-
propagate = 0 ; Default: 1
26+
; Default: WARNING
27+
level = NOTSET
28+
; Default: stderr
29+
handlers = app
30+
; default: 1
31+
propagate = 0
2432

2533
[handlers]
2634
# See [logging.handlers](https://docs.python.org/2/library/logging.handlers.html)

tests/searchcommands/apps/app_with_logging_configuration/logging.conf

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,28 @@
77
keys = root, splunklib, SearchCommand
88

99
[logger_root]
10-
level = WARNING ; Default: WARNING
11-
handlers = stderr ; Default: stderr
10+
; Default: WARNING
11+
level = WARNING
12+
; Default: stderr
13+
handlers = stderr
1214

1315
[logger_splunklib]
1416
qualname = splunklib
15-
level = NOTSET ; Default: WARNING
16-
handlers = splunklib ; Default: stderr
17-
propagate = 0 ; Default: 1
17+
; Default: WARNING
18+
level = NOTSET
19+
; Default: stderr
20+
handlers = splunklib
21+
; Default: 1
22+
propagate = 0
1823

1924
[logger_SearchCommand]
2025
qualname = SearchCommand
21-
level = NOTSET ; Default: WARNING
22-
handlers = app ; Default: stderr
23-
propagate = 0 ; Default: 1
26+
; Default: WARNING
27+
level = NOTSET
28+
; Default: stderr
29+
handlers = app
30+
; Default: 1
31+
propagate = 0
2432

2533
[handlers]
2634
# See [logging.handlers](https://docs.python.org/2/library/logging.handlers.html)

tests/searchcommands/test_builtin_options.py

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,15 @@
3333
from splunklib.searchcommands.decorators import Configuration
3434
from splunklib.searchcommands.search_command import SearchCommand
3535

36-
try:
37-
from tests.searchcommands import rebase_environment, package_directory
38-
except:
39-
# Skip on Python 2.6
40-
def rebase_environment(ignore):
41-
return
42-
pass
36+
from tests.searchcommands import rebase_environment, package_directory
4337

38+
# portable log level names
39+
# https://stackoverflow.com/a/49724281
40+
def level_names():
41+
return [logging.getLevelName(v) for v in
42+
sorted(getattr(logging, '_levelToName', None)
43+
or logging._levelNames)
44+
if getattr(v, "real", 0)]
4445

4546
@Configuration()
4647
class StubbedSearchCommand(SearchCommand):
@@ -62,23 +63,20 @@ def test_logging_configuration(self):
6263

6364
rebase_environment('app_without_logging_configuration')
6465

65-
self.assertIsInstance(environment.splunklib_logger, logging.Logger)
66-
self.assertIsNone(environment.logging_configuration)
67-
self.assertEqual(len(logging.root.handlers), 1)
68-
self.assertEqual(len(logging.Logger.manager.loggerDict), 1)
69-
self.assertIsInstance(logging.root.handlers[0], logging.StreamHandler)
70-
self.assertIs(environment.splunklib_logger, logging.getLogger('splunklib'))
7166
self.assertIsNone(environment.logging_configuration)
67+
self.assertTrue(any(isinstance(h, logging.StreamHandler) for h in logging.root.handlers))
68+
self.assertTrue('splunklib' in logging.Logger.manager.loggerDict)
69+
self.assertEqual(environment.splunklib_logger, logging.Logger.manager.loggerDict['splunklib'])
70+
self.assertIsInstance(environment.splunklib_logger, logging.Logger)
7271

7372
command = StubbedSearchCommand()
7473

7574
self.assertIs(command.logger, logging.getLogger('StubbedSearchCommand'))
7675
self.assertEqual(len(command.logger.handlers), 0)
7776
self.assertIsNone(command.logging_configuration)
7877
self.assertIs(command.logger.root, logging.root)
79-
self.assertEqual(len(logging.root.handlers), 1)
8078

81-
root_handler = logging.root.handlers[0]
79+
root_handler = next(h for h in logging.root.handlers if isinstance(h, logging.StreamHandler))
8280

8381
self.assertIsInstance(root_handler, logging.StreamHandler)
8482
self.assertEqual(root_handler.stream, sys.stderr)
@@ -147,7 +145,7 @@ def test_logging_level(self):
147145

148146
self.assertEqual(warning, command.logging_level)
149147

150-
for level in logging._levelNames:
148+
for level in level_names():
151149
if type(level) is int:
152150
command.logging_level = level
153151
level_name = logging.getLevelName(level)
@@ -201,9 +199,8 @@ def _test_boolean_option(self, option):
201199

202200
for value in boolean_values:
203201
for variant in value, value.capitalize(), value.upper():
204-
for s in variant, bytes(variant):
205-
option.fset(command, s)
206-
self.assertEqual(option.fget(command), boolean_values[value])
202+
option.fset(command, variant)
203+
self.assertEqual(option.fget(command), boolean_values[value])
207204

208205
option.fset(command, None)
209206
self.assertEqual(option.fget(command), None)

tests/searchcommands/test_validators.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ def test_boolean(self):
5252

5353
for value in truth_values:
5454
for variant in value, value.capitalize(), value.upper():
55-
for s in six.text_type(variant), bytes(variant):
56-
self.assertEqual(validator.__call__(s), truth_values[value])
55+
s = six.text_type(variant)
56+
self.assertEqual(validator.__call__(s), truth_values[value])
5757

5858
self.assertIsNone(validator.__call__(None))
5959
self.assertRaises(ValueError, validator.__call__, 'anything-else')

0 commit comments

Comments
 (0)