@@ -1416,8 +1416,96 @@ func TestApplySubpackageTask_InvalidSubpackageName(t *testing.T) {
14161416
14171417 err := th .applySubpackageTask (context .Background (), draft , obj , repository.PackageResources {Contents : map [string ]string {}})
14181418 require .Error (t , err )
1419- assert .Contains (t , err .Error (), "subpackage resource name" )
1420- assert .Contains (t , err .Error (), "lowercase RFC 1123 subdomain" )
1419+ require .Contains (t , err .Error (), "subpackage resource name" )
1420+ }
1421+
1422+ func TestApplySubpackageTask_CheckKptfileStatusCleared (t * testing.T ) {
1423+ // SubpackageDir that produces an invalid k8s name (uppercase letters)
1424+ upstreamPrKey := repository.PackageRevisionKey {
1425+ PkgKey : repository.PackageKey {
1426+ RepoKey : repository.RepositoryKey {
1427+ Namespace : "default" ,
1428+ Name : "upstream-repo" ,
1429+ },
1430+ Package : "subpkg" ,
1431+ },
1432+ WorkspaceName : "ws" ,
1433+ Revision : 1 ,
1434+ }
1435+
1436+ upstreamPR := & fakeextrepo.FakePackageRevision {
1437+ PrKey : upstreamPrKey ,
1438+ Resources : & porchapi.PackageRevisionResources {
1439+ Spec : porchapi.PackageRevisionResourcesSpec {
1440+ Resources : map [string ]string {
1441+ kptfilev1 .KptFileName : "apiVersion: kpt.dev/v1\n kind: Kptfile\n metadata:\n name: subpkg\n status:\n conditions:\n " ,
1442+ },
1443+ },
1444+ },
1445+ Kptfile : kptfilev1.KptFile {
1446+ Upstream : & kptfilev1.Upstream {
1447+ Type : kptfilev1 .GitOrigin ,
1448+ Git : & kptfilev1.Git {Repo : "https://github.com/example/repo.git" , Ref : "main" , Directory : "/subpkg" },
1449+ },
1450+ UpstreamLock : & kptfilev1.Locator {
1451+ Type : kptfilev1 .GitOrigin ,
1452+ Git : & kptfilev1.GitLock {Repo : "https://github.com/example/repo.git" , Ref : "main" , Directory : "/subpkg" , Commit : "abc123" },
1453+ },
1454+ },
1455+ }
1456+
1457+ fakeRepo := & fakeextrepo.Repository {
1458+ PackageRevisions : []repository.PackageRevision {upstreamPR },
1459+ }
1460+
1461+ obj := & porchapi.PackageRevision {
1462+ Spec : porchapi.PackageRevisionSpec {
1463+ Tasks : []porchapi.Task {
1464+ {Type : porchapi .TaskTypeClone , Clone : & porchapi.PackageCloneTaskSpec {}},
1465+ {
1466+ Type : porchapi .TaskTypeClone ,
1467+ Clone : & porchapi.PackageCloneTaskSpec {
1468+ SubpackageDir : "my-subpackage" ,
1469+ Upstream : porchapi.UpstreamPackage {
1470+ UpstreamRef : & porchapi.PackageRevisionRef {
1471+ Name : "upstream-repo.subpkg.ws" ,
1472+ },
1473+ },
1474+ },
1475+ },
1476+ },
1477+ },
1478+ }
1479+
1480+ draft := & fakeextrepo.FakePackageRevision {
1481+ PrKey : repository.PackageRevisionKey {
1482+ PkgKey : repository.PackageKey {
1483+ RepoKey : repository.RepositoryKey {
1484+ Namespace : "default" ,
1485+ Name : "test-repo" ,
1486+ },
1487+ Package : "test-pkg" ,
1488+ },
1489+ WorkspaceName : "ws" ,
1490+ },
1491+ Resources : & porchapi.PackageRevisionResources {
1492+ Spec : porchapi.PackageRevisionResourcesSpec {
1493+ Resources : map [string ]string {},
1494+ },
1495+ },
1496+ }
1497+
1498+ th := & genericTaskHandler {
1499+ referenceResolver : & mockReferenceResolver {repo : & configapi.Repository {}},
1500+ repoOpener : & mockRepositoryOpener {repo : fakeRepo },
1501+ }
1502+
1503+ resources := repository.PackageResources {Contents : map [string ]string {}}
1504+
1505+ err := th .applySubpackageTask (context .Background (), draft , obj , resources )
1506+ require .NoError (t , err )
1507+ require .Contains (t , upstreamPR .Resources .Spec .Resources [kptfilev1 .KptFileName ], "\n status:" )
1508+ require .NotContains (t , resources .Contents ["my-subpackage/" + kptfilev1 .KptFileName ], "\n status:" )
14211509}
14221510
14231511type mockReferenceResolver struct {
0 commit comments