Gleam CLI client for Tangled (clone of aly.codes/tg)
1import gleam/string
2import gleeunit
3import gtg/app/service
4import gtg/app/types
5import gtg/atproto/tid
6import gtg/gitutil
7
8pub fn main() -> Nil {
9 gleeunit.main()
10}
11
12pub fn parse_target_test() {
13 let assert Ok(types.Target(handle: "alice.bsky.social", repo: "cool")) =
14 service.parse_target("alice.bsky.social/cool")
15 let assert Error(_) = service.parse_target("nopath")
16 let assert Error(_) = service.parse_target("a/b/c")
17}
18
19pub fn parse_tangled_url_test() {
20 let assert Ok(gitutil.RepoContext(handle: "aly.codes", repo: "tg")) =
21 gitutil.parse_tangled_url("git@tangled.org:aly.codes/tg")
22 let assert Ok(gitutil.RepoContext(handle: "aly.codes", repo: "tg")) =
23 gitutil.parse_tangled_url("ssh://git@tangled.org/aly.codes/tg.git")
24 let assert Error(_) = gitutil.parse_tangled_url("git@github.com:foo/bar")
25}
26
27pub fn tid_length_test() {
28 let t = tid.new_now()
29 let assert True = string.length(t) == 13
30}
31
32pub fn target_string_test() {
33 let assert "a/b" =
34 types.target_string(types.Target(handle: "a", repo: "b"))
35}