File: completion.test

package info (click to toggle)
libyang 3.13.6-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 10,152 kB
  • sloc: ansic: 123,593; xml: 671; sh: 442; tcl: 318; makefile: 19
file content (74 lines) | stat: -rw-r--r-- 3,133 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
source [expr {[info exists ::env(TESTS_DIR)] ? "$env(TESTS_DIR)/interactive/ly.tcl" : "ly.tcl"}]

set mdir "$::env(YANG_MODULES_DIR)"

variable ly_cleanup {
    ly_ignore
    ly_exit
}

test completion_hints_ietf_ip {Completion and hints for ietf-ip.yang} {
-setup $ly_setup -cleanup $ly_cleanup -body {
    ly_cmd "add $mdir/ietf-ip.yang"

    # completion and hint
    ly_completion "print -f info -P " "/ietf-"

    set hints {"/ietf-yang-schema-mount:schema-mounts" "/ietf-interfaces:interfaces" "/ietf-interfaces:interfaces-state"}
    ly_hint "" "print -f info -P /ietf-" $hints

    # double completion
    ly_completion "i" "nterfaces:interfaces"
    ly_completion "/" "interface"
    # current cli: print -f info -P /ietf-interfaces:interfaces/interface

    # a lot of hints
    set hints {"/ietf-interfaces:interfaces/interface"
        "/ietf-interfaces:interfaces/interface/name" "/ietf-interfaces:interfaces/interface/description"
        "/ietf-interfaces:interfaces/interface/type" "/ietf-interfaces:interfaces/interface/enabled"
        "/ietf-interfaces:interfaces/interface/link-up-down-trap-enable"
        "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4" "/ietf-interfaces:interfaces/interface/ietf-ip:ipv6"
    }
    ly_hint "" "print -f info -P /ietf-interfaces:interfaces/interface" $hints

    # double tab
    ly_completion "/i" "etf-ip:ipv"
    # current cli: print -f info -P /ietf-interfaces:interfaces/interface/ietf-ip:ipv
    ly_completion "4" ""
    # current cli: print -f info -P /ietf-interfaces:interfaces/interface/ietf-ip:ipv4

    set hints { "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4" "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4/enabled"
        "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4/forwarding" "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4/mtu"
        "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4/address" "/ietf-interfaces:interfaces/interface/ietf-ip:ipv4/neighbor"
    }
    ly_hint "\t" "print -f info -P /ietf-interfaces:interfaces/interface" $hints

    # no more completion
    ly_completion "/e" "nabled "
    # current cli: print -f info -P /ietf-interfaces:interfaces/interface/ietf-ip:ipv4/enabled
}}

# Note that somehow a command is automatically sent again (\t\t replaced by \r) after the hints.
# But that doesn't affect the test because the tests only focus on the word in the hint.

test hint_data_file {Show file hints for command data} {
-setup $ly_setup -cleanup $ly_cleanup -body {
    ly_hint "data $mdir\t\t" "data $mdir" "modleaf.yang.*"
}}

test hint_data_format {Show print hints for command data --format} {
-setup $ly_setup -cleanup $ly_cleanup -body {
    ly_hint "data -f \t\t" "data -f " "xml.*"
}}

test hint_data_file_after_opt {Show file hints after option with argument} {
-setup $ly_setup -cleanup $ly_cleanup -body {
    ly_hint "data -f xml $mdir\t\t" "data -f xml $mdir" "modleaf.yang.*"
}}

test hint_data_file_after_opt2 {Show file hints after option without argument} {
-setup $ly_setup -cleanup $ly_cleanup -body {
    ly_hint "data -m $mdir\t\t" "data -m $mdir" "modleaf.yang.*"
}}

cleanupTests