Files
dingtalk-workspace-cli/internal/cli/runtimeannotate/embed_test.go
T
玉澜andCursor b7f04fd2a0 refactor(schema): break corecmd→cli cycle and split contract seams
Move AnnotateRuntime* into cli/runtimeannotate and the Cobra-keyed
ContractFinal store into cli/contractfinal so corecmd depends on thin
subpackages instead of the cli delivery root. Keep contract as DTO-only,
document Description declare-vs-delivery, and house homology gates under
cli/homology.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-01 22:16:17 +08:00

72 lines
2.4 KiB
Go

// Copyright 2026 Alibaba Group
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package runtimeannotate
import (
"testing"
"github.com/spf13/cobra"
)
func TestCrossPlatformCoverageAnnotateRuntimeRiskEmbedsContractMarker(t *testing.T) {
cmd := &cobra.Command{Use: "x"}
AnnotateRuntimeRisk(cmd, "write")
got, ok := RuntimeContractRisk(cmd)
if !ok || got != "write" {
t.Fatalf("RuntimeContractRisk = %q %v", got, ok)
}
if cmd.Annotations[AnnotationContract] != "command" {
t.Fatalf("contract marker = %q", cmd.Annotations[AnnotationContract])
}
AnnotateRuntimeRisk(cmd, "")
if got, _ = RuntimeContractRisk(cmd); got != "write" {
t.Fatalf("empty AnnotateRuntimeRisk must be no-op, got %q", got)
}
}
func TestCrossPlatformCoverageAnnotateRuntimeGate(t *testing.T) {
cmd := &cobra.Command{Use: "x"}
AnnotateRuntimeGate(cmd, "devAppRequireWriteGuard")
got, ok := RuntimeContractGate(cmd)
if !ok || got != "devAppRequireWriteGuard" {
t.Fatalf("RuntimeContractGate = %q %v", got, ok)
}
if cmd.Annotations[AnnotationContract] != "command" {
t.Fatalf("contract marker = %q", cmd.Annotations[AnnotationContract])
}
}
func TestCrossPlatformCoverageRuntimeContractAnnotationNilAndBlankGuards(t *testing.T) {
AnnotateRuntimeFlagDescription(nil, "flag", "description")
AnnotateRuntimeContract(nil)
AnnotateRuntimeRisk(nil, "write")
AnnotateRuntimeGate(nil, "devAppRequireWriteGuard")
cmd := &cobra.Command{Use: "x"}
AnnotateRuntimeGate(cmd, " ")
if _, ok := RuntimeContractGate(cmd); ok {
t.Fatal("blank AnnotateRuntimeGate must not record a gate")
}
if cmd.Annotations != nil && cmd.Annotations[AnnotationContract] == "command" {
t.Fatal("blank AnnotateRuntimeGate must not mark the command as Contract")
}
blank := &cobra.Command{Use: "y", Annotations: map[string]string{
AnnotationRuntimeGate: " ",
}}
if _, ok := RuntimeContractGate(blank); ok {
t.Fatal("blank runtime_gate annotation must not report a gate")
}
}