File: plugin_installer_test.go

package info (click to toggle)
micro 2.0.15-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,828 kB
  • sloc: sh: 247; makefile: 77; xml: 53
file content (56 lines) | stat: -rw-r--r-- 1,288 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package config

import (
	"testing"

	"github.com/blang/semver"

	"github.com/flynn/json5"
)

func TestDependencyResolving(t *testing.T) {
	js := `
[{
  "Name": "Foo",
  "Versions": [{ "Version": "1.0.0" }, { "Version": "1.5.0" },{ "Version": "2.0.0" }]
}, {
  "Name": "Bar",
  "Versions": [{ "Version": "1.0.0", "Require": {"Foo": ">1.0.0 <2.0.0"} }]
}, {
  "Name": "Unresolvable",
  "Versions": [{ "Version": "1.0.0", "Require": {"Foo": "<=1.0.0", "Bar": ">0.0.0"} }]
	}]
`
	var all PluginPackages
	err := json5.Unmarshal([]byte(js), &all)
	if err != nil {
		t.Error(err)
	}
	selected, err := all.Resolve(PluginVersions{}, PluginDependencies{
		&PluginDependency{"Bar", semver.MustParseRange(">=1.0.0")},
	})

	check := func(name, version string) {
		v := selected.find(name)
		expected := semver.MustParse(version)
		if v == nil {
			t.Errorf("Failed to resolve %s", name)
		} else if expected.NE(v.Version) {
			t.Errorf("%s resolved in wrong version %v", name, v)
		}
	}

	if err != nil {
		t.Error(err)
	} else {
		check("Foo", "1.5.0")
		check("Bar", "1.0.0")
	}

	selected, err = all.Resolve(PluginVersions{}, PluginDependencies{
		&PluginDependency{"Unresolvable", semver.MustParseRange(">0.0.0")},
	})
	if err == nil {
		t.Error("Unresolvable package resolved:", selected)
	}
}