MCPcopy Create free account
hub / github.com/Permify/permify / coverage

Function coverage

pkg/cmd/coverage.go:41–110  ·  view source on GitHub ↗

coverage - coverage analysis of authorization model and assertions

()

Source from the content-addressed store, hash-verified

39
40// coverage - coverage analysis of authorization model and assertions
41func coverage() func(cmd *cobra.Command, args []string) error {
42 return func(cmd *cobra.Command, args []string) error {
43 // parse the url from the first argument
44 u, err := url.Parse(args[0])
45 if err != nil {
46 return err
47 }
48 // Retrieve minimum coverage thresholds from configuration
49 coverageRelationships := viper.GetInt("coverage-relationships") // Min relationships coverage
50 coverageAttributes := viper.GetInt("coverage-attributes")
51 coverageAssertions := viper.GetInt("coverage-assertions") // Min assertions coverage
52 // Create decoder from URL
53 // create a new decoder from the url
54 decoder, err := file.NewDecoderFromURL(u)
55 if err != nil {
56 return err
57 }
58
59 // create a new shape
60 s := &file.Shape{}
61
62 // decode the schema from the decoder
63 err = decoder.Decode(s)
64 if err != nil {
65 return err
66 }
67
68 loader := schema.NewSchemaLoader()
69 loaded, err := loader.LoadSchema(s.Schema)
70 if err != nil {
71 return err
72 }
73
74 s.Schema = loaded
75 // Validate schema before coverage analysis
76 color.Notice.Println("initiating validation... 🚀")
77 validator := validate()
78 err = validator(cmd, args)
79 if err != nil {
80 color.Danger.Println("failed to validate given file\n")
81 color.Danger.Println("FAILED")
82 return err
83 }
84 // Run coverage analysis
85 color.Notice.Println("initiating coverage analysis... 🚀")
86
87 schemaCoverageInfo := cov.Run(*s)
88 // Display coverage results
89 DisplayCoverageInfo(schemaCoverageInfo)
90 // Check assertions coverage threshold
91 if schemaCoverageInfo.TotalAssertionsCoverage < coverageAssertions {
92 color.Danger.Printf("assertions coverage < %d%%\n", coverageAssertions)
93 color.Danger.Println("FAILED")
94 os.Exit(1)
95 }
96 // Check relationships coverage threshold
97 if schemaCoverageInfo.TotalRelationshipsCoverage < coverageRelationships {
98 color.Danger.Printf("relationships coverage < %d%%\n", coverageRelationships)

Callers 1

NewCoverageCommandFunction · 0.90

Calls 8

NewDecoderFromURLFunction · 0.92
NewSchemaLoaderFunction · 0.92
validateFunction · 0.85
DisplayCoverageInfoFunction · 0.85
ParseMethod · 0.80
LoadSchemaMethod · 0.80
DecodeMethod · 0.65
RunMethod · 0.45

Tested by

no test coverage detected