MCPcopy
hub / github.com/keploy/keploy / Diff

Function Diff

cli/diff.go:19–76  ·  view source on GitHub ↗
(ctx context.Context, logger *zap.Logger, _ *config.Config, serviceFactory ServiceFactory, cmdConfigurator CmdConfigurator)

Source from the content-addressed store, hash-verified

17}
18
19func Diff(ctx context.Context, logger *zap.Logger, _ *config.Config, serviceFactory ServiceFactory, cmdConfigurator CmdConfigurator) *cobra.Command {
20 var cmd = &cobra.Command{
21 Use: "diff <run1> <run2>",
22 Short: "compare two keploy test runs and print regressions/fixes",
23 Example: `keploy diff test-run-1 test-run-2 -t "test-set-1,test-set-2"`,
24 Args: cobra.MaximumNArgs(2),
25 PreRunE: func(cmd *cobra.Command, _ []string) error {
26 return cmdConfigurator.Validate(ctx, cmd)
27 },
28 RunE: func(cmd *cobra.Command, args []string) error {
29 run1, _ := cmd.Flags().GetString("run1")
30 run2, _ := cmd.Flags().GetString("run2")
31
32 if len(args) > 0 {
33 run1 = args[0]
34 }
35 if len(args) > 1 {
36 run2 = args[1]
37 }
38 run1 = strings.TrimSpace(run1)
39 run2 = strings.TrimSpace(run2)
40 if run1 == "" || run2 == "" {
41 return fmt.Errorf("%s expected two run IDs. usage: keploy diff <run1> <run2>", utils.Emoji)
42 }
43
44 testSets, err := cmd.Flags().GetStringSlice("test-sets")
45 if err != nil {
46 return fmt.Errorf("%s failed to read test-sets flag: %w", utils.Emoji, err)
47 }
48
49 svc, err := serviceFactory.GetService(ctx, cmd.Name())
50 if err != nil {
51 utils.LogError(logger, err, "failed to get service", zap.String("command", cmd.Name()))
52 return nil
53 }
54 var diffService diffSvc.Service
55 var ok bool
56 if diffService, ok = svc.(diffSvc.Service); !ok {
57 utils.LogError(logger, nil, "service doesn't satisfy diff service interface")
58 return nil
59 }
60
61 if err := diffService.Compare(ctx, run1, run2, testSets); err != nil {
62 utils.LogError(logger, err, "failed to compare test runs")
63 return nil
64 }
65 return nil
66 },
67 }
68
69 err := cmdConfigurator.AddFlags(cmd)
70 if err != nil {
71 utils.LogError(logger, err, "failed to add diff flags")
72 return nil
73 }
74
75 return cmd
76}

Callers

nothing calls this directly

Calls 7

CompareMethod · 0.95
LogErrorFunction · 0.92
NameMethod · 0.80
ValidateMethod · 0.65
GetServiceMethod · 0.65
AddFlagsMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected