blob: c0b5d9df34d208228da428b756210a9af42e9308 [file] [log] [blame]
Serge Bazanskibe538db2020-11-12 00:22:42 +01001package utils
2
3import (
4 "net/url"
5 "os"
6 "reflect"
7 "testing"
8)
9
10func TestInternalFS(t *testing.T) {
11 fs := newInternalFS("lib")
12 if _, err := fs.Open("kubecfg.libsonnet"); err != nil {
13 t.Errorf("opening kubecfg.libsonnet failed! %v", err)
14 }
15 if _, err := fs.Open("noexist"); !os.IsNotExist(err) {
16 t.Errorf("Incorrect noexist error: %v", err)
17 }
18 if _, err := fs.Open("noexist/foo"); !os.IsNotExist(err) {
19 t.Errorf("Incorrect noexist dir error: %v", err)
20 }
21
22 // This test really belongs somewhere else, but it's easiest
23 // to do here.
24 if _, err := fs.Open("kubecfg_test.jsonnet"); err == nil {
25 t.Errorf("kubecfg_test.jsonnet should not have been embedded")
26 }
27}
28
29func TestExpandImportToCandidateURLs(t *testing.T) {
30 importer := universalImporter{
31 BaseSearchURLs: []*url.URL{
32 {Scheme: "file", Path: "/first/base/search/"},
33 },
34 }
35
36 t.Run("Absolute URL in import statement yields a single candidate", func(t *testing.T) {
37 urls, _ := importer.expandImportToCandidateURLs("dir", "http://absolute.com/import/path")
38 expected := []*url.URL{
39 {Scheme: "http", Host: "absolute.com", Path: "/import/path"},
40 }
41 if !reflect.DeepEqual(urls, expected) {
42 t.Errorf("Expected %v, got %v", expected, urls)
43 }
44 })
45
46 t.Run("Absolute URL in import dir is searched before BaseSearchURLs", func(t *testing.T) {
47 urls, _ := importer.expandImportToCandidateURLs("file:///abs/import/dir/", "relative/file.libsonnet")
48 expected := []*url.URL{
49 {Scheme: "file", Host: "", Path: "/abs/import/dir/relative/file.libsonnet"},
50 {Scheme: "file", Host: "", Path: "/first/base/search/relative/file.libsonnet"},
51 }
52 if !reflect.DeepEqual(urls, expected) {
53 t.Errorf("Expected %v, got %v", expected, urls)
54 }
55 })
56}