MCPcopy
hub / github.com/micro-editor/micro / TestDependencyResolving

Function TestDependencyResolving

internal/config/plugin_installer_test.go:11–56  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

9)
10
11func TestDependencyResolving(t *testing.T) {
12 js := `
13[{
14 "Name": "Foo",
15 "Versions": [{ "Version": "1.0.0" }, { "Version": "1.5.0" },{ "Version": "2.0.0" }]
16}, {
17 "Name": "Bar",
18 "Versions": [{ "Version": "1.0.0", "Require": {"Foo": ">1.0.0 <2.0.0"} }]
19}, {
20 "Name": "Unresolvable",
21 "Versions": [{ "Version": "1.0.0", "Require": {"Foo": "<=1.0.0", "Bar": ">0.0.0"} }]
22 }]
23`
24 var all PluginPackages
25 err := json5.Unmarshal([]byte(js), &all)
26 if err != nil {
27 t.Error(err)
28 }
29 selected, err := all.Resolve(PluginVersions{}, PluginDependencies{
30 &PluginDependency{"Bar", semver.MustParseRange(">=1.0.0")},
31 })
32
33 check := func(name, version string) {
34 v := selected.find(name)
35 expected := semver.MustParse(version)
36 if v == nil {
37 t.Errorf("Failed to resolve %s", name)
38 } else if expected.NE(v.Version) {
39 t.Errorf("%s resolved in wrong version %v", name, v)
40 }
41 }
42
43 if err != nil {
44 t.Error(err)
45 } else {
46 check("Foo", "1.5.0")
47 check("Bar", "1.0.0")
48 }
49
50 selected, err = all.Resolve(PluginVersions{}, PluginDependencies{
51 &PluginDependency{"Unresolvable", semver.MustParseRange(">0.0.0")},
52 })
53 if err == nil {
54 t.Error("Unresolvable package resolved:", selected)
55 }
56}

Callers

nothing calls this directly

Calls 4

ResolveMethod · 0.95
checkFunction · 0.50
ErrorMethod · 0.45
findMethod · 0.45

Tested by

no test coverage detected