mirror of
https://github.com/golang/go
synced 2024-11-14 14:30:23 -07:00
d4b2638234
Make all our package sources use Go 1.17 gofmt format (adding //go:build lines). Part of //go:build change (#41184). See https://golang.org/design/draft-gobuild Change-Id: Ia0534360e4957e58cd9a18429c39d0e32a6addb4 Reviewed-on: https://go-review.googlesource.com/c/go/+/294430 Trust: Russ Cox <rsc@golang.org> Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Jason A. Donenfeld <Jason@zx2c4.com> Reviewed-by: Ian Lance Taylor <iant@golang.org>
171 lines
3.4 KiB
Go
171 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
|
|
// +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)
|
|
}
|
|
}
|
|
}
|