diff --git a/e2e/binary/BUILD.bazel b/e2e/binary/BUILD.bazel index 12a2bf99e80503c8c7960482add9ac8c8c7d20e8..ede035ea54f5c456ab5ecf10210c8c69c79debe8 100644 --- a/e2e/binary/BUILD.bazel +++ b/e2e/binary/BUILD.bazel @@ -12,8 +12,9 @@ build_test( py_library( name = "pytest", srcs = [ + "__init__.py", "conftest.py", - "diff.py", + "difference.py", "relative.py", "runfile.py", "tool.py", diff --git a/e2e/binary/__init__.py b/e2e/binary/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..f79c189427d55c4680385037f927f24f87a82dec --- /dev/null +++ b/e2e/binary/__init__.py @@ -0,0 +1,7 @@ +from __future__ import annotations + +from binary.difference import Diff +from binary.relative import Relative +from binary.tool import Tool + +__all__ = ("Diff", "Tool", "Relative") diff --git a/e2e/binary/b2sum/digest.py b/e2e/binary/b2sum/digest.py index 987f41f859bcd6bf02184664d529d799a04ce8f0..bfe47245312de2896e10083c72c68afe90faf7b0 100644 --- a/e2e/binary/b2sum/digest.py +++ b/e2e/binary/b2sum/digest.py @@ -3,9 +3,7 @@ from __future__ import annotations from pathlib import Path from subprocess import run -from binary.diff import Diff -from binary.relative import Relative -from binary.tool import Tool +from binary import Diff, Relative, Tool def test_digest(tool: Tool, relative: Relative, tmp_path: Path) -> None: diff --git a/e2e/binary/brotli/roundtrip.py b/e2e/binary/brotli/roundtrip.py index af04d8fb261c5e28914631e0a999a2684ae03c8c..e9f67d1998d148b338e15c3366f3492dfc1c971d 100644 --- a/e2e/binary/brotli/roundtrip.py +++ b/e2e/binary/brotli/roundtrip.py @@ -4,9 +4,7 @@ from pathlib import Path from shutil import copyfileobj from subprocess import PIPE, Popen -from binary.diff import Diff -from binary.relative import Relative -from binary.tool import Tool +from binary import Diff, Relative, Tool def test_roundtrip(tool: Tool, relative: Relative, tmp_path: Path) -> None: diff --git a/e2e/binary/bzip2/roundtrip.py b/e2e/binary/bzip2/roundtrip.py index f2feaa654beba1a1815c97f29dee16004a6fc543..5ef47ea53145904318470871a1d772998eb0a8d4 100644 --- a/e2e/binary/bzip2/roundtrip.py +++ b/e2e/binary/bzip2/roundtrip.py @@ -4,9 +4,7 @@ from pathlib import Path from shutil import copyfileobj from subprocess import PIPE, Popen -from binary.diff import Diff -from binary.relative import Relative -from binary.tool import Tool +from binary import Diff, Relative, Tool def test_roundtrip(tool: Tool, relative: Relative, tmp_path: Path) -> None: diff --git a/e2e/binary/cmp/BUILD.bazel b/e2e/binary/cmp/BUILD.bazel index 02947c538a7a987cdf9ea2d4d3441cb6e0212f57..5e657eae152c7c7663598831b73f3400dc5cce2d 100644 --- a/e2e/binary/cmp/BUILD.bazel +++ b/e2e/binary/cmp/BUILD.bazel @@ -1,11 +1,33 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `cmp` +py_pytest_test( + name = "text", + size = "small", + srcs = ["text.py"], + data = [ + "a.txt", + "b.txt", + "expected.txt", + "@ape//ape:cmp", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "cmp", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:cmp"], + src = "@ape//ape:cmp", + args = ["--version"], +) + +test_suite( + name = "cmp", + tests = [ + ":text", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/cmp/a.txt b/e2e/binary/cmp/a.txt new file mode 100644 index 0000000000000000000000000000000000000000..d47fbf508c628c4e64c26511ec80caee66b35307 --- /dev/null +++ b/e2e/binary/cmp/a.txt @@ -0,0 +1,5 @@ +Hello, world! + +This is some text. + +This is some other text. diff --git a/e2e/binary/cmp/b.txt b/e2e/binary/cmp/b.txt new file mode 100644 index 0000000000000000000000000000000000000000..00a57ad52b904e6ea8b005658dbe7e0557d0beaf --- /dev/null +++ b/e2e/binary/cmp/b.txt @@ -0,0 +1,8 @@ +Hello, world? + +This is text. + + +This is some text. + +This is more text. diff --git a/e2e/binary/cmp/expected.txt b/e2e/binary/cmp/expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..7c963fafd7a75cff6fb19ceea3f470c7c5be6f10 --- /dev/null +++ b/e2e/binary/cmp/expected.txt @@ -0,0 +1 @@ +binary/cmp/a.txt binary/cmp/b.txt differ: char 13, line 1 diff --git a/e2e/binary/cmp/text.py b/e2e/binary/cmp/text.py new file mode 100644 index 0000000000000000000000000000000000000000..fe9e7b81bc1e93dc2618fc3b4baa388c9273a390 --- /dev/null +++ b/e2e/binary/cmp/text.py @@ -0,0 +1,23 @@ +from __future__ import annotations + +from pathlib import Path +from subprocess import run +from tarfile import REGTYPE, TarFile + +from binary import Diff, Relative, Tool + + +def test_normal(tool: Tool, relative: Relative, tmp_path: Path) -> None: + binary = tool("cmp") + a = relative("a.txt") + b = relative("b.txt") + expected = relative("expected.txt") + output = tmp_path / "output.txt" + + cmd = (binary, str(a), str(b)) + with open(output, "w", encoding="utf-8") as stream: + result = run(cmd, timeout=30, stdout=stream) + assert 1 == result.returncode + + with open(expected) as a, open(output) as b: + assert a.read() == b.read() diff --git a/e2e/binary/conftest.py b/e2e/binary/conftest.py index 4c98c8bca9adeec8bf68f24568d96ca40d1123c6..f85f9f59e437a5c7ce5d4d2ffca51c494675093c 100644 --- a/e2e/binary/conftest.py +++ b/e2e/binary/conftest.py @@ -2,12 +2,14 @@ from __future__ import annotations from pytest import fixture -from .diff import Diff -from .diff import repr as diff +from .difference import Diff +from .difference import repr as diff from .relative import Relative from .runfile import Runfile, SupportsRlocation, create from .tool import Tool +__all__ = ("Diff", "Relative", "Tool", "Runfile") + @fixture def runfiles() -> SupportsRlocation: diff --git a/e2e/binary/diff/BUILD.bazel b/e2e/binary/diff/BUILD.bazel index a4d660690422768205df253440db8d7f863df8f8..45fa9b5cd435f2cffe483b2c9d49902eaca4830c 100644 --- a/e2e/binary/diff/BUILD.bazel +++ b/e2e/binary/diff/BUILD.bazel @@ -1,11 +1,33 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `diff` +py_pytest_test( + name = "normal", + size = "small", + srcs = ["normal.py"], + data = [ + "a.txt", + "b.txt", + "expected.txt", + "@ape//ape:diff", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "diff", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:diff"], + src = "@ape//ape:diff", + args = ["--version"], +) + +test_suite( + name = "diff", + tests = [ + ":normal", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/diff/a.txt b/e2e/binary/diff/a.txt new file mode 100644 index 0000000000000000000000000000000000000000..d47fbf508c628c4e64c26511ec80caee66b35307 --- /dev/null +++ b/e2e/binary/diff/a.txt @@ -0,0 +1,5 @@ +Hello, world! + +This is some text. + +This is some other text. diff --git a/e2e/binary/diff/b.txt b/e2e/binary/diff/b.txt new file mode 100644 index 0000000000000000000000000000000000000000..00a57ad52b904e6ea8b005658dbe7e0557d0beaf --- /dev/null +++ b/e2e/binary/diff/b.txt @@ -0,0 +1,8 @@ +Hello, world? + +This is text. + + +This is some text. + +This is more text. diff --git a/e2e/binary/diff/expected.txt b/e2e/binary/diff/expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..cb9c196e8d72211010723e95f7426f51cc5930f2 --- /dev/null +++ b/e2e/binary/diff/expected.txt @@ -0,0 +1,11 @@ +1c1,4 +< Hello, world! +--- +> Hello, world? +> +> This is text. +> +5c8 +< This is some other text. +--- +> This is more text. diff --git a/e2e/binary/diff/normal.py b/e2e/binary/diff/normal.py new file mode 100644 index 0000000000000000000000000000000000000000..cb9a993140c28317a6628da0cbbc3a700ddc788d --- /dev/null +++ b/e2e/binary/diff/normal.py @@ -0,0 +1,23 @@ +from __future__ import annotations + +from pathlib import Path +from subprocess import run +from tarfile import REGTYPE, TarFile + +from binary import Diff, Relative, Tool + + +def test_normal(tool: Tool, relative: Relative, tmp_path: Path) -> None: + binary = tool("diff") + a = relative("a.txt") + b = relative("b.txt") + expected = relative("expected.txt") + output = tmp_path / "output.txt" + + cmd = (binary, str(a), str(b)) + with open(output, "w", encoding="utf-8") as stream: + result = run(cmd, timeout=30, stdout=stream) + assert 1 == result.returncode + + with open(expected) as a, open(output) as b: + assert a.read() == b.read() diff --git a/e2e/binary/diff3/BUILD.bazel b/e2e/binary/diff3/BUILD.bazel index 57ddfd71a14b20479eb65ad35e11f37cb932c12c..26e6bf0241232fbab6ebff9d153096e55dadfb1b 100644 --- a/e2e/binary/diff3/BUILD.bazel +++ b/e2e/binary/diff3/BUILD.bazel @@ -1,11 +1,35 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `diff3` +py_pytest_test( + name = "threeway", + size = "small", + srcs = ["threeway.py"], + data = [ + "a.txt", + "b.txt", + "c.txt", + "expected.txt", + "@ape//ape:diff", + "@ape//ape:diff3", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "diff3", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:diff3"], + src = "@ape//ape:diff3", + args = ["--version"], +) + +test_suite( + name = "diff3", + tests = [ + ":threeway", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/diff3/a.txt b/e2e/binary/diff3/a.txt new file mode 100644 index 0000000000000000000000000000000000000000..d47fbf508c628c4e64c26511ec80caee66b35307 --- /dev/null +++ b/e2e/binary/diff3/a.txt @@ -0,0 +1,5 @@ +Hello, world! + +This is some text. + +This is some other text. diff --git a/e2e/binary/diff3/b.txt b/e2e/binary/diff3/b.txt new file mode 100644 index 0000000000000000000000000000000000000000..00a57ad52b904e6ea8b005658dbe7e0557d0beaf --- /dev/null +++ b/e2e/binary/diff3/b.txt @@ -0,0 +1,8 @@ +Hello, world? + +This is text. + + +This is some text. + +This is more text. diff --git a/e2e/binary/diff3/c.txt b/e2e/binary/diff3/c.txt new file mode 100644 index 0000000000000000000000000000000000000000..13a7ca44c3f7e4555fc476a274294ab353c1d2f1 --- /dev/null +++ b/e2e/binary/diff3/c.txt @@ -0,0 +1,5 @@ +Hello, Earth! + +This is some words. + +This is some other text. diff --git a/e2e/binary/diff3/expected.txt b/e2e/binary/diff3/expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..3d3ec2a1e51b34ccf4e29af97ff1493342ead17a --- /dev/null +++ b/e2e/binary/diff3/expected.txt @@ -0,0 +1,23 @@ +==== +1:1c + Hello, world! +2:1c + Hello, world? +3:1c + Hello, Earth! +==== +1:3c + This is some text. +2:3c + This is text. +3:3c + This is some words. +====2 +1:5c +3:5c + This is some other text. +2:5,8c + + This is some text. + + This is more text. diff --git a/e2e/binary/diff3/threeway.py b/e2e/binary/diff3/threeway.py new file mode 100644 index 0000000000000000000000000000000000000000..252e15022e69f0d409df30290650bca8f247894c --- /dev/null +++ b/e2e/binary/diff3/threeway.py @@ -0,0 +1,24 @@ +from __future__ import annotations + +from pathlib import Path +from subprocess import run +from tarfile import REGTYPE, TarFile + +from binary import Diff, Relative, Tool + + +def test_threeway(tool: Tool, relative: Relative, tmp_path: Path) -> None: + binary = tool("diff3") + diff = tool("diff") + a = relative("a.txt") + b = relative("b.txt") + c = relative("c.txt") + expected = relative("expected.txt") + output = tmp_path / "output.txt" + + cmd = (binary, "--diff-program", str(diff), str(a), str(b), str(c)) + with open(output, "w", encoding="utf-8") as stream: + result = run(cmd, timeout=30, stdout=stream, check=True) + + with open(expected) as a, open(output) as b: + assert a.read() == b.read() diff --git a/e2e/binary/diff.py b/e2e/binary/difference.py similarity index 100% rename from e2e/binary/diff.py rename to e2e/binary/difference.py diff --git a/e2e/binary/gzip/roundtrip.py b/e2e/binary/gzip/roundtrip.py index 68a3d112c098188ce95252e4a39a242925a70b0e..3e83ebb5ff3e457d342b017ec0b1747df6032f17 100644 --- a/e2e/binary/gzip/roundtrip.py +++ b/e2e/binary/gzip/roundtrip.py @@ -4,9 +4,7 @@ from pathlib import Path from shutil import copyfileobj from subprocess import PIPE, Popen -from binary.diff import Diff -from binary.relative import Relative -from binary.tool import Tool +from binary import Diff, Relative, Tool def test_roundtrip(tool: Tool, relative: Relative, tmp_path: Path) -> None: diff --git a/e2e/binary/pigz/roundtrip.py b/e2e/binary/pigz/roundtrip.py index af06be6a35f4ae55f106ba8e198a2d1f1c3483ba..a1ee0d78c4a1893c5a24ad05ceb550a38dd5e934 100644 --- a/e2e/binary/pigz/roundtrip.py +++ b/e2e/binary/pigz/roundtrip.py @@ -4,9 +4,7 @@ from pathlib import Path from shutil import copyfileobj from subprocess import PIPE, Popen -from binary.diff import Diff -from binary.relative import Relative -from binary.tool import Tool +from binary import Diff, Relative, Tool def test_roundtrip(tool: Tool, relative: Relative, tmp_path: Path) -> None: diff --git a/e2e/binary/sdiff/BUILD.bazel b/e2e/binary/sdiff/BUILD.bazel index b176048402eb928b5ea36bef031150709be0a86c..db219d129b94873b3d2fac0efee2f9d37fc4f45e 100644 --- a/e2e/binary/sdiff/BUILD.bazel +++ b/e2e/binary/sdiff/BUILD.bazel @@ -1,11 +1,34 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `sdiff` +py_pytest_test( + name = "diff", + size = "small", + srcs = ["diff.py"], + data = [ + "a.txt", + "b.txt", + "expected.txt", + "@ape//ape:diff", + "@ape//ape:sdiff", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "sdiff", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:sdiff"], + src = "@ape//ape:sdiff", + args = ["--version"], +) + +test_suite( + name = "sdiff", + tests = [ + ":diff", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/sdiff/a.txt b/e2e/binary/sdiff/a.txt new file mode 100644 index 0000000000000000000000000000000000000000..d47fbf508c628c4e64c26511ec80caee66b35307 --- /dev/null +++ b/e2e/binary/sdiff/a.txt @@ -0,0 +1,5 @@ +Hello, world! + +This is some text. + +This is some other text. diff --git a/e2e/binary/sdiff/b.txt b/e2e/binary/sdiff/b.txt new file mode 100644 index 0000000000000000000000000000000000000000..00a57ad52b904e6ea8b005658dbe7e0557d0beaf --- /dev/null +++ b/e2e/binary/sdiff/b.txt @@ -0,0 +1,8 @@ +Hello, world? + +This is text. + + +This is some text. + +This is more text. diff --git a/e2e/binary/sdiff/diff.py b/e2e/binary/sdiff/diff.py new file mode 100644 index 0000000000000000000000000000000000000000..0402883f1c8271105802ae94cf99c5d7159c2e74 --- /dev/null +++ b/e2e/binary/sdiff/diff.py @@ -0,0 +1,24 @@ +from __future__ import annotations + +from pathlib import Path +from subprocess import run +from tarfile import REGTYPE, TarFile + +from binary import Diff, Relative, Tool + + +def test_diff(tool: Tool, relative: Relative, tmp_path: Path) -> None: + binary = tool("sdiff") + diff = tool("diff") + a = relative("a.txt") + b = relative("b.txt") + expected = relative("expected.txt") + output = tmp_path / "output.txt" + + cmd = (binary, f"--diff-program={diff}", "--width=80", str(a), str(b)) + with open(output, "w", encoding="utf-8") as stream: + result = run(cmd, timeout=30, stdout=stream) + assert 1 == result.returncode + + with open(expected) as a, open(output) as b: + assert a.read() == b.read() diff --git a/e2e/binary/sdiff/expected.txt b/e2e/binary/sdiff/expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..47e69649d1cd825f53355ff5f01be3ba3e18a46e --- /dev/null +++ b/e2e/binary/sdiff/expected.txt @@ -0,0 +1,8 @@ +Hello, world! | Hello, world? + > + > This is text. + > + +This is some text. This is some text. + +This is some other text. | This is more text. diff --git a/e2e/binary/sha1sum/BUILD.bazel b/e2e/binary/sha1sum/BUILD.bazel index 6feeb59d87a57f9e1c9b1afde962a74ad24f60b1..9dd80c3ef80b4e9e724d341d02af6d36776f6873 100644 --- a/e2e/binary/sha1sum/BUILD.bazel +++ b/e2e/binary/sha1sum/BUILD.bazel @@ -1,11 +1,32 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `sha1sum` +py_pytest_test( + name = "digest", + size = "small", + srcs = ["digest.py"], + data = [ + "expected.txt", + "fixture.txt", + "@ape//ape:sha1sum", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "sha1sum", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:sha1sum"], + src = "@ape//ape:sha1sum", + args = ["--version"], +) + +test_suite( + name = "sha1sum", + tests = [ + ":digest", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/sha1sum/digest.py b/e2e/binary/sha1sum/digest.py new file mode 100644 index 0000000000000000000000000000000000000000..823e85cac0d15f8e381d7ce9b6c11790fa9c5d94 --- /dev/null +++ b/e2e/binary/sha1sum/digest.py @@ -0,0 +1,18 @@ +from __future__ import annotations + +from pathlib import Path +from subprocess import run + +from binary import Diff, Relative, Tool + + +def test_digest(tool: Tool, relative: Relative, tmp_path: Path) -> None: + binary = tool("sha1sum") + fixture = relative("fixture.txt") + expected = relative("expected.txt") + output = tmp_path / "output.txt" + + cmd = (binary, fixture) + with open(output, "w") as stream: + run(cmd, check=True, timeout=30, stdout=stream) + assert Diff(expected) == Diff(output) diff --git a/e2e/binary/sha1sum/expected.txt b/e2e/binary/sha1sum/expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..10070fd0e7549111405b86592c9f8ef8574a2502 --- /dev/null +++ b/e2e/binary/sha1sum/expected.txt @@ -0,0 +1 @@ +da26efcfa9c587ccf6810916b71b581412d7e3d8 binary/sha1sum/fixture.txt diff --git a/e2e/binary/sha1sum/fixture.txt b/e2e/binary/sha1sum/fixture.txt new file mode 100644 index 0000000000000000000000000000000000000000..88797e251d099ccf5393917e2b5ed527fbdb6018 --- /dev/null +++ b/e2e/binary/sha1sum/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/sha224sum/BUILD.bazel b/e2e/binary/sha224sum/BUILD.bazel index cc9181a7959e8426aff0ce0db4ae25cc25fabe61..ca7557b8e535775c3cdf6574c5b388fe7407e6b1 100644 --- a/e2e/binary/sha224sum/BUILD.bazel +++ b/e2e/binary/sha224sum/BUILD.bazel @@ -1,11 +1,32 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `sha224sum` +py_pytest_test( + name = "digest", + size = "small", + srcs = ["digest.py"], + data = [ + "expected.txt", + "fixture.txt", + "@ape//ape:sha224sum", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "sha224sum", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:sha224sum"], + src = "@ape//ape:sha224sum", + args = ["--version"], +) + +test_suite( + name = "sha224sum", + tests = [ + ":digest", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/sha224sum/digest.py b/e2e/binary/sha224sum/digest.py new file mode 100644 index 0000000000000000000000000000000000000000..253c0470e713e65bb0438abaff362b8dd6399bb2 --- /dev/null +++ b/e2e/binary/sha224sum/digest.py @@ -0,0 +1,18 @@ +from __future__ import annotations + +from pathlib import Path +from subprocess import run + +from binary import Diff, Relative, Tool + + +def test_digest(tool: Tool, relative: Relative, tmp_path: Path) -> None: + binary = tool("sha224sum") + fixture = relative("fixture.txt") + expected = relative("expected.txt") + output = tmp_path / "output.txt" + + cmd = (binary, fixture) + with open(output, "w") as stream: + run(cmd, check=True, timeout=30, stdout=stream) + assert Diff(expected) == Diff(output) diff --git a/e2e/binary/sha224sum/expected.txt b/e2e/binary/sha224sum/expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..317a8359069fdca8852c42dbad024fd9cec0d42f --- /dev/null +++ b/e2e/binary/sha224sum/expected.txt @@ -0,0 +1 @@ +3457a8cafccfaba3724d3fe26b52aadf8cdbaa67b2eab96697314f58 binary/sha224sum/fixture.txt diff --git a/e2e/binary/sha224sum/fixture.txt b/e2e/binary/sha224sum/fixture.txt new file mode 100644 index 0000000000000000000000000000000000000000..88797e251d099ccf5393917e2b5ed527fbdb6018 --- /dev/null +++ b/e2e/binary/sha224sum/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/sha256sum/BUILD.bazel b/e2e/binary/sha256sum/BUILD.bazel index b2f7947bda07c2a0bd3cd1093558455e08ae7df9..abeff9e667da980acf60f21fc1abfb056bd812d4 100644 --- a/e2e/binary/sha256sum/BUILD.bazel +++ b/e2e/binary/sha256sum/BUILD.bazel @@ -1,11 +1,32 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `sha256sum` +py_pytest_test( + name = "digest", + size = "small", + srcs = ["digest.py"], + data = [ + "expected.txt", + "fixture.txt", + "@ape//ape:sha256sum", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "sha256sum", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:sha256sum"], + src = "@ape//ape:sha256sum", + args = ["--version"], +) + +test_suite( + name = "sha256sum", + tests = [ + ":digest", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/sha256sum/digest.py b/e2e/binary/sha256sum/digest.py new file mode 100644 index 0000000000000000000000000000000000000000..3c1cad179ef8c380b5b5d25501b7856ed5cbf656 --- /dev/null +++ b/e2e/binary/sha256sum/digest.py @@ -0,0 +1,18 @@ +from __future__ import annotations + +from pathlib import Path +from subprocess import run + +from binary import Diff, Relative, Tool + + +def test_digest(tool: Tool, relative: Relative, tmp_path: Path) -> None: + binary = tool("sha256sum") + fixture = relative("fixture.txt") + expected = relative("expected.txt") + output = tmp_path / "output.txt" + + cmd = (binary, fixture) + with open(output, "w") as stream: + run(cmd, check=True, timeout=30, stdout=stream) + assert Diff(expected) == Diff(output) diff --git a/e2e/binary/sha256sum/expected.txt b/e2e/binary/sha256sum/expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..a17af283cf02aa55721cadf11c65d0dc7270475b --- /dev/null +++ b/e2e/binary/sha256sum/expected.txt @@ -0,0 +1 @@ +1ff074cefa09b04a3761b03243a19098ae0b8f38e2f4cdf84a9c4991a9992efe binary/sha256sum/fixture.txt diff --git a/e2e/binary/sha256sum/fixture.txt b/e2e/binary/sha256sum/fixture.txt new file mode 100644 index 0000000000000000000000000000000000000000..88797e251d099ccf5393917e2b5ed527fbdb6018 --- /dev/null +++ b/e2e/binary/sha256sum/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/sha384sum/BUILD.bazel b/e2e/binary/sha384sum/BUILD.bazel index 4fbbdce5f909e3ba56a7be3dcde4a551bb375a2b..c1112fb483dbf1afed1318b8c91ccfaf630ad6b5 100644 --- a/e2e/binary/sha384sum/BUILD.bazel +++ b/e2e/binary/sha384sum/BUILD.bazel @@ -1,11 +1,32 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `sha384sum` +py_pytest_test( + name = "digest", + size = "small", + srcs = ["digest.py"], + data = [ + "expected.txt", + "fixture.txt", + "@ape//ape:sha384sum", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "sha384sum", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:sha384sum"], + src = "@ape//ape:sha384sum", + args = ["--version"], +) + +test_suite( + name = "sha384sum", + tests = [ + ":digest", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/sha384sum/digest.py b/e2e/binary/sha384sum/digest.py new file mode 100644 index 0000000000000000000000000000000000000000..99ac9dd8e768b77cded1e4f829496fe2474d98e5 --- /dev/null +++ b/e2e/binary/sha384sum/digest.py @@ -0,0 +1,18 @@ +from __future__ import annotations + +from pathlib import Path +from subprocess import run + +from binary import Diff, Relative, Tool + + +def test_digest(tool: Tool, relative: Relative, tmp_path: Path) -> None: + binary = tool("sha384sum") + fixture = relative("fixture.txt") + expected = relative("expected.txt") + output = tmp_path / "output.txt" + + cmd = (binary, fixture) + with open(output, "w") as stream: + run(cmd, check=True, timeout=30, stdout=stream) + assert Diff(expected) == Diff(output) diff --git a/e2e/binary/sha384sum/expected.txt b/e2e/binary/sha384sum/expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..58c786c6a745a6b0f608453aa99d5a4b5b2fce3b --- /dev/null +++ b/e2e/binary/sha384sum/expected.txt @@ -0,0 +1 @@ +6918d7e713940673a31774238baf4abc764932f1b319c3e9c5bd85c63611f31741fcb567c2a6bbc58f464ca707ca38eb binary/sha384sum/fixture.txt diff --git a/e2e/binary/sha384sum/fixture.txt b/e2e/binary/sha384sum/fixture.txt new file mode 100644 index 0000000000000000000000000000000000000000..88797e251d099ccf5393917e2b5ed527fbdb6018 --- /dev/null +++ b/e2e/binary/sha384sum/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/sha512sum/BUILD.bazel b/e2e/binary/sha512sum/BUILD.bazel index 367f38b676b791495b55ef03bab5e242d9299734..526f7a463571f50bb3beab73342057c06f0bc609 100644 --- a/e2e/binary/sha512sum/BUILD.bazel +++ b/e2e/binary/sha512sum/BUILD.bazel @@ -1,11 +1,32 @@ -load("@bazel_skylib//rules:build_test.bzl", "build_test") +load("@rules_python_pytest//python_pytest:defs.bzl", "py_pytest_test") +load("@bazel_skylib//rules:native_binary.bzl", "native_test") -# TODO: write an _actual_ test for `sha512sum` +py_pytest_test( + name = "digest", + size = "small", + srcs = ["digest.py"], + data = [ + "expected.txt", + "fixture.txt", + "@ape//ape:sha512sum", + ], + deps = [ + "//binary:pytest", + ], +) -build_test( - name = "sha512sum", +native_test( + name = "version", size = "small", - tags = ["stub"], - targets = ["@ape//ape:sha512sum"], + src = "@ape//ape:sha512sum", + args = ["--version"], +) + +test_suite( + name = "sha512sum", + tests = [ + ":digest", + ":version", + ], visibility = ["//:__subpackages__"], ) diff --git a/e2e/binary/sha512sum/digest.py b/e2e/binary/sha512sum/digest.py new file mode 100644 index 0000000000000000000000000000000000000000..9d3f6313bd0163cba52455a51cb1af1ba7431e04 --- /dev/null +++ b/e2e/binary/sha512sum/digest.py @@ -0,0 +1,18 @@ +from __future__ import annotations + +from pathlib import Path +from subprocess import run + +from binary import Diff, Relative, Tool + + +def test_digest(tool: Tool, relative: Relative, tmp_path: Path) -> None: + binary = tool("sha512sum") + fixture = relative("fixture.txt") + expected = relative("expected.txt") + output = tmp_path / "output.txt" + + cmd = (binary, fixture) + with open(output, "w") as stream: + run(cmd, check=True, timeout=30, stdout=stream) + assert Diff(expected) == Diff(output) diff --git a/e2e/binary/sha512sum/expected.txt b/e2e/binary/sha512sum/expected.txt new file mode 100644 index 0000000000000000000000000000000000000000..6cc33e8e8915a44c572e8c0cea58c81f302a0d21 --- /dev/null +++ b/e2e/binary/sha512sum/expected.txt @@ -0,0 +1 @@ +32da170d2efb47d067941acc9a79b59d99a0e2ce86b465dabaa25716bff0b336a908fdd386591aa0cefec2c370bcb4e183a34af2554a1fc676fe0931b3b44a60 binary/sha512sum/fixture.txt diff --git a/e2e/binary/sha512sum/fixture.txt b/e2e/binary/sha512sum/fixture.txt new file mode 100644 index 0000000000000000000000000000000000000000..88797e251d099ccf5393917e2b5ed527fbdb6018 --- /dev/null +++ b/e2e/binary/sha512sum/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/xz/roundtrip.py b/e2e/binary/xz/roundtrip.py index dc7688636f849c1f3d8b4e9b52869cadf633f2b6..f2c3cda260bcf8a7a94eb1dee2cd5c1771f59f40 100644 --- a/e2e/binary/xz/roundtrip.py +++ b/e2e/binary/xz/roundtrip.py @@ -4,9 +4,7 @@ from pathlib import Path from shutil import copyfileobj from subprocess import PIPE, Popen -from binary.diff import Diff -from binary.relative import Relative -from binary.tool import Tool +from binary import Diff, Relative, Tool def test_roundtrip(tool: Tool, relative: Relative, tmp_path: Path) -> None: diff --git a/e2e/binary/zstd/roundtrip.py b/e2e/binary/zstd/roundtrip.py index 71d2b3e89ff9c2ca831dc9e69b16a8a8640fc0e0..3d633609d319d64338bdfe30cf98b39735b29700 100644 --- a/e2e/binary/zstd/roundtrip.py +++ b/e2e/binary/zstd/roundtrip.py @@ -4,9 +4,7 @@ from pathlib import Path from shutil import copyfileobj from subprocess import PIPE, Popen -from binary.diff import Diff -from binary.relative import Relative -from binary.tool import Tool +from binary import Diff, Relative, Tool def test_roundtrip(tool: Tool, relative: Relative, tmp_path: Path) -> None: