repositories / termux-janitor
termux-janitor
Interactive cleanup assistant for Termux: transparent, safe, confirmed disk reclamation.
owned by admin
tests/fixtures/android_allowlist.zig
Rawconst std = @import("std");
const spec_data = @import("spec_data");
const expected_identifiers = [_][]const u8{
"com.termux",
"com.termux.api",
"com.termux.boot",
"com.termux.float",
"com.termux.gui",
"com.termux.styling",
"com.termux.tasker",
"com.termux.widget",
"com.termux.x11",
};
pub const Fixture = struct {
given: bool = false,
inspected: bool = false,
pub fn init() !Fixture {
return .{};
}
pub fn deinit(fixture: *Fixture) void {
fixture.* = undefined;
}
pub fn given_generated_android_allowlist(fixture: *Fixture) !void {
std.debug.assert(!fixture.given);
try std.testing.expectEqual(expected_identifiers.len, spec_data.android_packages.len);
fixture.given = true;
}
pub fn when_inspect_android_allowlist(fixture: *Fixture) !void {
std.debug.assert(fixture.given);
std.debug.assert(!fixture.inspected);
fixture.inspected = true;
}
pub fn then_inv_android_allowlist_identities(fixture: *Fixture) !void {
std.debug.assert(fixture.inspected);
for (expected_identifiers, 0..) |identifier, index| {
try std.testing.expectEqualStrings(
identifier,
spec_data.android_packages[index].identifier,
);
for (spec_data.android_packages[0..index]) |previous| {
try std.testing.expect(!std.mem.eql(u8, previous.identifier, identifier));
}
}
}
pub fn then_inv_android_allowlist_roles(fixture: *Fixture) !void {
std.debug.assert(fixture.inspected);
for (spec_data.android_packages) |package| {
if (std.mem.eql(u8, package.identifier, "com.termux")) {
try std.testing.expectEqual(spec_data.AndroidPackageRole.base, package.role);
} else {
try std.testing.expectEqual(spec_data.AndroidPackageRole.add_on, package.role);
}
}
}
pub fn forbid_no_android_allowlist_base_addon(fixture: *Fixture) !void {
std.debug.assert(fixture.inspected);
for (spec_data.android_packages) |package| {
if (std.mem.eql(u8, package.identifier, "com.termux")) {
try std.testing.expect(package.role != .add_on);
}
}
}
};