File: lldb-smoker

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (85 lines) | stat: -rwxr-xr-x 2,227 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
#!/bin/bash
##===----------------------------------------------------------------------===##
##
## This source file is part of the SwiftNIO open source project
##
## Copyright (c) 2021 Apple Inc. and the SwiftNIO project authors
## Licensed under Apache License v2.0
##
## See LICENSE.txt for license information
## See CONTRIBUTORS.txt for the list of SwiftNIO project authors
##
## SPDX-License-Identifier: Apache-2.0
##
##===----------------------------------------------------------------------===##

set -eu

here="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

number_of_breaks=2000
package_dir=$(cd "${1-"$here/.."}" && pwd -P)
files=( "$package_dir"/Sources/*/*.swift "$package_dir"/Tests/*/*.swift )

function random_array_element() {
    arr=("${!1}")
    echo ${arr["$[RANDOM % ${#arr[@]}]"]}
}

function number_of_lines() {
    wc -l < "$1"
}

function random_line_number() {
    echo $(( 1 + ( RANDOM % $(number_of_lines "$1") ) ))
}

echo "Package dir: $package_dir"
( set -eux && cd "$package_dir" && swift build --build-tests )
xctest_bundle=( "$package_dir/.build/debug"/*PackageTests.xctest )
echo "xctest bundle: $xctest_bundle"

if [[ ! -e "$xctest_bundle" ]]; then
    echo >&2 "ERROR: Couldn't find xctest bundle at $xctest_bundle"
    exit 1
fi
run_command=()
if [[ "$(uname -s)" == Darwin ]]; then
    xctest=$(xcrun -f xctest)
    run_command+=( "$xctest" "$xctest_bundle" )
else
    run_command+=( "$xctest_bundle" )
fi

lldb_file=()
for f in $(seq "$number_of_breaks"); do
    file=$(random_array_element "files[@]")
    line=$(random_line_number "$file")

    lldb_file+=( "break set -o true -f '$file' -l '$line'" )
done
lldb_file+=( run )
for f in $(seq "$number_of_breaks"); do
    lldb_file+=( 'frame variable --show-all-children' )

    lldb_file+=( cont )
done

lldb_response_file=$(mktemp /tmp/lldb-smoker_XXXXXX)
for command in "${lldb_file[@]}"; do
    echo "$command" >> "$lldb_response_file"
done

echo "LLDB response file: $lldb_response_file"
sleep 0.5
lldb_command=( lldb --batch --source "$lldb_response_file" -- \
    "${run_command[@]}" )

set +e
set -x
"${lldb_command[@]}"
set +x
set -e

echo "LLDB response file: $lldb_response_file"
echo "LLDB command: ${lldb_command[*]}"