Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/makei/rules_mk.py
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ def from_str(cls, rules_mk_str: str, containing_dir: Path, src_dir: Path, includ
# Updates variables with wildcard values
for wildcard, var in wildcard_variables.items():
stripped_wildcard = wildcard.strip("%.").upper()
matched_targets = list(filter(lambda target: target.split(".")[1] == stripped_wildcard, targets))
matched_targets = [target for target in targets if target.endswith(f".{stripped_wildcard}")]
targets = list(filter(lambda target: target.split(".")[1] != stripped_wildcard, targets))

for target in matched_targets:
Expand Down
2 changes: 2 additions & 0 deletions tests/data/rules_mks/wildcard/AB2001.B.rpgle
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
**free
return;
2 changes: 2 additions & 0 deletions tests/data/rules_mks/wildcard/AB2001_B.rpgle
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
**free
return;
9 changes: 8 additions & 1 deletion tests/data/rules_mks/wildcard/wildcard.rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ CURRENT:=V7R5
HEADER := some
COMMIT = *NONE
VERSION=V7R3
TGTRLS := *PRV

# test base wildcard with variables
%.MODULE: %.rpgle $(HEADER).rpgleinc
Expand All @@ -21,4 +22,10 @@ bar.MODULE: bar.rpgle \
bar.TABLE
# test if this very \
cool multiline comment \
is ignored
is ignored

AB2001_B.MODULE: AB2001_B.rpgle
AB2001_B.MODULE: TGTRLS := $(TGTRLS)

AB2001.B.MODULE: AB2001.B.rpgle
AB2001.B.MODULE: TGTRLS := $(TGTRLS)
52 changes: 44 additions & 8 deletions tests/unit/test_rules_mk.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def test_wildcard_recipes_variables():
rules_mk = RulesMk.from_file(test_dir / "wildcard.rules.mk", test_dir)
expected_targets = {'TRGs': [], 'DTAARAs': [], 'DTAQs': [], 'SQLs': [], 'BNDDs': [],
'PFs': [], 'LFs': [], 'DSPFs': [], 'PRTFs': [], 'CMDs': [],
'MODULEs': ['BAR.MODULE', 'FOO.MODULE'], 'SRVPGMs': [], 'PGMs': [],
'MODULEs': ['BAR.MODULE', 'AB2001_B.MODULE', 'AB2001.B.MODULE', 'FOO.MODULE'], 'SRVPGMs': [], 'PGMs': [],
'MENUs': [], 'PNLGRPs': [], 'QMQRYs': [], 'WSCSTs': [], 'MSGs': []}
assert rules_mk.containing_dir == test_dir
assert rules_mk.subdirs == []
Expand All @@ -47,28 +47,64 @@ def test_wildcard_recipes_variables():
BAR.MODULE: TGTVER:=V7R3
'''

assert rules_mk.rules[1].variables == ['TEXT := hardcoded for all mod', 'TGTVER=V7R5',
'private TEXT := foo is better', 'TGTVER := V7R2']
assert rules_mk.rules[1].variables == ['TEXT := hardcoded for all mod' , 'TGTRLS :=*PRV']
assert rules_mk.rules[1].commands == []
assert rules_mk.rules[1].dependencies == ['$(HEADER).rpgleinc']
assert rules_mk.rules[1].dependencies == []
assert rules_mk.rules[1].include_dirs == []
assert rules_mk.rules[1].target == 'FOO.MODULE'
assert rules_mk.rules[1].source_file == '$(d)/foo.rpgle'
assert str(rules_mk.rules[1]) == '''FOO.MODULE_SRC=$(d)/foo.rpgle
assert rules_mk.rules[1].target == 'AB2001_B.MODULE'
assert rules_mk.rules[1].source_file == '$(d)/AB2001_B.rpgle'
assert str(rules_mk.rules[1]) == '''AB2001_B.MODULE_SRC=$(d)/AB2001_B.rpgle
AB2001_B.MODULE_DEP=
AB2001_B.MODULE_RECIPE=RPGLE_TO_MODULE_RECIPE
AB2001_B.MODULE: TEXT := hardcoded for all mod
AB2001_B.MODULE: TGTRLS :=*PRV
'''

assert rules_mk.rules[2].variables == ['TEXT := hardcoded for all mod' , 'TGTRLS :=*PRV']
assert rules_mk.rules[2].commands == []
assert rules_mk.rules[2].dependencies == []
assert rules_mk.rules[2].include_dirs == []
assert rules_mk.rules[2].target == 'AB2001.B.MODULE'
assert rules_mk.rules[2].source_file == '$(d)/AB2001.B.rpgle'
assert str(rules_mk.rules[2]) == '''AB2001.B.MODULE_SRC=$(d)/AB2001.B.rpgle
AB2001.B.MODULE_DEP=
AB2001.B.MODULE_RECIPE=RPGLE_TO_MODULE_RECIPE
AB2001.B.MODULE: TEXT := hardcoded for all mod
AB2001.B.MODULE: TGTRLS :=*PRV
'''

assert rules_mk.rules[3].variables == ['TEXT := hardcoded for all mod', 'TGTVER=V7R5',
'private TEXT := foo is better', 'TGTVER := V7R2']
assert rules_mk.rules[3].commands == []
assert rules_mk.rules[3].dependencies == ['$(HEADER).rpgleinc']
assert rules_mk.rules[3].include_dirs == []
assert rules_mk.rules[3].target == 'FOO.MODULE'
assert rules_mk.rules[3].source_file == '$(d)/foo.rpgle'
assert str(rules_mk.rules[3]) == '''FOO.MODULE_SRC=$(d)/foo.rpgle
FOO.MODULE_DEP=$(HEADER).rpgleinc
FOO.MODULE_RECIPE=RPGLE_TO_MODULE_RECIPE
FOO.MODULE: TEXT := hardcoded for all mod
FOO.MODULE: TGTVER=V7R5
FOO.MODULE: private TEXT := foo is better
FOO.MODULE: TGTVER := V7R2\n'''

assert str(rules_mk) == '''MODULEs := BAR.MODULE FOO.MODULE\n\n
assert str(rules_mk) == '''MODULEs := BAR.MODULE AB2001_B.MODULE AB2001.B.MODULE FOO.MODULE\n\n
BAR.MODULE_SRC=$(d)/bar.rpgle
BAR.MODULE_DEP=bar.TABLE
BAR.MODULE_RECIPE=RPGLE_TO_MODULE_RECIPE
BAR.MODULE: TEXT := hardcoded for all mod
BAR.MODULE: COMMIT=*NONE
BAR.MODULE: TGTVER:=V7R3
AB2001_B.MODULE_SRC=$(d)/AB2001_B.rpgle
AB2001_B.MODULE_DEP=
AB2001_B.MODULE_RECIPE=RPGLE_TO_MODULE_RECIPE
AB2001_B.MODULE: TEXT := hardcoded for all mod
AB2001_B.MODULE: TGTRLS :=*PRV
AB2001.B.MODULE_SRC=$(d)/AB2001.B.rpgle
AB2001.B.MODULE_DEP=
AB2001.B.MODULE_RECIPE=RPGLE_TO_MODULE_RECIPE
AB2001.B.MODULE: TEXT := hardcoded for all mod
AB2001.B.MODULE: TGTRLS :=*PRV
FOO.MODULE_SRC=$(d)/foo.rpgle
FOO.MODULE_DEP=$(HEADER).rpgleinc
FOO.MODULE_RECIPE=RPGLE_TO_MODULE_RECIPE
Expand Down