actually run the generated tests

This commit is contained in:
Emil Lerch 2025-07-19 13:17:29 -07:00
parent 39f872b4f2
commit fa061e7353
Signed by: lobo
GPG key ID: A7B62D657EF764F8
5 changed files with 28 additions and 27 deletions

View file

@ -495,4 +495,9 @@ test "Age-based release filtering" {
test { test {
std.testing.refAllDecls(@import("timestamp_tests.zig")); std.testing.refAllDecls(@import("timestamp_tests.zig"));
std.testing.refAllDecls(@import("atom.zig")); std.testing.refAllDecls(@import("atom.zig"));
std.testing.refAllDecls(@import("utils.zig"));
std.testing.refAllDecls(@import("providers/GitHub.zig"));
std.testing.refAllDecls(@import("providers/GitLab.zig"));
std.testing.refAllDecls(@import("providers/SourceHut.zig"));
std.testing.refAllDecls(@import("providers/Codeberg.zig"));
} }

View file

@ -315,7 +315,7 @@ test "codeberg release parsing with live data snapshot" {
const release = Release{ const release = Release{
.repo_name = try allocator.dupe(u8, "example/project"), .repo_name = try allocator.dupe(u8, "example/project"),
.tag_name = try allocator.dupe(u8, tag_name_value.string), .tag_name = try allocator.dupe(u8, tag_name_value.string),
.published_at = try allocator.dupe(u8, published_at_value.string), .published_at = try utils.parseReleaseTimestamp(published_at_value.string),
.html_url = try allocator.dupe(u8, html_url_value.string), .html_url = try allocator.dupe(u8, html_url_value.string),
.description = try allocator.dupe(u8, body_str), .description = try allocator.dupe(u8, body_str),
.provider = try allocator.dupe(u8, "codeberg"), .provider = try allocator.dupe(u8, "codeberg"),
@ -333,6 +333,12 @@ test "codeberg release parsing with live data snapshot" {
try std.testing.expectEqualStrings("v3.0.1", releases.items[0].tag_name); try std.testing.expectEqualStrings("v3.0.1", releases.items[0].tag_name);
try std.testing.expectEqualStrings("v3.0.0", releases.items[1].tag_name); try std.testing.expectEqualStrings("v3.0.0", releases.items[1].tag_name);
try std.testing.expectEqualStrings("v2.9.5", releases.items[2].tag_name); try std.testing.expectEqualStrings("v2.9.5", releases.items[2].tag_name);
try std.testing.expectEqualStrings("2024-01-25T11:20:30Z", releases.items[0].published_at); try std.testing.expectEqual(
@as(i64, @intCast(@divTrunc(
(try @import("zeit").instant(.{ .source = .{ .iso8601 = "2024-01-25T11:20:30Z" } })).timestamp,
std.time.ns_per_s,
))),
releases.items[0].published_at,
);
try std.testing.expectEqualStrings("codeberg", releases.items[0].provider); try std.testing.expectEqualStrings("codeberg", releases.items[0].provider);
} }

View file

@ -680,6 +680,12 @@ test "github release parsing with live data snapshot" {
try std.testing.expectEqualStrings("v1.2.0", releases.items[0].tag_name); try std.testing.expectEqualStrings("v1.2.0", releases.items[0].tag_name);
try std.testing.expectEqualStrings("v1.1.0", releases.items[1].tag_name); try std.testing.expectEqualStrings("v1.1.0", releases.items[1].tag_name);
try std.testing.expectEqualStrings("v1.0.0", releases.items[2].tag_name); try std.testing.expectEqualStrings("v1.0.0", releases.items[2].tag_name);
try std.testing.expectEqual(try @import("zeit").instant(.{ .source = .{ .iso8601 = "2024-01-15T10:30:00Z" } }), releases.items[0].published_at); try std.testing.expectEqual(
@as(i64, @intCast(@divTrunc(
(try @import("zeit").instant(.{ .source = .{ .iso8601 = "2024-01-15T10:30:00Z" } })).timestamp,
std.time.ns_per_s,
))),
releases.items[0].published_at,
);
try std.testing.expectEqualStrings("github", releases.items[0].provider); try std.testing.expectEqualStrings("github", releases.items[0].provider);
} }

View file

@ -320,7 +320,7 @@ test "gitlab release parsing with live data snapshot" {
const release = Release{ const release = Release{
.repo_name = try allocator.dupe(u8, obj.get("name").?.string), .repo_name = try allocator.dupe(u8, obj.get("name").?.string),
.tag_name = try allocator.dupe(u8, obj.get("tag_name").?.string), .tag_name = try allocator.dupe(u8, obj.get("tag_name").?.string),
.published_at = try allocator.dupe(u8, obj.get("created_at").?.string), .published_at = try utils.parseReleaseTimestamp(obj.get("created_at").?.string),
.html_url = try allocator.dupe(u8, obj.get("_links").?.object.get("self").?.string), .html_url = try allocator.dupe(u8, obj.get("_links").?.object.get("self").?.string),
.description = try allocator.dupe(u8, desc_str), .description = try allocator.dupe(u8, desc_str),
.provider = try allocator.dupe(u8, "gitlab"), .provider = try allocator.dupe(u8, "gitlab"),
@ -338,6 +338,12 @@ test "gitlab release parsing with live data snapshot" {
try std.testing.expectEqualStrings("v2.1.0", releases.items[0].tag_name); try std.testing.expectEqualStrings("v2.1.0", releases.items[0].tag_name);
try std.testing.expectEqualStrings("v2.0.0", releases.items[1].tag_name); try std.testing.expectEqualStrings("v2.0.0", releases.items[1].tag_name);
try std.testing.expectEqualStrings("v1.9.0", releases.items[2].tag_name); try std.testing.expectEqualStrings("v1.9.0", releases.items[2].tag_name);
try std.testing.expectEqualStrings("2024-01-20T14:45:30.123Z", releases.items[0].published_at); try std.testing.expectEqual(
@as(i64, @intCast(@divTrunc(
(try @import("zeit").instant(.{ .source = .{ .iso8601 = "2024-01-20T14:45:30.123Z" } })).timestamp,
std.time.ns_per_s,
))),
releases.items[0].published_at,
);
try std.testing.expectEqualStrings("gitlab", releases.items[0].provider); try std.testing.expectEqualStrings("gitlab", releases.items[0].provider);
} }

View file

@ -50,28 +50,6 @@ pub fn fetchReleasesForRepos(self: *Self, allocator: Allocator, repositories: []
return fetchReleasesMultiRepo(allocator, &client, auth_token, repositories); return fetchReleasesMultiRepo(allocator, &client, auth_token, repositories);
} }
pub fn fetchReleasesForReposFiltered(self: *Self, allocator: Allocator, repositories: [][]const u8, token: ?[]const u8, existing_releases: []const Release) !ArrayList(Release) {
var latest_date: i64 = 0;
for (existing_releases) |release| {
if (std.mem.eql(u8, release.provider, "sourcehut")) {
const release_time = utils.parseReleaseTimestamp(release.published_at) catch 0;
if (release_time > latest_date) {
latest_date = release_time;
}
}
}
const all_releases = try self.fetchReleasesForRepos(allocator, repositories, token);
defer {
for (all_releases.items) |release| {
release.deinit(allocator);
}
all_releases.deinit();
}
return filterNewReleases(allocator, all_releases.items, latest_date);
}
pub fn getName(self: *Self) []const u8 { pub fn getName(self: *Self) []const u8 {
_ = self; _ = self;
return "sourcehut"; return "sourcehut";