From 3d54770f10420a8d1015d4de801d470be73ce26b Mon Sep 17 00:00:00 2001 From: Anjali Kumar Date: Fri, 30 May 2025 11:09:28 +0100 Subject: [PATCH 1/2] test(printf): add native and pytest tests --- e2e/binary/printf/BUILD.bazel | 31 +++++++++++++++++++++++++------ e2e/binary/printf/copy.py | 17 +++++++++++++++++ e2e/binary/printf/expected.txt | 19 +++++++++++++++++++ e2e/binary/printf/fixture.txt | 19 +++++++++++++++++++ e2e/binary/printf/printf.py | 17 +++++++++++++++++ 5 files changed, 97 insertions(+), 6 deletions(-) create mode 100644 e2e/binary/printf/copy.py create mode 100644 e2e/binary/printf/expected.txt create mode 100644 e2e/binary/printf/fixture.txt create mode 100644 e2e/binary/printf/printf.py diff --git a/e2e/binary/printf/BUILD.bazel b/e2e/binary/printf/BUILD.bazel index 6afff82e..d6b3ac00 100644 --- a/e2e/binary/printf/BUILD.bazel +++ b/e2e/binary/printf/BUILD.bazel @@ -1,11 +1,30 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") -# TODO: write an _actual_ test for `printf` +py_pytest_test( + name = "pytest", + size = "small", + srcs = ["printf.py"], + data = [ + "@ape//ape:printf", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "printf", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:printf"], + src = "@ape//ape:printf", + args = ["--version"], +) + +test_suite( + name = "printf", + tests = [ + "pytest", + "version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/printf/copy.py b/e2e/binary/printf/copy.py new file mode 100644 index 00000000..00c1be49 --- /dev/null +++ b/e2e/binary/printf/copy.py @@ -0,0 +1,17 @@ +from __future__ import annotations + +from pathlib import Path +from subprocess import run + +from binary import Diff, Relative, Tool + + +def test_copy(tool: Tool, relative: Relative, tmp_path: Path) -> None: + binary = tool("cp") + fixture = relative("fixture.txt") + expected = relative("expected.txt") + output = tmp_path / "output.txt" + + cmd = (binary, fixture, output) + run(cmd, check=True, timeout=30) + assert Diff(expected) == Diff(output) diff --git a/e2e/binary/printf/expected.txt b/e2e/binary/printf/expected.txt new file mode 100644 index 00000000..88797e25 --- /dev/null +++ b/e2e/binary/printf/expected.txt @@ -0,0 +1,19 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat at risus a sagittis. Suspendisse potenti. Ut efficitur metus eu leo condimentum, sit amet efficitur mi tempus. Duis sit amet efficitur elit. Duis a ultrices massa. In hac habitasse platea dictumst. Integer vitae nibh tristique, tempus quam eget, sodales sem. + +Maecenas dapibus diam turpis, non tempor tellus facilisis a. Suspendisse congue tortor ut nisl egestas, et cursus mauris congue. Nullam vitae metus ultricies, rhoncus nibh a, hendrerit neque. Integer ut dictum tortor. Vivamus ligula sem, viverra nec laoreet rutrum, tempor quis felis. Sed eu ex tempus, consectetur tellus id, facilisis quam. Ut at libero vel diam imperdiet mollis. Vestibulum at dolor nec magna consequat porta. Integer ornare metus sit amet sem hendrerit semper. Duis convallis magna vitae ullamcorper auctor. Donec eu massa eget erat pulvinar scelerisque. Ut feugiat lectus non neque suscipit, a mollis dolor ornare. + +Mauris mi est, feugiat eget ante quis, cursus ultricies ante. Nunc sed magna magna. Quisque vitae mattis diam, vel eleifend nisi. Ut ultrices tincidunt mi sit amet vulputate. Fusce at aliquam justo. Nam a maximus felis, eget viverra arcu. Sed sapien odio, dapibus nec justo ut, maximus dignissim dui. Nam accumsan vitae urna imperdiet maximus. Nam gravida, ante id facilisis placerat, augue sem tincidunt dolor, at eleifend dui tortor ut nunc. In vestibulum lorem elit, at dignissim urna hendrerit vel. Nulla nisl erat, lobortis at neque in, ultrices lacinia tortor. Sed id faucibus ex. Vivamus ultrices magna non metus pretium, ut dapibus felis tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer sollicitudin elit sit amet lectus maximus consequat id sit amet massa. Vivamus iaculis arcu sit amet metus gravida finibus. + +Maecenas orci odio, posuere eu consequat ut, posuere in dui. Pellentesque tincidunt ex lorem, non dignissim nibh elementum et. Nullam non finibus est. Nunc sed nisi eu tellus pulvinar auctor a in tortor. Ut risus tellus, pharetra in turpis vel, pretium laoreet quam. Donec sagittis leo sed porttitor lacinia. Sed ullamcorper laoreet metus, non feugiat metus consectetur at. In molestie congue lacus, quis tristique lacus vulputate sit amet. Vestibulum pharetra bibendum dui eget laoreet. Duis at felis consectetur, suscipit sapien consectetur, congue nibh. Aliquam egestas sagittis tortor, nec eleifend lectus pretium eget. Fusce nec nisl nec augue egestas aliquam ac finibus augue. Vestibulum a lectus et ex lobortis auctor. Donec quis tempus turpis, cursus ultrices arcu. Integer vel dui vehicula, consequat massa eget, feugiat eros. + +Fusce sollicitudin feugiat quam nec tincidunt. Sed non mattis tortor. Curabitur et leo nec neque mollis facilisis ac pellentesque dolor. Praesent faucibus odio ac condimentum facilisis. Pellentesque accumsan a nisi vitae maximus. Praesent pharetra vel nibh nec accumsan. Nam sit amet interdum tellus. Mauris euismod aliquet eros sed sollicitudin. Suspendisse fermentum urna et tempus bibendum. Praesent euismod dui ut efficitur aliquam. Cras eu fringilla tortor. + +Integer aliquet a nibh a rutrum. Sed ornare nisi magna, vitae fringilla massa sollicitudin eget. Ut hendrerit interdum vestibulum. Aenean ut felis consequat odio dapibus sagittis. Ut quis mauris lorem. Duis sollicitudin posuere mi, non suscipit erat. Nunc libero enim, finibus sit amet erat id, interdum semper eros. Aliquam eget ligula dui. Proin feugiat diam neque, sit amet pellentesque odio finibus eget. Phasellus feugiat nisl erat, non porttitor elit suscipit eget. Aenean luctus tortor arcu, vitae tempus enim feugiat non. Praesent feugiat dapibus est. Ut ullamcorper justo eleifend diam pretium, ultricies sagittis neque dapibus. Aliquam ut massa dolor. + +Vestibulum quis rutrum lacus. In hac habitasse platea dictumst. Proin porttitor risus et dapibus facilisis. Vestibulum ac dolor quis orci tempus molestie sit amet in mi. Aenean nisl urna, volutpat id purus a, pellentesque pretium metus. Maecenas convallis eros eget est rhoncus, non gravida justo feugiat. Sed bibendum elit a lacus ultrices blandit. Cras vel dui nibh. Ut gravida id erat quis posuere. Mauris condimentum eget ante et semper. Integer ornare egestas purus, quis efficitur ex. Nam dignissim diam orci. Cras dapibus scelerisque sapien, molestie gravida orci congue in. Mauris sed vulputate nisl, non fringilla lacus. Nam venenatis dui bibendum placerat finibus. Integer id lectus sit amet metus hendrerit rutrum a ac lorem. + +Aenean at lectus vel libero tristique rhoncus nec ut lorem. Aliquam eget massa nec nibh ornare facilisis in vitae libero. Cras rhoncus porttitor elementum. Ut quam ipsum, pellentesque sit amet hendrerit non, scelerisque sit amet nibh. Cras ultrices, erat sed tristique aliquet, mi felis vulputate mauris, eu mattis neque felis non diam. Nulla dapibus turpis vitae gravida euismod. Donec non tempus augue. Etiam lacinia ex sit amet sapien tempor lobortis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Fusce molestie ante rhoncus fringilla convallis. Nullam tristique id lectus a egestas. In bibendum molestie ultricies. Suspendisse quis auctor enim. Morbi pellentesque rhoncus lacinia. + +Fusce consectetur velit at nisl accumsan laoreet. Etiam convallis dignissim ligula at congue. Nunc varius dui consectetur, aliquam urna non, bibendum felis. In a convallis enim. Nullam leo dolor, pretium id tristique ut, posuere sed sem. Proin vehicula, orci ut imperdiet pellentesque, velit magna accumsan purus, id viverra orci tellus eu tortor. Nullam rhoncus id odio ut elementum. Nullam condimentum eget mi quis aliquam. + +Ut posuere dolor vitae eros tempus, at varius dolor vestibulum. Cras venenatis odio gravida nisl viverra, nec imperdiet libero lobortis. Suspendisse potenti. Aenean varius, sapien et mollis sagittis, massa justo placerat nisi, id feugiat nunc nunc sit amet nisi. Nullam in sem id nisl vehicula tincidunt non vitae risus. Vestibulum dapibus, enim sed lacinia laoreet, lorem massa fermentum urna, et ornare nunc nibh ut sem. Fusce nisi arcu, feugiat eget erat vitae, fermentum porta ligula. Aenean in felis at ex vulputate dapibus id quis magna. Suspendisse semper rutrum eleifend. Donec mi felis, scelerisque id justo et, semper interdum libero. Proin sit amet tempor velit. Suspendisse eget dui orci. Sed accumsan tortor at nunc scelerisque dignissim. Mauris vestibulum, massa sit amet interdum egestas, erat sapien hendrerit nisi, quis sagittis ex ipsum pellentesque est. Duis sapien ante, finibus in nisi in, vestibulum semper libero. diff --git a/e2e/binary/printf/fixture.txt b/e2e/binary/printf/fixture.txt new file mode 100644 index 00000000..88797e25 --- /dev/null +++ b/e2e/binary/printf/fixture.txt @@ -0,0 +1,19 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum placerat at risus a sagittis. Suspendisse potenti. Ut efficitur metus eu leo condimentum, sit amet efficitur mi tempus. Duis sit amet efficitur elit. Duis a ultrices massa. In hac habitasse platea dictumst. Integer vitae nibh tristique, tempus quam eget, sodales sem. + +Maecenas dapibus diam turpis, non tempor tellus facilisis a. Suspendisse congue tortor ut nisl egestas, et cursus mauris congue. Nullam vitae metus ultricies, rhoncus nibh a, hendrerit neque. Integer ut dictum tortor. Vivamus ligula sem, viverra nec laoreet rutrum, tempor quis felis. Sed eu ex tempus, consectetur tellus id, facilisis quam. Ut at libero vel diam imperdiet mollis. Vestibulum at dolor nec magna consequat porta. Integer ornare metus sit amet sem hendrerit semper. Duis convallis magna vitae ullamcorper auctor. Donec eu massa eget erat pulvinar scelerisque. Ut feugiat lectus non neque suscipit, a mollis dolor ornare. + +Mauris mi est, feugiat eget ante quis, cursus ultricies ante. Nunc sed magna magna. Quisque vitae mattis diam, vel eleifend nisi. Ut ultrices tincidunt mi sit amet vulputate. Fusce at aliquam justo. Nam a maximus felis, eget viverra arcu. Sed sapien odio, dapibus nec justo ut, maximus dignissim dui. Nam accumsan vitae urna imperdiet maximus. Nam gravida, ante id facilisis placerat, augue sem tincidunt dolor, at eleifend dui tortor ut nunc. In vestibulum lorem elit, at dignissim urna hendrerit vel. Nulla nisl erat, lobortis at neque in, ultrices lacinia tortor. Sed id faucibus ex. Vivamus ultrices magna non metus pretium, ut dapibus felis tristique. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Integer sollicitudin elit sit amet lectus maximus consequat id sit amet massa. Vivamus iaculis arcu sit amet metus gravida finibus. + +Maecenas orci odio, posuere eu consequat ut, posuere in dui. Pellentesque tincidunt ex lorem, non dignissim nibh elementum et. Nullam non finibus est. Nunc sed nisi eu tellus pulvinar auctor a in tortor. Ut risus tellus, pharetra in turpis vel, pretium laoreet quam. Donec sagittis leo sed porttitor lacinia. Sed ullamcorper laoreet metus, non feugiat metus consectetur at. In molestie congue lacus, quis tristique lacus vulputate sit amet. Vestibulum pharetra bibendum dui eget laoreet. Duis at felis consectetur, suscipit sapien consectetur, congue nibh. Aliquam egestas sagittis tortor, nec eleifend lectus pretium eget. Fusce nec nisl nec augue egestas aliquam ac finibus augue. Vestibulum a lectus et ex lobortis auctor. Donec quis tempus turpis, cursus ultrices arcu. Integer vel dui vehicula, consequat massa eget, feugiat eros. + +Fusce sollicitudin feugiat quam nec tincidunt. Sed non mattis tortor. Curabitur et leo nec neque mollis facilisis ac pellentesque dolor. Praesent faucibus odio ac condimentum facilisis. Pellentesque accumsan a nisi vitae maximus. Praesent pharetra vel nibh nec accumsan. Nam sit amet interdum tellus. Mauris euismod aliquet eros sed sollicitudin. Suspendisse fermentum urna et tempus bibendum. Praesent euismod dui ut efficitur aliquam. Cras eu fringilla tortor. + +Integer aliquet a nibh a rutrum. Sed ornare nisi magna, vitae fringilla massa sollicitudin eget. Ut hendrerit interdum vestibulum. Aenean ut felis consequat odio dapibus sagittis. Ut quis mauris lorem. Duis sollicitudin posuere mi, non suscipit erat. Nunc libero enim, finibus sit amet erat id, interdum semper eros. Aliquam eget ligula dui. Proin feugiat diam neque, sit amet pellentesque odio finibus eget. Phasellus feugiat nisl erat, non porttitor elit suscipit eget. Aenean luctus tortor arcu, vitae tempus enim feugiat non. Praesent feugiat dapibus est. Ut ullamcorper justo eleifend diam pretium, ultricies sagittis neque dapibus. Aliquam ut massa dolor. + +Vestibulum quis rutrum lacus. In hac habitasse platea dictumst. Proin porttitor risus et dapibus facilisis. Vestibulum ac dolor quis orci tempus molestie sit amet in mi. Aenean nisl urna, volutpat id purus a, pellentesque pretium metus. Maecenas convallis eros eget est rhoncus, non gravida justo feugiat. Sed bibendum elit a lacus ultrices blandit. Cras vel dui nibh. Ut gravida id erat quis posuere. Mauris condimentum eget ante et semper. Integer ornare egestas purus, quis efficitur ex. Nam dignissim diam orci. Cras dapibus scelerisque sapien, molestie gravida orci congue in. Mauris sed vulputate nisl, non fringilla lacus. Nam venenatis dui bibendum placerat finibus. Integer id lectus sit amet metus hendrerit rutrum a ac lorem. + +Aenean at lectus vel libero tristique rhoncus nec ut lorem. Aliquam eget massa nec nibh ornare facilisis in vitae libero. Cras rhoncus porttitor elementum. Ut quam ipsum, pellentesque sit amet hendrerit non, scelerisque sit amet nibh. Cras ultrices, erat sed tristique aliquet, mi felis vulputate mauris, eu mattis neque felis non diam. Nulla dapibus turpis vitae gravida euismod. Donec non tempus augue. Etiam lacinia ex sit amet sapien tempor lobortis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Fusce molestie ante rhoncus fringilla convallis. Nullam tristique id lectus a egestas. In bibendum molestie ultricies. Suspendisse quis auctor enim. Morbi pellentesque rhoncus lacinia. + +Fusce consectetur velit at nisl accumsan laoreet. Etiam convallis dignissim ligula at congue. Nunc varius dui consectetur, aliquam urna non, bibendum felis. In a convallis enim. Nullam leo dolor, pretium id tristique ut, posuere sed sem. Proin vehicula, orci ut imperdiet pellentesque, velit magna accumsan purus, id viverra orci tellus eu tortor. Nullam rhoncus id odio ut elementum. Nullam condimentum eget mi quis aliquam. + +Ut posuere dolor vitae eros tempus, at varius dolor vestibulum. Cras venenatis odio gravida nisl viverra, nec imperdiet libero lobortis. Suspendisse potenti. Aenean varius, sapien et mollis sagittis, massa justo placerat nisi, id feugiat nunc nunc sit amet nisi. Nullam in sem id nisl vehicula tincidunt non vitae risus. Vestibulum dapibus, enim sed lacinia laoreet, lorem massa fermentum urna, et ornare nunc nibh ut sem. Fusce nisi arcu, feugiat eget erat vitae, fermentum porta ligula. Aenean in felis at ex vulputate dapibus id quis magna. Suspendisse semper rutrum eleifend. Donec mi felis, scelerisque id justo et, semper interdum libero. Proin sit amet tempor velit. Suspendisse eget dui orci. Sed accumsan tortor at nunc scelerisque dignissim. Mauris vestibulum, massa sit amet interdum egestas, erat sapien hendrerit nisi, quis sagittis ex ipsum pellentesque est. Duis sapien ante, finibus in nisi in, vestibulum semper libero. diff --git a/e2e/binary/printf/printf.py b/e2e/binary/printf/printf.py new file mode 100644 index 00000000..3e0867a5 --- /dev/null +++ b/e2e/binary/printf/printf.py @@ -0,0 +1,17 @@ +from __future__ import annotations + +from pathlib import Path +from subprocess import run + +from binary import Diff, Relative, Tool + + +def test_wc(tool: Tool, relative: Relative, tmp_path: Path) -> None: + binary = tool("printf") + output = tmp_path / "output.txt" + + cmd = (binary, "Hello, world!") + with open(output, "w") as stream, open(cmd, "rb") as stdin: + run(cmd, check=True, timeout=30, stdout=stream, stdin=stdin, text=True) + + assert output.stdout.rstrip() == "Hello, world!" -- GitLab From 4c7b1f9f3622cd59f45a2c73451e79137b82e037 Mon Sep 17 00:00:00 2001 From: Anjali Kumar Date: Fri, 30 May 2025 11:09:28 +0100 Subject: [PATCH 2/2] test(printf): add native and pytest tests --- e2e/binary/printf/BUILD.bazel | 31 +++++++++++++++++++++++++------ e2e/binary/printf/printf.py | 17 +++++++++++++++++ 2 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 e2e/binary/printf/printf.py diff --git a/e2e/binary/printf/BUILD.bazel b/e2e/binary/printf/BUILD.bazel index 6afff82e..d6b3ac00 100644 --- a/e2e/binary/printf/BUILD.bazel +++ b/e2e/binary/printf/BUILD.bazel @@ -1,11 +1,30 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") -# TODO: write an _actual_ test for `printf` +py_pytest_test( + name = "pytest", + size = "small", + srcs = ["printf.py"], + data = [ + "@ape//ape:printf", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "printf", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:printf"], + src = "@ape//ape:printf", + args = ["--version"], +) + +test_suite( + name = "printf", + tests = [ + "pytest", + "version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/printf/printf.py b/e2e/binary/printf/printf.py new file mode 100644 index 00000000..3e0867a5 --- /dev/null +++ b/e2e/binary/printf/printf.py @@ -0,0 +1,17 @@ +from __future__ import annotations + +from pathlib import Path +from subprocess import run + +from binary import Diff, Relative, Tool + + +def test_wc(tool: Tool, relative: Relative, tmp_path: Path) -> None: + binary = tool("printf") + output = tmp_path / "output.txt" + + cmd = (binary, "Hello, world!") + with open(output, "w") as stream, open(cmd, "rb") as stdin: + run(cmd, check=True, timeout=30, stdout=stream, stdin=stdin, text=True) + + assert output.stdout.rstrip() == "Hello, world!" -- GitLab