File: test-main.sh

package info (click to toggle)
ble.sh 0.4.0~git20250806.8060b7a-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 12,744 kB
  • sloc: sh: 72,358; awk: 1,316; cpp: 750; ansic: 186; javascript: 43; makefile: 35
file content (141 lines) | stat: -rw-r--r-- 3,829 bytes parent folder | download
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# source script for ble.sh interactive sessions -*- mode: sh; mode: sh-bash -*-

ble-import lib/core-test

ble/test/start-section 'ble/main' 29

(
  function f1 {
    builtin eval -- "$_ble_bash_POSIXLY_CORRECT_local_adjust"
    ble/util/setexit 123
    builtin eval -- "$_ble_bash_POSIXLY_CORRECT_local_return"
  }
  function f2 {
    builtin eval -- "$_ble_bash_POSIXLY_CORRECT_local_adjust"
    [[ ! -o posix ]]
    builtin eval -- "$_ble_bash_POSIXLY_CORRECT_local_return"
  }
  set +o posix
  ble/test 'f1' exit=123
  ble/test 'f2'
  ble/test 'f1; [[ ! -o posix ]]'
  ble/test 'f2; [[ ! -o posix ]]'

  ble/test 'set -o posix; f1;                 ret=$?; set +o posix' ret=123
  ble/test 'set -o posix; f2;                 ret=$?; set +o posix' ret=0
  ble/test 'set -o posix; f1; [[ -o posix ]]; ret=$?; set +o posix' ret=0
  ble/test 'set -o posix; f2; [[ -o posix ]]; ret=$?; set +o posix' ret=0
)

# ble/util/{put,print}
(
  ble/test ble/util/put a     stdout=a
  ble/test ble/util/print a   stdout=a
  ble/test 'ble/util/put "a b"'   stdout='a b'
  ble/test 'ble/util/print "a b"' stdout='a b'
  ble/test 'ble/util/put "a b"; ble/util/put "c d"' \
           stdout='a bc d'
  ble/test 'ble/util/print "a b"; ble/util/print "c d"' \
           stdout='a b' \
           stdout='c d'
)

# ble/bin#has
(
  function ble/test/dummy-1 { return 0; }
  function ble/test/dummy-2 { return 0; }
  function ble/test/dummy-3 { return 0; }
  ble/test ble/bin#has ble/test/dummy-1
  ble/test ble/bin#has ble/test/dummy-{1..3}
  ble/test ble/bin#has ble/test/dummy-0 exit=1
  ble/test ble/bin#has ble/test/dummy-{0..2} exit=1

  # Note (#D1715): ble/bin#has should reflect "shopt -s expand_aliases" for the
  # aliases.
  alias ble_test_dummy_4=echo
  shopt -u expand_aliases
  ble/test '! ble/bin#has ble_test_dummy_4'
  shopt -s expand_aliases
  ble/test 'ble/bin#has ble_test_dummy_4'
)

# ble/util/readlink
(
  if [[ $OSTYPE == msys* ]]; then
    export MSYS=${MSYS:+$MSYS }winsymlinks
  fi

  ble/bin#freeze-utility-path readlink ls
  function ble/test:readlink.impl1 {
    ret=$1
    ble/util/readlink/.resolve-loop
  }
  function ble/test:readlink.impl2 {
    ret=$1
    ble/function#push ble/bin/readlink
    ble/util/readlink/.resolve-loop
    ble/function#pop ble/bin/readlink
  }

  ble/test/chdir || exit
  cd -P .

  command mkdir -p ab/cd/ef
  command touch ab/cd/ef/file.txt
  command ln -s ef/file.txt ab/cd/link1
  command ln -s ab link.d
  command ln -s link.d/cd/link1 f.txt
  ble/test '
    ble/util/readlink f.txt
    [[ $ret != /* ]] && ret=${PWD%/}/$ret' \
    ret="${PWD%/}/ab/cd/ef/file.txt"

  # loop symbolic links
  command touch loop1.sh
  command ln -s loop1.sh loop0.sh
  command ln -s loop1.sh loop3.sh
  command rm loop1.sh
  command ln -s loop3.sh loop2.sh
  command ln -s loop2.sh loop1.sh
  for impl in impl1 impl2; do
    ble/test "ble/test:readlink.$impl loop0.sh" ret='loop1.sh'
  done

  # resolve physical directory
  mkdir -p phys.dir
  touch phys.dir/1.txt
  ln -s ../../../phys.dir ab/cd/ef/phys.link
  ln -s ab/cd/ef/phys.link phys.link
  local pwd=$PWD xpath=
  ble/test code:'
    path=phys.link/1.txt
    ble/util/readlink/.resolve-physical-directory
    declare -p path PWD >&2
    [[ $path == */phys.dir/1.txt && $PWD == "$pwd" ]]'

  ble/test/rmdir
)

# ble/base/create-*-directory
(
  ble/test '[[ -d $_ble_base ]]'
  ble/test '[[ -d $_ble_base_run ]]'
  ble/test '[[ -d $_ble_base_cache ]]'
)

(
  qnl="\$'\n'"
  value=$'\nxxx is a function\nhello\nyyy is a function\n'
  pattern=$'\n+([][{}:[:alnum:]]) is a function\n'
  shopt -s extglob
  ble/test '[[ ${value//$pattern/'"$qnl"'} == '"$qnl"'hello'"$qnl"' ]]'
  shopt -u extglob
  ble/test '[[ ${value//$pattern/'"$qnl"'} != '"$qnl"'hello'"$qnl"' ]]'
)

# ble-reload
# ble-update
# ble-attach
# ble-detach

ble/test/end-section