2017-07-18 François Dumont <fdumont@gcc.gnu.org>
[official-gcc.git] / libgo / go / net / nss_test.go
blob371deb502d10d01dae12bc711f48d5cb9a1a4690
1 // Copyright 2015 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
5 // +build darwin dragonfly freebsd linux netbsd openbsd solaris
7 package net
9 import (
10 "reflect"
11 "strings"
12 "testing"
15 const ubuntuTrustyAvahi = `# /etc/nsswitch.conf
17 # Example configuration of GNU Name Service Switch functionality.
18 # If you have the libc-doc-reference' and nfo' packages installed, try:
19 # nfo libc "Name Service Switch"' for information about this file.
21 passwd: compat
22 group: compat
23 shadow: compat
25 hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
26 networks: files
28 protocols: db files
29 services: db files
30 ethers: db files
31 rpc: db files
33 netgroup: nis
36 func TestParseNSSConf(t *testing.T) {
37 tests := []struct {
38 name string
39 in string
40 want *nssConf
43 name: "no_newline",
44 in: "foo: a b",
45 want: &nssConf{
46 sources: map[string][]nssSource{
47 "foo": {{source: "a"}, {source: "b"}},
52 name: "newline",
53 in: "foo: a b\n",
54 want: &nssConf{
55 sources: map[string][]nssSource{
56 "foo": {{source: "a"}, {source: "b"}},
61 name: "whitespace",
62 in: " foo:a b \n",
63 want: &nssConf{
64 sources: map[string][]nssSource{
65 "foo": {{source: "a"}, {source: "b"}},
70 name: "comment1",
71 in: " foo:a b#c\n",
72 want: &nssConf{
73 sources: map[string][]nssSource{
74 "foo": {{source: "a"}, {source: "b"}},
79 name: "comment2",
80 in: " foo:a b #c \n",
81 want: &nssConf{
82 sources: map[string][]nssSource{
83 "foo": {{source: "a"}, {source: "b"}},
88 name: "crit",
89 in: " foo:a b [!a=b X=Y ] c#d \n",
90 want: &nssConf{
91 sources: map[string][]nssSource{
92 "foo": {
93 {source: "a"},
95 source: "b",
96 criteria: []nssCriterion{
98 negate: true,
99 status: "a",
100 action: "b",
103 status: "x",
104 action: "y",
108 {source: "c"},
114 // Ubuntu Trusty w/ avahi-daemon, libavahi-* etc installed.
116 name: "ubuntu_trusty_avahi",
117 in: ubuntuTrustyAvahi,
118 want: &nssConf{
119 sources: map[string][]nssSource{
120 "passwd": {{source: "compat"}},
121 "group": {{source: "compat"}},
122 "shadow": {{source: "compat"}},
123 "hosts": {
124 {source: "files"},
126 source: "mdns4_minimal",
127 criteria: []nssCriterion{
129 negate: false,
130 status: "notfound",
131 action: "return",
135 {source: "dns"},
136 {source: "mdns4"},
138 "networks": {{source: "files"}},
139 "protocols": {
140 {source: "db"},
141 {source: "files"},
143 "services": {
144 {source: "db"},
145 {source: "files"},
147 "ethers": {
148 {source: "db"},
149 {source: "files"},
151 "rpc": {
152 {source: "db"},
153 {source: "files"},
155 "netgroup": {
156 {source: "nis"},
163 for _, tt := range tests {
164 gotConf := parseNSSConf(strings.NewReader(tt.in))
165 if !reflect.DeepEqual(gotConf, tt.want) {
166 t.Errorf("%s: mismatch\n got %#v\nwant %#v", tt.name, gotConf, tt.want)