Spracherkennung für: .go vermutete Sprache: Abap {ABAP[48] CS[38] SML[38]} [Methode: maximale Elemente, drei Dimensionen]
// Copyright
2021 Google Inc. All rights reserved.
//
// 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.
package build
import (
"os"
"testing"
)
func TestMain(m
*testing.M) {
//
set src dir
of sandbox
sandboxConfig.srcDir =
"/my/src/dir"
os.
Exit(m.
Run())
}
func TestMountFlagsSrcDir(t
*testing.T) {
testCases := []struct {
srcDirIsRO bool
expectedSrcDirFlag
string
}{
{
srcDirIsRO: false,
expectedSrcDirFlag:
"-B",
},
{
srcDirIsRO: true,
expectedSrcDirFlag:
"-R",
},
}
for _, testCase := range testCases {
c := testCmd()
c.config.sandboxConfig.SetSrcDirIsRO(testCase.srcDirIsRO)
c.wrapSandbox()
if !isExpectedMountFlag(c.Args, sandboxConfig.srcDir, testCase.expectedSrcDirFlag) {
t.Error(
"Mount flag of srcDir is not correct")
}
}
}
func TestMountFlagsSrcDirRWAllowlist(t
*testing.T) {
testCases := []struct {
srcDirRWAllowlist []
string
}{
{
srcDirRWAllowlist: []
string{},
},
{
srcDirRWAllowlist: []
string{
"my/path"},
},
{
srcDirRWAllowlist: []
string{
"my/path1",
"my/path2"},
},
}
for _, testCase := range testCases {
c := testCmd()
c.config.sandboxConfig.SetSrcDirIsRO(true)
c.config.sandboxConfig.SetSrcDirRWAllowlist(testCase.srcDirRWAllowlist)
c.wrapSandbox()
for _, allowlistPath := range testCase.srcDirRWAllowlist {
if !isExpectedMountFlag(c.Args, allowlistPath,
"-B") {
t.Error(
"Mount flag of srcDirRWAllowlist is not correct, expect -B")
}
}
}
}
// utils
for setting up test
func testConfig() Config {
//
create a minimal testConfig
env := Environment([]
string{})
sandboxConfig := SandboxConfig{}
return Config{&configImpl{environ: &env,
sandboxConfig: &sandboxConfig}}
}
func testCmd()
*Cmd {
return Command(testContext(), testConfig(), nil,
"sandbox_test",
"path/to/nsjail")
}
func isExpectedMountFlag(cmdArgs []
string, dirName
string, expectedFlag
string) bool {
indexOfSrcDir :=
index(cmdArgs, dirName)
return cmdArgs[indexOfSrcDir-
1] == expectedFlag
}
func
index(arr []
string, target
string) int {
for idx, element := range arr {
if element == target {
return idx
}
}
panic(
"element could not be located in input array")
}