]> git.lizzy.rs Git - micro.git/blob - cmd/micro/pluginmanager_test.go
change pluginmanager json to json5
[micro.git] / cmd / micro / pluginmanager_test.go
1 package main
2
3 import (
4         "github.com/blang/semver"
5         "testing"
6
7         "github.com/yosuke-furukawa/json5/encoding/json5"
8 )
9
10 func TestDependencyResolving(t *testing.T) {
11         js := `
12 [{
13   "Name": "Foo",
14   "Versions": [{ "Version": "1.0.0" }, { "Version": "1.5.0" },{ "Version": "2.0.0" }]
15 }, {
16   "Name": "Bar",
17   "Versions": [{ "Version": "1.0.0", "Require": {"Foo": ">1.0.0 <2.0.0"} }]
18 }, {
19   "Name": "Unresolvable",
20   "Versions": [{ "Version": "1.0.0", "Require": {"Foo": "<=1.0.0", "Bar": ">0.0.0"} }]
21         }]
22 `
23         var all PluginPackages
24         err := json5.Unmarshal([]byte(js), &all)
25         if err != nil {
26                 t.Error(err)
27         }
28         selected, err := all.Resolve(PluginVersions{}, PluginDependencies{
29                 &PluginDependency{"Bar", semver.MustParseRange(">=1.0.0")},
30         })
31
32         check := func(name, version string) {
33                 v := selected.find(name)
34                 expected := semver.MustParse(version)
35                 if v == nil {
36                         t.Errorf("Failed to resolve %s", name)
37                 } else if expected.NE(v.Version) {
38                         t.Errorf("%s resolved in wrong version got %s", name, v)
39                 }
40         }
41
42         if err != nil {
43                 t.Error(err)
44         } else {
45                 check("Foo", "1.5.0")
46                 check("Bar", "1.0.0")
47         }
48
49         selected, err = all.Resolve(PluginVersions{}, PluginDependencies{
50                 &PluginDependency{"Unresolvable", semver.MustParseRange(">0.0.0")},
51         })
52         if err == nil {
53                 t.Error("Unresolvable package resolved:", selected)
54         }
55 }