toolbox/test/system/203-network.bats
Debarshi Ray f716b23914 test/system: Unbreak the line count checks with Bats >= 1.10.0
Until Bats 1.10.0, 'run --keep-empty-lines' had a bug where it counted
the trailing newline on the last line as a separate line [1].  However,
Bats 1.10.0 is only available in Fedora >= 39 and is absent from Fedoras
37 and 38.

[1] Bats commit 6648e2143bffb933
    https://github.com/bats-core/bats-core/commit/6648e2143bffb933
    https://github.com/bats-core/bats-core/issues/708

https://github.com/containers/toolbox/pull/1352
2023-08-18 06:21:40 +02:00

161 lines
3.9 KiB
Bash

# shellcheck shell=bats
#
# Copyright © 2023 Red Hat, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
load 'libs/bats-support/load'
load 'libs/bats-assert/load'
load 'libs/helpers'
setup() {
bats_require_minimum_version 1.7.0
_setup_environment
cleanup_containers
}
teardown() {
cleanup_containers
}
@test "network: no namespace" {
local ns_host
ns_host=$(readlink /proc/$$/ns/net)
create_default_container
run --keep-empty-lines --separate-stderr "$TOOLBOX" run sh -c 'readlink /proc/$$/ns/net'
assert_success
assert_line --index 0 "$ns_host"
if check_bats_version 1.10.0; then
assert [ ${#lines[@]} -eq 1 ]
else
assert [ ${#lines[@]} -eq 2 ]
fi
# shellcheck disable=SC2154
assert [ ${#stderr_lines[@]} -eq 0 ]
}
@test "network: ping(8) inside the default container" {
create_default_container
run --keep-empty-lines --separate-stderr "$TOOLBOX" run ping -c 2 f.root-servers.net
if [ "$status" -eq 1 ]; then
skip "lost packets"
fi
assert_success
assert [ ${#lines[@]} -gt 0 ]
# shellcheck disable=SC2154
assert [ ${#stderr_lines[@]} -eq 0 ]
}
@test "network: ping(8) inside Arch Linux" {
create_distro_container arch latest arch-toolbox-latest
run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro arch ping -c 2 f.root-servers.net
if [ "$status" -eq 1 ]; then
skip "lost packets"
fi
assert_success
assert [ ${#lines[@]} -gt 0 ]
# shellcheck disable=SC2154
assert [ ${#stderr_lines[@]} -eq 0 ]
}
@test "network: ping(8) inside Fedora 34" {
create_distro_container fedora 34 fedora-toolbox-34
run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro fedora --release 34 ping -c 2 f.root-servers.net
if [ "$status" -eq 1 ]; then
skip "lost packets"
fi
assert_success
assert [ ${#lines[@]} -gt 0 ]
# shellcheck disable=SC2154
assert [ ${#stderr_lines[@]} -eq 0 ]
}
@test "network: ping(8) inside RHEL 8.7" {
create_distro_container rhel 8.7 rhel-toolbox-8.7
run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro rhel --release 8.7 ping -c 2 f.root-servers.net
if [ "$status" -eq 1 ]; then
skip "lost packets"
fi
assert_success
assert [ ${#lines[@]} -gt 0 ]
# shellcheck disable=SC2154
assert [ ${#stderr_lines[@]} -eq 0 ]
}
@test "network: ping(8) inside Ubuntu 16.04" {
create_distro_container ubuntu 16.04 ubuntu-toolbox-16.04
run -2 --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 16.04 ping -c 2 f.root-servers.net
assert_failure
assert [ ${#lines[@]} -eq 0 ]
# shellcheck disable=SC2154
assert [ ${#stderr_lines[@]} -gt 0 ]
skip "doesn't use ICMP Echo sockets"
}
@test "network: ping(8) inside Ubuntu 18.04" {
create_distro_container ubuntu 18.04 ubuntu-toolbox-18.04
run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 18.04 ping -c 2 f.root-servers.net
if [ "$status" -eq 1 ]; then
skip "lost packets"
fi
assert_success
assert [ ${#lines[@]} -gt 0 ]
# shellcheck disable=SC2154
assert [ ${#stderr_lines[@]} -eq 0 ]
}
@test "network: ping(8) inside Ubuntu 20.04" {
create_distro_container ubuntu 20.04 ubuntu-toolbox-20.04
run --keep-empty-lines --separate-stderr "$TOOLBOX" run --distro ubuntu --release 20.04 ping -c 2 f.root-servers.net
if [ "$status" -eq 1 ]; then
skip "lost packets"
fi
assert_success
assert [ ${#lines[@]} -gt 0 ]
# shellcheck disable=SC2154
assert [ ${#stderr_lines[@]} -eq 0 ]
}