blob: 999026faf48a5f623f6ac44f2577e6d9a8147a5f [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package gndoc
import (
"bytes"
"testing"
)
const (
numKeys = 2
)
var (
defaultx64Arg = Arg{
Name: "default",
DefaultVal: argValue{
Val: "false",
File: "//test/BUILD.gn",
Line: 2,
},
Comment: "Description of default arg.\n",
Key: "target_cpu = x64",
}
defaultarm64Arg = Arg{
Name: "default",
DefaultVal: argValue{
Val: "false",
File: "//test/BUILD.gn",
Line: 2,
},
Comment: "Description of default arg.\n",
Key: "target_cpu = arm64",
}
defaultarm64ArgWithCurrent = Arg{
Name: "default_current",
CurrentVal: argValue{
Val: "[1, 2]",
File: "//build/BUILD.gn",
Line: 24,
},
DefaultVal: argValue{
Val: "[3, 4]",
File: "//base/BUILD.gn",
Line: 4,
},
Comment: "Description of default_current arg.\n",
Key: "target_cpu = arm64",
}
defaultx64ArgWithCurrent = Arg{
Name: "default_current",
CurrentVal: argValue{
Val: "3",
File: "//build/BUILD.gn",
Line: 24,
},
DefaultVal: argValue{
Val: "4",
File: "//base/BUILD.gn",
Line: 2,
},
Comment: "Description of default_current arg.\n",
Key: "target_cpu = x64",
}
x64Arg = Arg{
Name: "x64",
CurrentVal: argValue{
Val: "1",
},
DefaultVal: argValue{
Val: "2",
},
Comment: "Description of x64 arg that references //build/path.py, //sources, and //base.\n",
Key: "target_cpu = x64",
}
arm64Arg = Arg{
Name: "arm64",
CurrentVal: argValue{
Val: "arg",
},
DefaultVal: argValue{
Val: "value",
},
Comment: "Description of arm64 arg.\n",
Key: "target_cpu = arm64",
}
twoKeyarm64TestArg = Arg{
Name: "arm64",
CurrentVal: argValue{
Val: "arg",
},
DefaultVal: argValue{
Val: "value",
},
Comment: "Description of arm64 arg.\n",
Key: "target_cpu = arm64, package='test/package/default'",
}
twoKeyx64TestArg = Arg{
Name: "x64",
CurrentVal: argValue{
Val: "arg",
},
DefaultVal: argValue{
Val: "value",
},
Comment: "Description of x64 arg.\n",
Key: "target_cpu = x64, package='test/package/default'",
}
twoKeyarm64OtherArg = Arg{
Name: "arm64Other",
CurrentVal: argValue{
Val: "arg",
},
DefaultVal: argValue{
Val: "value",
},
Comment: "Description of arm64 arg.\n",
Key: "target_cpu = arm64, package='other/package/default'",
}
twoKeyx64OtherArg = Arg{
Name: "x64Other",
CurrentVal: argValue{
Val: "arg",
},
DefaultVal: argValue{
Val: "value",
},
Comment: "Description of x64 arg.\n",
Key: "target_cpu = x64, package='other/package/default'",
}
newLineValueArg = Arg{
Name: "NewLine",
DefaultVal: argValue{
Val: "{\n base = \"//build/toolchain/fuchsia:x64\"\n}",
},
Comment: "Description of newline arg.\n",
Key: "target_cpu = x64, package='other/package/default'",
}
)
func TestDefault(t *testing.T) {
gnArgs := []Arg{defaultx64Arg, defaultarm64Arg}
argMap := NewArgMap()
for _, arg := range gnArgs {
argMap.AddArg(arg)
}
// No file name emits to stdout.
var buffer bytes.Buffer
argMap.EmitMarkdown(&buffer)
actual := buffer.String()
expected := `# GN Build Arguments
## All builds
### default
Description of default arg.
**Current value (from the default):** ` + "`false`" + `
From //test/BUILD.gn:2
`
if expected != actual {
t.Fatalf("In TestDefault, expected \n%s but got \n%s", expected, actual)
}
}
func TestDefaultWithCurrent(t *testing.T) {
gnArgs := []Arg{defaultx64ArgWithCurrent, defaultarm64ArgWithCurrent}
argMap := NewArgMap()
for _, arg := range gnArgs {
argMap.AddArg(arg)
}
// No file name emits to stdout.
var buffer bytes.Buffer
argMap.EmitMarkdown(&buffer)
actual := buffer.String()
expected := `# GN Build Arguments
## All builds
### default_current
Description of default_current arg.
**Current value for ` + "`target_cpu = arm64`:** `[1, 2]`" + `
From //build/BUILD.gn:24
**Overridden from the default:** ` + "`[3, 4]`" + `
From //base/BUILD.gn:4
**Current value for ` + "`target_cpu = x64`:** `3`" + `
From //build/BUILD.gn:24
**Overridden from the default:**` + " `4`" + `
From //base/BUILD.gn:2
`
if expected != actual {
t.Fatalf("In TestDefaultWithCurrent, expected \n%s but got \n%s", expected, actual)
}
}
func TestUnique(t *testing.T) {
gnArgs := []Arg{x64Arg, arm64Arg}
argMap := NewArgMap()
for _, arg := range gnArgs {
argMap.AddArg(arg)
}
// No file name emits to stdout.
var buffer bytes.Buffer
argMap.EmitMarkdown(&buffer)
actual := buffer.String()
expected := `# GN Build Arguments
## ` + "`target_cpu = arm64`" + `
### arm64
Description of arm64 arg.
**Current value for ` + "`target_cpu = arm64`:** `arg`" + `
**Overridden from the default:** ` + "`value`" + `
## ` + "`target_cpu = x64`" + `
### x64
Description of x64 arg that references //build/path.py, //sources, and //base.
**Current value for ` + "`target_cpu = x64`:** `1`" + `
**Overridden from the default:** ` + "`2`" + `
`
if expected != actual {
t.Fatalf("In TestUnique, expected \n%s but got \n%s", expected, actual)
}
}
func TestTwoKeys(t *testing.T) {
gnArgs := []Arg{twoKeyarm64TestArg, twoKeyx64TestArg, twoKeyarm64OtherArg, twoKeyx64OtherArg}
argMap := NewArgMap()
for _, arg := range gnArgs {
argMap.AddArg(arg)
}
// No file name emits to stdout.
var buffer bytes.Buffer
argMap.EmitMarkdown(&buffer)
actual := buffer.String()
expected := `# GN Build Arguments
## ` + "`target_cpu = arm64, package='other/package/default'`" + `
### arm64Other
Description of arm64 arg.
**Current value for ` + "`target_cpu = arm64, package='other/package/default'`:** `arg`" + `
**Overridden from the default:** ` + "`value`" + `
## ` + "`target_cpu = arm64, package='test/package/default'`" + `
### arm64
Description of arm64 arg.
**Current value for ` + "`target_cpu = arm64, package='test/package/default'`:** `arg`" + `
**Overridden from the default:** ` + "`value`" + `
## ` + "`target_cpu = x64, package='other/package/default'`" + `
### x64Other
Description of x64 arg.
**Current value for ` + "`target_cpu = x64, package='other/package/default'`:** `arg`" + `
**Overridden from the default:** ` + "`value`" + `
## ` + "`target_cpu = x64, package='test/package/default'`" + `
### x64
Description of x64 arg.
**Current value for ` + "`target_cpu = x64, package='test/package/default'`:** `arg`" + `
**Overridden from the default:** ` + "`value`" + `
`
if expected != actual {
t.Fatalf("In TestUnique, expected \n%s but got \n%s", expected, actual)
}
}
func TestValueNewLine(t *testing.T) {
gnArgs := []Arg{newLineValueArg}
argMap := NewArgMap()
for _, arg := range gnArgs {
argMap.AddArg(arg)
}
// No file name emits to stdout.
var buffer bytes.Buffer
argMap.EmitMarkdown(&buffer)
actual := buffer.String()
expected := `# GN Build Arguments
## All builds
### NewLine
Description of newline arg.
**Current value (from the default):**
` + "\n```none" + `
{
base = "//build/toolchain/fuchsia:x64"
}
` + "```" + `
`
if expected != actual {
t.Fatalf("In TestDefault, expected \n%s but got \n%s", expected, actual)
}
}