Skip to content

Commit f459411

Browse files
committed
feat: Allow archiving on destroy.
1 parent 15a5cbf commit f459411

File tree

3 files changed

+220
-36
lines changed

3 files changed

+220
-36
lines changed

docs/resources/repository.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ import {
176176
- `allow_rebase` (Boolean) Allowed to rebase then fast-forward? **Note**: This setting is only effective if `has_pull_requests` is `true`.
177177
- `allow_rebase_explicit` (Boolean) Allowed to rebase then create merge commit? **Note**: This setting is only effective if `has_pull_requests` is `true`.
178178
- `allow_squash_merge` (Boolean) Allowed to create squash commit? **Note**: This setting is only effective if `has_pull_requests` is `true`.
179+
- `archive_on_destroy` (Boolean) Archive the repo instead of delete?
179180
- `archived` (Boolean) Is the repository archived?
180181
- `auth_token` (String, Sensitive) API token for authenticating with migrate / clone URL. **Note**: This setting is only effective if `clone_addr` is set.
181182
- `auto_init` (Boolean) Whether the repository should be auto-intialized?

internal/provider/repository_resource.go

Lines changed: 69 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ type repositoryResourceModel struct {
105105
Milestones types.Bool `tfsdk:"milestones"`
106106
Labels types.Bool `tfsdk:"labels"`
107107
Service types.String `tfsdk:"service"`
108+
ArchiveOnDestroy types.Bool `tfsdk:"archive_on_destroy"`
108109
}
109110

110111
// from is a helper function to load an API struct into Terraform data model.
@@ -980,6 +981,12 @@ Note: Managing user repositories requires administrative privileges!`,
980981
),
981982
},
982983
},
984+
"archive_on_destroy": schema.BoolAttribute{
985+
Description: "Archive the repo instead of delete?",
986+
Computed: true,
987+
Optional: true,
988+
Default: booldefault.StaticBool(false),
989+
},
983990
},
984991
}
985992
}
@@ -1503,48 +1510,74 @@ func (r *repositoryResource) Delete(ctx context.Context, req resource.DeleteRequ
15031510
return
15041511
}
15051512

1506-
tflog.Info(ctx, "Delete repository", map[string]any{
1507-
"owner": data.Owner.ValueString(),
1508-
"name": data.Name.ValueString(),
1509-
})
1510-
1511-
// Use Forgejo client to delete existing repository
1512-
res, err := r.client.DeleteRepo(
1513-
data.Owner.ValueString(),
1514-
data.Name.ValueString(),
1513+
var (
1514+
res *forgejo.Response
1515+
err error
15151516
)
1516-
if err != nil {
1517-
var msg string
1518-
if res == nil {
1519-
msg = fmt.Sprintf("Unknown error with nil response: %s", err)
1520-
} else {
1521-
tflog.Error(ctx, "Error", map[string]any{
1522-
"status": res.Status,
1523-
})
15241517

1525-
switch res.StatusCode {
1526-
case 403:
1527-
msg = fmt.Sprintf(
1528-
"Repository with owner %s and name %s forbidden: %s",
1529-
data.Owner.String(),
1530-
data.Name.String(),
1531-
err,
1532-
)
1533-
case 404:
1534-
msg = fmt.Sprintf(
1535-
"Repository with owner %s and name %s not found: %s",
1536-
data.Owner.String(),
1537-
data.Name.String(),
1538-
err,
1539-
)
1540-
default:
1541-
msg = fmt.Sprintf("Unknown error: %s", err)
1542-
}
1518+
if data.ArchiveOnDestroy.ValueBool() {
1519+
tflog.Info(ctx, "Archive repository", map[string]any{
1520+
"owner": data.Owner.ValueString(),
1521+
"name": data.Name.ValueString(),
1522+
})
1523+
1524+
archive := true
1525+
opts := forgejo.EditRepoOption{
1526+
Archived: &archive,
15431527
}
1544-
resp.Diagnostics.AddError("Unable to delete repository", msg)
15451528

1529+
_, res, err = r.client.EditRepo(
1530+
data.Owner.ValueString(),
1531+
data.Name.ValueString(),
1532+
opts,
1533+
)
1534+
} else {
1535+
tflog.Info(ctx, "Delete repository", map[string]any{
1536+
"owner": data.Owner.ValueString(),
1537+
"name": data.Name.ValueString(),
1538+
})
1539+
1540+
// Use Forgejo client to delete existing repository
1541+
res, err = r.client.DeleteRepo(
1542+
data.Owner.ValueString(),
1543+
data.Name.ValueString(),
1544+
)
1545+
}
1546+
1547+
if err == nil {
15461548
return
15471549
}
1550+
1551+
var msg string
1552+
if res == nil {
1553+
msg = fmt.Sprintf("Unknown error with nil response: %s", err)
1554+
} else {
1555+
tflog.Error(ctx, "Error", map[string]any{
1556+
"status": res.Status,
1557+
})
1558+
1559+
switch res.StatusCode {
1560+
case 403:
1561+
msg = fmt.Sprintf(
1562+
"Repository with owner %s and name %s forbidden: %s",
1563+
data.Owner.String(),
1564+
data.Name.String(),
1565+
err,
1566+
)
1567+
case 404:
1568+
msg = fmt.Sprintf(
1569+
"Repository with owner %s and name %s not found: %s",
1570+
data.Owner.String(),
1571+
data.Name.String(),
1572+
err,
1573+
)
1574+
case 422:
1575+
msg = fmt.Sprintf("Input validation error: %s", err)
1576+
default:
1577+
msg = fmt.Sprintf("Unknown error: %s", err)
1578+
}
1579+
}
1580+
resp.Diagnostics.AddError("Unable to delete repository", msg)
15481581
}
15491582

15501583
// ImportState reads an existing resource and adds it to Terraform state on success.

internal/provider/repository_resource_test.go

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1444,6 +1444,156 @@ resource "forgejo_repository" "test" {
14441444
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("website"), knownvalue.StringExact("")),
14451445
},
14461446
},
1447+
// Archive on destroy testing (organisation repo; creation)
1448+
{
1449+
Config: providerConfig + `
1450+
resource "forgejo_organization" "owner" {
1451+
name = "test_org"
1452+
}
1453+
resource "forgejo_repository" "test" {
1454+
owner = forgejo_organization.owner.name
1455+
name = "tftest"
1456+
archive_on_destroy = true
1457+
}`,
1458+
ConfigStateChecks: []statecheck.StateCheck{
1459+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("allow_manual_merge"), knownvalue.Bool(false)),
1460+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("allow_merge_commits"), knownvalue.Bool(true)),
1461+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("allow_rebase_explicit"), knownvalue.Bool(true)),
1462+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("allow_rebase"), knownvalue.Bool(true)),
1463+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("allow_squash_merge"), knownvalue.Bool(true)),
1464+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("archived"), knownvalue.Bool(false)),
1465+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("archive_on_destroy"), knownvalue.Bool(true)),
1466+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("auto_init"), knownvalue.Bool(true)),
1467+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("autodetect_manual_merge"), knownvalue.Bool(false)),
1468+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("avatar_url"), knownvalue.StringExact("")),
1469+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("clone_addr"), knownvalue.StringExact("")),
1470+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("clone_url"), knownvalue.StringExact("http://localhost:3000/tfadmin/tftest.git")),
1471+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("created_at"), knownvalue.NotNull()),
1472+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("default_branch"), knownvalue.StringExact("main")),
1473+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("default_merge_style"), knownvalue.StringExact("merge")),
1474+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("description"), knownvalue.StringExact("")),
1475+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("empty"), knownvalue.Bool(false)),
1476+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("external_tracker"), knownvalue.Null()),
1477+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("external_wiki"), knownvalue.Null()),
1478+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("fork"), knownvalue.Bool(false)),
1479+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("forks_count"), knownvalue.Int64Exact(0)),
1480+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("full_name"), knownvalue.StringExact("tfadmin/tftest")),
1481+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("gitignores"), knownvalue.StringExact("")),
1482+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("has_actions"), knownvalue.Bool(true)),
1483+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("has_issues"), knownvalue.Bool(true)),
1484+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("has_packages"), knownvalue.Bool(true)),
1485+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("has_projects"), knownvalue.Bool(true)),
1486+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("has_pull_requests"), knownvalue.Bool(true)),
1487+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("has_releases"), knownvalue.Bool(true)),
1488+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("has_wiki"), knownvalue.Bool(true)),
1489+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("html_url"), knownvalue.StringExact("http://localhost:3000/tfadmin/tftest")),
1490+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("id"), knownvalue.NotNull()),
1491+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("ignore_whitespace_conflicts"), knownvalue.Bool(false)),
1492+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("internal_tracker"), knownvalue.NotNull()),
1493+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("internal"), knownvalue.Bool(false)),
1494+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("issue_labels"), knownvalue.StringExact("")),
1495+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("labels"), knownvalue.Bool(false)),
1496+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("lfs_endpoint"), knownvalue.StringExact("")),
1497+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("lfs"), knownvalue.Bool(false)),
1498+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("license"), knownvalue.StringExact("")),
1499+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("milestones"), knownvalue.Bool(false)),
1500+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("mirror_interval"), knownvalue.StringExact("")),
1501+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("mirror_updated"), knownvalue.NotNull()),
1502+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("mirror"), knownvalue.Bool(false)),
1503+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("name"), knownvalue.StringExact("tftest")),
1504+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("open_issues_count"), knownvalue.Int64Exact(0)),
1505+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("open_pr_counter"), knownvalue.Int64Exact(0)),
1506+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("owner"), knownvalue.StringExact("test_org")),
1507+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("parent_id"), knownvalue.Null()),
1508+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("permissions"), knownvalue.NotNull()),
1509+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("private"), knownvalue.Bool(false)),
1510+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("readme"), knownvalue.StringExact("")),
1511+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("release_counter"), knownvalue.Int64Exact(0)),
1512+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("service"), knownvalue.StringExact("")),
1513+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("size"), knownvalue.NotNull()),
1514+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("ssh_url"), knownvalue.StringExact("ssh://git@localhost:2222/tfadmin/tftest.git")),
1515+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("stars_count"), knownvalue.Int64Exact(0)),
1516+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("template"), knownvalue.Bool(false)),
1517+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("trust_model"), knownvalue.StringExact("default")),
1518+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("updated_at"), knownvalue.NotNull()),
1519+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("watchers_count"), knownvalue.Int64Exact(1)),
1520+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("website"), knownvalue.StringExact("")),
1521+
},
1522+
},
1523+
// Archive on destroy testing (organisation repo; reading after destroy)
1524+
{
1525+
Config: providerConfig + `
1526+
resource "forgejo_organization" "owner" {
1527+
name = "test_org"
1528+
}
1529+
data "forgejo_repository" "test" {
1530+
owner = forgejo_organization.owner.name
1531+
name = "tftest"
1532+
}`,
1533+
ConfigStateChecks: []statecheck.StateCheck{
1534+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("allow_manual_merge"), knownvalue.Bool(false)),
1535+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("allow_merge_commits"), knownvalue.Bool(true)),
1536+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("allow_rebase_explicit"), knownvalue.Bool(true)),
1537+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("allow_rebase"), knownvalue.Bool(true)),
1538+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("allow_squash_merge"), knownvalue.Bool(true)),
1539+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("archived"), knownvalue.Bool(true)),
1540+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("auto_init"), knownvalue.Bool(true)),
1541+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("autodetect_manual_merge"), knownvalue.Bool(false)),
1542+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("avatar_url"), knownvalue.StringExact("")),
1543+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("clone_addr"), knownvalue.StringExact("")),
1544+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("clone_url"), knownvalue.StringExact("http://localhost:3000/tfadmin/tftest.git")),
1545+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("created_at"), knownvalue.NotNull()),
1546+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("default_branch"), knownvalue.StringExact("main")),
1547+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("default_merge_style"), knownvalue.StringExact("merge")),
1548+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("description"), knownvalue.StringExact("")),
1549+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("empty"), knownvalue.Bool(false)),
1550+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("external_tracker"), knownvalue.Null()),
1551+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("external_wiki"), knownvalue.Null()),
1552+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("fork"), knownvalue.Bool(false)),
1553+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("forks_count"), knownvalue.Int64Exact(0)),
1554+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("full_name"), knownvalue.StringExact("tfadmin/tftest")),
1555+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("gitignores"), knownvalue.StringExact("")),
1556+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("has_actions"), knownvalue.Bool(true)),
1557+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("has_issues"), knownvalue.Bool(true)),
1558+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("has_packages"), knownvalue.Bool(true)),
1559+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("has_projects"), knownvalue.Bool(true)),
1560+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("has_pull_requests"), knownvalue.Bool(true)),
1561+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("has_releases"), knownvalue.Bool(true)),
1562+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("has_wiki"), knownvalue.Bool(true)),
1563+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("html_url"), knownvalue.StringExact("http://localhost:3000/tfadmin/tftest")),
1564+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("id"), knownvalue.NotNull()),
1565+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("ignore_whitespace_conflicts"), knownvalue.Bool(false)),
1566+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("internal_tracker"), knownvalue.NotNull()),
1567+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("internal"), knownvalue.Bool(false)),
1568+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("issue_labels"), knownvalue.StringExact("")),
1569+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("labels"), knownvalue.Bool(false)),
1570+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("lfs_endpoint"), knownvalue.StringExact("")),
1571+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("lfs"), knownvalue.Bool(false)),
1572+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("license"), knownvalue.StringExact("")),
1573+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("milestones"), knownvalue.Bool(false)),
1574+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("mirror_interval"), knownvalue.StringExact("")),
1575+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("mirror_updated"), knownvalue.NotNull()),
1576+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("mirror"), knownvalue.Bool(false)),
1577+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("name"), knownvalue.StringExact("tftest")),
1578+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("open_issues_count"), knownvalue.Int64Exact(0)),
1579+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("open_pr_counter"), knownvalue.Int64Exact(0)),
1580+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("owner"), knownvalue.StringExact("test_org")),
1581+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("parent_id"), knownvalue.Null()),
1582+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("permissions"), knownvalue.NotNull()),
1583+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("private"), knownvalue.Bool(false)),
1584+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("readme"), knownvalue.StringExact("")),
1585+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("release_counter"), knownvalue.Int64Exact(0)),
1586+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("service"), knownvalue.StringExact("")),
1587+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("size"), knownvalue.NotNull()),
1588+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("ssh_url"), knownvalue.StringExact("ssh://git@localhost:2222/tfadmin/tftest.git")),
1589+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("stars_count"), knownvalue.Int64Exact(0)),
1590+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("template"), knownvalue.Bool(false)),
1591+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("trust_model"), knownvalue.StringExact("default")),
1592+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("updated_at"), knownvalue.NotNull()),
1593+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("watchers_count"), knownvalue.Int64Exact(1)),
1594+
statecheck.ExpectKnownValue("forgejo_repository.test", tfjsonpath.New("website"), knownvalue.StringExact("")),
1595+
},
1596+
},
14471597
// Delete testing automatically occurs in TestCase
14481598
},
14491599
})

0 commit comments

Comments
 (0)