1
0
mirror of https://github.com/golang/go synced 2024-11-18 08:54:45 -07:00
go/src/net/nss_test.go
Russ Cox f229e7031a all: go fix -fix=buildtag std cmd (except for bootstrap deps, vendor)
When these packages are released as part of Go 1.18,
Go 1.16 will no longer be supported, so we can remove
the +build tags in these files.

Ran go fix -fix=buildtag std cmd and then reverted the bootstrapDirs
as defined in src/cmd/dist/buildtool.go, which need to continue
to build with Go 1.4 for now.

Also reverted src/vendor and src/cmd/vendor, which will need
to be updated in their own repos first.

Manual changes in runtime/pprof/mprof_test.go to adjust line numbers.

For #41184.

Change-Id: Ic0f93f7091295b6abc76ed5cd6e6746e1280861e
Reviewed-on: https://go-review.googlesource.com/c/go/+/344955
Trust: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
2021-10-28 18:17:57 +00:00

170 lines
3.4 KiB
Go

// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
package net
import (
"reflect"
"strings"
"testing"
)
const ubuntuTrustyAvahi = `# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the libc-doc-reference' and nfo' packages installed, try:
# nfo libc "Name Service Switch"' for information about this file.
passwd: compat
group: compat
shadow: compat
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
`
func TestParseNSSConf(t *testing.T) {
tests := []struct {
name string
in string
want *nssConf
}{
{
name: "no_newline",
in: "foo: a b",
want: &nssConf{
sources: map[string][]nssSource{
"foo": {{source: "a"}, {source: "b"}},
},
},
},
{
name: "newline",
in: "foo: a b\n",
want: &nssConf{
sources: map[string][]nssSource{
"foo": {{source: "a"}, {source: "b"}},
},
},
},
{
name: "whitespace",
in: " foo:a b \n",
want: &nssConf{
sources: map[string][]nssSource{
"foo": {{source: "a"}, {source: "b"}},
},
},
},
{
name: "comment1",
in: " foo:a b#c\n",
want: &nssConf{
sources: map[string][]nssSource{
"foo": {{source: "a"}, {source: "b"}},
},
},
},
{
name: "comment2",
in: " foo:a b #c \n",
want: &nssConf{
sources: map[string][]nssSource{
"foo": {{source: "a"}, {source: "b"}},
},
},
},
{
name: "crit",
in: " foo:a b [!a=b X=Y ] c#d \n",
want: &nssConf{
sources: map[string][]nssSource{
"foo": {
{source: "a"},
{
source: "b",
criteria: []nssCriterion{
{
negate: true,
status: "a",
action: "b",
},
{
status: "x",
action: "y",
},
},
},
{source: "c"},
},
},
},
},
// Ubuntu Trusty w/ avahi-daemon, libavahi-* etc installed.
{
name: "ubuntu_trusty_avahi",
in: ubuntuTrustyAvahi,
want: &nssConf{
sources: map[string][]nssSource{
"passwd": {{source: "compat"}},
"group": {{source: "compat"}},
"shadow": {{source: "compat"}},
"hosts": {
{source: "files"},
{
source: "mdns4_minimal",
criteria: []nssCriterion{
{
negate: false,
status: "notfound",
action: "return",
},
},
},
{source: "dns"},
{source: "mdns4"},
},
"networks": {{source: "files"}},
"protocols": {
{source: "db"},
{source: "files"},
},
"services": {
{source: "db"},
{source: "files"},
},
"ethers": {
{source: "db"},
{source: "files"},
},
"rpc": {
{source: "db"},
{source: "files"},
},
"netgroup": {
{source: "nis"},
},
},
},
},
}
for _, tt := range tests {
gotConf := parseNSSConf(strings.NewReader(tt.in))
if !reflect.DeepEqual(gotConf, tt.want) {
t.Errorf("%s: mismatch\n got %#v\nwant %#v", tt.name, gotConf, tt.want)
}
}
}