Skip to content

Commit

Permalink
test: add unit tests for aliases
Browse files Browse the repository at this point in the history
  • Loading branch information
jkloetzke committed Jan 27, 2025
1 parent c6a6f67 commit 30523c8
Showing 1 changed file with 91 additions and 3 deletions.
94 changes: 91 additions & 3 deletions test/unit/test_input_recipeset.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ def setUp(self):
self.tmpdir = TemporaryDirectory()
os.chdir(self.tmpdir.name)
os.mkdir("recipes")
os.mkdir("classes")

def tearDown(self):
os.chdir(self.cwd)
Expand All @@ -38,15 +37,15 @@ def writeRecipe(self, name, content, layer=[]):
path = os.path.join("",
*(os.path.join("layers", l) for l in layer),
"recipes")
if path: os.makedirs(path, exist_ok=True)
os.makedirs(path, exist_ok=True)
with open(os.path.join(path, name+".yaml"), "w") as f:
f.write(textwrap.dedent(content))

def writeClass(self, name, content, layer=[]):
path = os.path.join("",
*(os.path.join("layers", l) for l in layer),
"classes")
if path: os.makedirs(path, exist_ok=True)
os.makedirs(path, exist_ok=True)
with open(os.path.join(path, name+".yaml"), "w") as f:
f.write(textwrap.dedent(content))

Expand All @@ -62,6 +61,14 @@ def writeDefault(self, content, layer=[]):
with open(os.path.join(path, "default.yaml"), "w") as f:
f.write(yaml.dump(content))

def writeAlias(self, name, content, layer=[]):
path = os.path.join("",
*(os.path.join("layers", l) for l in layer),
"aliases")
os.makedirs(path, exist_ok=True)
with open(os.path.join(path, name+".yaml"), "w") as f:
f.write(textwrap.dedent(content))

def generate(self, sandboxEnabled=False, env={}):
recipes = RecipeSet()
recipes.parse(env)
Expand Down Expand Up @@ -1932,3 +1939,84 @@ def testScmDefaultsUrl(self):
self.assertEqual(props["stripComponents"], 1)
self.assertEqual(props["fileName"], "downloaded_file")


class TestScmDefaults(RecipesTmp, TestCase):
"""Test recipe aliasing"""

def testGlobalAlias(self):
"""Test global alias"""
self.writeRecipe("root", """\
root: True
depends:
- virtual
buildScript: "true"
packageScript: "true"
""")
self.writeRecipe("real", """\
packageScript: "real"
""")
self.writeAlias("virtual", "real")
pkg = self.generate().walkPackagePath("root/virtual")
self.assertEqual(pkg.getName(), "virtual")
self.assertEqual(pkg.getRecipe().getName(), "real")

def testGlobalAliasRecursive(self):
"""Test global alias of an alias"""
self.writeRecipe("root", """\
root: True
depends:
- level1
buildScript: "true"
packageScript: "true"
""")
self.writeRecipe("real", """\
packageScript: "real"
""")
self.writeAlias("level1", "level2")
self.writeAlias("level2", "real")
pkg = self.generate().walkPackagePath("root/level1")
self.assertEqual(pkg.getName(), "level1")
self.assertEqual(pkg.getRecipe().getName(), "real")

def testLocalAlias(self):
"""Test that the same dependency can be named with different aliases"""
self.writeRecipe("root", """\
root: True
depends:
- name: real
alias: virtual1
- name: real
alias: virtual2
buildScript: "true"
packageScript: "true"
""")
self.writeRecipe("real", """\
packageScript: "real"
""")
packages = self.generate()
p1 = self.generate().walkPackagePath("root/virtual1")
p2 = self.generate().walkPackagePath("root/virtual2")
self.assertEqual(p1.getName(), "virtual1")
self.assertEqual(p1.getRecipe().getName(), "real")
self.assertEqual(p2.getName(), "virtual2")
self.assertEqual(p2.getRecipe().getName(), "real")
self.assertEqual(p1.getPackageStep().getVariantId(),
p2.getPackageStep().getVariantId())

def testLocalAliasWins(self):
"""A local alias works with global aliases"""
self.writeRecipe("root", """\
root: True
depends:
- name: virtual
alias: foo
buildScript: "true"
packageScript: "true"
""")
self.writeRecipe("real", """\
packageScript: "real"
""")
self.writeAlias("virtual", "real")
pkg = self.generate().walkPackagePath("root/foo")
self.assertEqual(pkg.getName(), "foo")
self.assertEqual(pkg.getRecipe().getName(), "real")

0 comments on commit 30523c8

Please sign in to comment.