diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..0b2601c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,6 @@ +language: go +go: + - 1.6 +script: + - go get -t + - go test -v diff --git a/res_nobindata.go b/res_nobindata.go index 0520db1..d224696 100644 --- a/res_nobindata.go +++ b/res_nobindata.go @@ -6,17 +6,16 @@ import ( "io/ioutil" "log" "net/http" - "os" - "path/filepath" ) func init() { - selfDir := filepath.Dir(os.Args[0]) - resDir := filepath.Join(selfDir, "./res") + //selfDir := filepath.Dir(os.Args[0]) + //resDir := filepath.Join(selfDir, "./res") + resDir := "./res" http.Handle("/-/res/", http.StripPrefix("/-/res/", http.FileServer(http.Dir(resDir)))) for name, path := range templates { - content, err := ioutil.ReadFile(filepath.Join(selfDir, path)) + content, err := ioutil.ReadFile(path) if err != nil { log.Fatal(err) } diff --git a/utils.go b/utils.go index 16ebb84..b1be69a 100644 --- a/utils.go +++ b/utils.go @@ -31,3 +31,29 @@ func getRealIP(req *http.Request) string { } return xip } + +func SublimeContains(s, substr string) bool { + rs, rsubstr := []rune(s), []rune(substr) + if len(rsubstr) > len(rs) { + return false + } + // abcdefg + // df + var ok = true + var i, j = 0, 0 + for ; i < len(rsubstr); i++ { + found := -1 + for ; j < len(rs); j++ { + if rsubstr[i] == rs[j] { + found = j + break + } + } + if found == -1 { + ok = false + break + } + j += 1 + } + return ok +} diff --git a/utils_test.go b/utils_test.go new file mode 100644 index 0000000..2ba328a --- /dev/null +++ b/utils_test.go @@ -0,0 +1,27 @@ +package main + +import "testing" + +func TestSublimeContains(t *testing.T) { + tests := []struct { + text string + substr string + pass bool + }{ + {"hello", "lo", true}, + {"abcdefg", "cf", true}, + {"abcdefg", "a", true}, + {"abcdefg", "b", true}, + {"abcdefg", "cfa", false}, + {"abcdefg", "aa", false}, + {"世界", "a", false}, + {"Hello 世界", "界", true}, + {"Hello 世界", "elo", true}, + } + for _, v := range tests { + res := SublimeContains(v.text, v.substr) + if res != v.pass { + t.Fatalf("Failed: %v - res:%v", v, res) + } + } +} diff --git a/zip_test.go b/zip_test.go index d0ca490..a7ae932 100644 --- a/zip_test.go +++ b/zip_test.go @@ -7,7 +7,7 @@ import ( func TestExtractFromZip(t *testing.T) { buf := bytes.NewBuffer(nil) - err := ExtractFromZip("testdata/test.zip", "*/foo.txt", buf) + err := ExtractFromZip("testdata/test.zip", "**/foo.txt", buf) if err != nil { t.Fatal(err) }