Skip to content

Commit fd665b3

Browse files
authored
Merge pull request #25 from ZedThree/fix-recent-issues
Fix a couple of recent issues
2 parents c5af421 + 5e8b424 commit fd665b3

File tree

5 files changed

+42
-41
lines changed

5 files changed

+42
-41
lines changed

fortdepend/fort_depend.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ def remove_ignored_modules(self, ignore_modules=None):
370370
ignored_modules = ignore_modules + DEFAULT_IGNORED_MODULES
371371

372372
# Remove from module dict
373-
for ignore_mod in ignored_modules:
373+
for ignore_mod in map(str.lower, ignored_modules):
374374
self.modules.pop(ignore_mod, None)
375375
# Remove from 'used' modules
376376
for module in self.modules.values():

fortdepend/smartopen.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44

55
@contextlib.contextmanager
6-
def smart_open(filename, mode="Ur"):
6+
def smart_open(filename, mode="Ur", *args, **kwargs):
77
"""Open stdin or stdout using a contextmanager
88
99
From: http://stackoverflow.com/a/29824059/2043465
@@ -19,7 +19,7 @@ def smart_open(filename, mode="Ur"):
1919
else:
2020
fh = sys.stdout
2121
else:
22-
fh = open(filename, mode)
22+
fh = open(filename, mode, *args, **kwargs)
2323
try:
2424
yield fh
2525
finally:

fortdepend/units.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def __init__(
4747

4848
if readfile:
4949
with smart_open(self.filename, "r", encoding="utf-8") as f:
50-
contents = f.read().lower()
50+
contents = f.read()
5151

5252
preprocessor = FortranPreprocessor()
5353

@@ -114,13 +114,14 @@ def get_modules(self, contents, macros=None):
114114
raise ValueError(error_string)
115115
for unit, start, end in zip(found_units, starts, ends):
116116
name = unit.group("modname")
117-
contains[name] = FortranModule(
117+
mod = FortranModule(
118118
unit_type=unit.group("unit_type"),
119119
name=name,
120120
source_file=self,
121121
text=(contents, start, end),
122122
macros=macros,
123123
)
124+
contains[mod.name] = mod
124125

125126
# Remove duplicates before returning
126127
return contains
@@ -151,7 +152,7 @@ class FortranModule:
151152

152153
def __init__(self, unit_type, name, source_file=None, text=None, macros=None):
153154
self.unit_type = unit_type.strip().lower()
154-
self.name = name.strip().lower()
155+
self.name = name.strip().lower() if self.unit_type == "module" else name.strip()
155156

156157
if source_file is not None:
157158
self.source_file = source_file
@@ -184,7 +185,7 @@ def get_uses(self, contents, macros=None):
184185
for line in contents[self.defined_at : self.end]:
185186
found = re.match(USE_REGEX, line)
186187
if found:
187-
uses.append(found.group("moduse").strip())
188+
uses.append(found.group("moduse").strip().lower())
188189

189190
# Remove duplicates
190191
uniq_mods = list(set(uses))

tests/test_fortranfile.py

+20-20
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def test_get_empty_uses(self):
3333

3434
def test_get_single_module(self):
3535
contents = ["module modA", "end module modA"]
36-
expected = {"modA": "FortranModule(module, 'moda', 'file.f90')"}
36+
expected = {"moda": "FortranModule(module, 'moda', 'file.f90')"}
3737

3838
assert self.testfile.modules is None
3939
module_list = self.testfile.get_modules(contents)
@@ -45,8 +45,8 @@ def test_get_single_module(self):
4545
def test_get_multiple_modules(self):
4646
contents = ["module modA", "end module modA", "module modB", "end module modB"]
4747
expected = {
48-
"modA": "FortranModule(module, 'moda', 'file.f90')",
49-
"modB": "FortranModule(module, 'modb', 'file.f90')",
48+
"moda": "FortranModule(module, 'moda', 'file.f90')",
49+
"modb": "FortranModule(module, 'modb', 'file.f90')",
5050
}
5151

5252
assert self.testfile.modules is None
@@ -58,7 +58,7 @@ def test_get_multiple_modules(self):
5858

5959
def test_module_with_module_procedure(self):
6060
contents = ["module modA", "module procedure foo", "end module modA"]
61-
expected = {"modA": "FortranModule(module, 'moda', 'file.f90')"}
61+
expected = {"moda": "FortranModule(module, 'moda', 'file.f90')"}
6262

6363
assert self.testfile.modules is None
6464
module_list = self.testfile.get_modules(contents)
@@ -69,7 +69,7 @@ def test_module_with_module_procedure(self):
6969

7070
def test_get_program(self):
7171
contents = ["program progA", "end program progA"]
72-
expected = {"progA": "FortranModule(program, 'proga', 'file.f90')"}
72+
expected = {"progA": "FortranModule(program, 'progA', 'file.f90')"}
7373

7474
assert self.testfile.modules is None
7575
module_list = self.testfile.get_modules(contents)
@@ -88,9 +88,9 @@ def test_get_program_and_multiple_modules(self):
8888
"end module modB",
8989
]
9090
expected = {
91-
"modA": "FortranModule(module, 'moda', 'file.f90')",
92-
"modB": "FortranModule(module, 'modb', 'file.f90')",
93-
"progA": "FortranModule(program, 'proga', 'file.f90')",
91+
"moda": "FortranModule(module, 'moda', 'file.f90')",
92+
"modb": "FortranModule(module, 'modb', 'file.f90')",
93+
"progA": "FortranModule(program, 'progA', 'file.f90')",
9494
}
9595

9696
assert self.testfile.modules is None
@@ -119,7 +119,7 @@ def test_empty_uses(self):
119119

120120
def test_get_single_module(self):
121121
testfile = FortranFile(filename="moduleA.f90", readfile=True)
122-
expected = {"modA": "FortranModule(module, 'moda', 'moduleA.f90')"}
122+
expected = {"moda": "FortranModule(module, 'moda', 'moduleA.f90')"}
123123

124124
for key, value in expected.items():
125125
assert key in testfile.modules
@@ -128,11 +128,11 @@ def test_get_single_module(self):
128128
def test_get_program_and_multiple_modules(self):
129129
testfile = FortranFile(filename="multiple_modules.f90", readfile=True)
130130
expected = {
131-
"modA": "FortranModule(module, 'moda', 'multiple_modules.f90')",
132-
"modB": "FortranModule(module, 'modb', 'multiple_modules.f90')",
133-
"modC": "FortranModule(module, 'modc', 'multiple_modules.f90')",
134-
"modD": "FortranModule(module, 'modd', 'multiple_modules.f90')",
135-
"progA": "FortranModule(program, 'proga', 'multiple_modules.f90')",
131+
"moda": "FortranModule(module, 'moda', 'multiple_modules.f90')",
132+
"modb": "FortranModule(module, 'modb', 'multiple_modules.f90')",
133+
"modc": "FortranModule(module, 'modc', 'multiple_modules.f90')",
134+
"modd": "FortranModule(module, 'modd', 'multiple_modules.f90')",
135+
"progA": "FortranModule(program, 'progA', 'multiple_modules.f90')",
136136
}
137137

138138
for key, value in expected.items():
@@ -141,16 +141,16 @@ def test_get_program_and_multiple_modules(self):
141141

142142
def test_single_uses(self):
143143
testfile = FortranFile(filename="moduleB.f90", readfile=True)
144-
assert testfile.uses == ["modA"]
144+
assert testfile.uses == ["moda"]
145145

146146
def test_multiple_uses(self):
147147
testfile = FortranFile(filename="moduleC.f90", readfile=True)
148-
assert set(testfile.uses) == set(["modA", "modB"])
148+
assert set(testfile.uses) == set(["moda", "modb"])
149149

150150
def test_multiple_uses_in_multiple_units(self):
151151
testfile = FortranFile(filename="multiple_modules.f90", readfile=True)
152152
assert set(testfile.uses) == set(
153-
["modA", "modB", "modC", "modD", "iso_c_binding"]
153+
["moda", "modb", "modc", "modd", "iso_c_binding"]
154154
)
155155

156156
def test_macro_replacement_dict(self):
@@ -159,21 +159,21 @@ def test_macro_replacement_dict(self):
159159
readfile=True,
160160
macros={"modA": "module_A", "modB": "module_B"},
161161
)
162-
assert sorted(testfile.uses) == sorted(["module_A", "module_B"])
162+
assert sorted(testfile.uses) == sorted(["module_a", "module_b"])
163163

164164
def test_macro_replacement_list(self):
165165
testfile = FortranFile(
166166
filename="moduleC.f90",
167167
readfile=True,
168168
macros=["modA=module_A", "modB=module_B"],
169169
)
170-
assert sorted(testfile.uses) == sorted(["module_A", "module_B"])
170+
assert sorted(testfile.uses) == sorted(["module_a", "module_b"])
171171

172172
def test_macro_replacement_single_value(self):
173173
testfile = FortranFile(
174174
filename="moduleC.f90", readfile=True, macros="modA=module_A"
175175
)
176-
assert sorted(testfile.uses) == sorted(["module_A", "modB"])
176+
assert sorted(testfile.uses) == sorted(["module_a", "modb"])
177177

178178
def test_conditional_include(self):
179179
testfile = FortranFile(

tests/test_fortranproject.py

+14-14
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@ def test_get_all_files(self):
4141
def test_get_all_modules(self):
4242
testproject = FortranProject()
4343
expected_modules = [
44-
"modA",
45-
"modB",
46-
"modC",
47-
"modD",
48-
"modE",
49-
"modF",
50-
"modG",
51-
"modH",
44+
"moda",
45+
"modb",
46+
"modc",
47+
"modd",
48+
"mode",
49+
"modf",
50+
"modg",
51+
"modh",
5252
"progA",
5353
"test",
5454
]
@@ -86,11 +86,11 @@ def test_exclude_files(self):
8686

8787
def test_ignore_modules(self):
8888
testproject = FortranProject(
89-
files="multiple_modules.f90", ignore_modules="modF"
89+
files="multiple_modules.f90", ignore_modules=["modF", "modg"]
9090
)
91-
assert sorted(["modG", "modH", "progA"]) == sorted(testproject.modules.keys())
92-
assert [] == testproject.modules["modG"].uses
93-
assert sorted(["modG", "modH"]) == sorted(
91+
assert sorted(["modh", "progA"]) == sorted(testproject.modules.keys())
92+
assert [] == testproject.modules["modh"].uses
93+
assert sorted(["modh"]) == sorted(
9494
testproject.files["multiple_modules.f90"].uses
9595
)
9696

@@ -334,8 +334,8 @@ def test_write_depends_skip_programs(self, datadir):
334334

335335
def test_get_all_used_modules(self):
336336
expected_used = {
337-
"progA": sorted(["modF", "modG", "modH"]),
338-
"test": sorted(["modA", "modB", "modC", "modD"]),
337+
"progA": sorted(["modf", "modg", "modh"]),
338+
"test": sorted(["moda", "modb", "modc", "modd"]),
339339
}
340340

341341
testproject = FortranProject()

0 commit comments

Comments
 (0)