Fix writing soong.variables .
ConfiguredJarList had a marshaler but no unmarshaler. Bug: 182965747 Test: Presubmits. Change-Id: Id03669f4a0a3d389063a4e4b11af6d6be63dbba3
This commit is contained in:
parent
45a4971808
commit
720b3964fe
|
@ -19,6 +19,7 @@ package android
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"os"
|
"os"
|
||||||
|
@ -1635,6 +1636,20 @@ func (l *ConfiguredJarList) UnmarshalJSON(b []byte) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (l *ConfiguredJarList) MarshalJSON() ([]byte, error) {
|
||||||
|
if len(l.apexes) != len(l.jars) {
|
||||||
|
return nil, errors.New(fmt.Sprintf("Inconsistent ConfiguredJarList: apexes: %q, jars: %q", l.apexes, l.jars))
|
||||||
|
}
|
||||||
|
|
||||||
|
list := make([]string, 0, len(l.apexes))
|
||||||
|
|
||||||
|
for i := 0; i < len(l.apexes); i++ {
|
||||||
|
list = append(list, l.apexes[i]+":"+l.jars[i])
|
||||||
|
}
|
||||||
|
|
||||||
|
return json.Marshal(list)
|
||||||
|
}
|
||||||
|
|
||||||
// ModuleStem hardcodes the stem of framework-minus-apex to return "framework".
|
// ModuleStem hardcodes the stem of framework-minus-apex to return "framework".
|
||||||
//
|
//
|
||||||
// TODO(b/139391334): hard coded until we find a good way to query the stem of a
|
// TODO(b/139391334): hard coded until we find a good way to query the stem of a
|
||||||
|
|
|
@ -16,6 +16,7 @@ package android
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"path/filepath"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -87,6 +88,37 @@ func TestMissingVendorConfig(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func verifyProductVariableMarshaling(t *testing.T, v productVariables) {
|
||||||
|
dir := t.TempDir()
|
||||||
|
path := filepath.Join(dir, "test.variables")
|
||||||
|
err := saveToConfigFile(&v, path)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Couldn't save default product config: %q", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var v2 productVariables
|
||||||
|
err = loadFromConfigFile(&v2, path)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("Couldn't load default product config: %q", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
func TestDefaultProductVariableMarshaling(t *testing.T) {
|
||||||
|
v := productVariables{}
|
||||||
|
v.SetDefaultConfig()
|
||||||
|
verifyProductVariableMarshaling(t, v)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBootJarsMarshaling(t *testing.T) {
|
||||||
|
v := productVariables{}
|
||||||
|
v.SetDefaultConfig()
|
||||||
|
v.BootJars = ConfiguredJarList{
|
||||||
|
apexes: []string{"apex"},
|
||||||
|
jars: []string{"jar"},
|
||||||
|
}
|
||||||
|
|
||||||
|
verifyProductVariableMarshaling(t, v)
|
||||||
|
}
|
||||||
|
|
||||||
func assertStringEquals(t *testing.T, expected, actual string) {
|
func assertStringEquals(t *testing.T, expected, actual string) {
|
||||||
if actual != expected {
|
if actual != expected {
|
||||||
t.Errorf("expected %q found %q", expected, actual)
|
t.Errorf("expected %q found %q", expected, actual)
|
||||||
|
|
|
@ -426,6 +426,9 @@ func (v *productVariables) SetDefaultConfig() {
|
||||||
Malloc_zero_contents: boolPtr(true),
|
Malloc_zero_contents: boolPtr(true),
|
||||||
Malloc_pattern_fill_contents: boolPtr(false),
|
Malloc_pattern_fill_contents: boolPtr(false),
|
||||||
Safestack: boolPtr(false),
|
Safestack: boolPtr(false),
|
||||||
|
|
||||||
|
BootJars: ConfiguredJarList{apexes: []string{}, jars: []string{}},
|
||||||
|
UpdatableBootJars: ConfiguredJarList{apexes: []string{}, jars: []string{}},
|
||||||
}
|
}
|
||||||
|
|
||||||
if runtime.GOOS == "linux" {
|
if runtime.GOOS == "linux" {
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
# in a source tree that only contains enough files for Bazel and Soong to work.
|
# in a source tree that only contains enough files for Bazel and Soong to work.
|
||||||
|
|
||||||
HARDWIRED_MOCK_TOP=
|
HARDWIRED_MOCK_TOP=
|
||||||
# Uncomment this for to be able to view the source tree after a test is run
|
# Uncomment this to be able to view the source tree after a test is run
|
||||||
# HARDWIRED_MOCK_TOP=/tmp/td
|
# HARDWIRED_MOCK_TOP=/tmp/td
|
||||||
|
|
||||||
REAL_TOP="$(readlink -f "$(dirname "$0")"/../..)"
|
REAL_TOP="$(readlink -f "$(dirname "$0")"/../..)"
|
||||||
|
@ -85,63 +85,6 @@ function setup() {
|
||||||
export ALLOW_MISSING_DEPENDENCIES=true
|
export ALLOW_MISSING_DEPENDENCIES=true
|
||||||
|
|
||||||
mkdir -p out/soong
|
mkdir -p out/soong
|
||||||
# This is necessary because the empty soong.variables file written to satisfy
|
|
||||||
# Ninja would contain "BootJars: {}" instead of "BootJars: []" which cannot
|
|
||||||
# be parsed back
|
|
||||||
# TODO(b/182965747): Fix this.
|
|
||||||
cat > out/soong/soong.variables <<'EOF'
|
|
||||||
{
|
|
||||||
"BuildNumberFile": "build_number.txt",
|
|
||||||
"Platform_version_name": "S",
|
|
||||||
"Platform_sdk_version": 30,
|
|
||||||
"Platform_sdk_codename": "S",
|
|
||||||
"Platform_sdk_final": false,
|
|
||||||
"Platform_version_active_codenames": [
|
|
||||||
"S"
|
|
||||||
],
|
|
||||||
"Platform_vndk_version": "S",
|
|
||||||
"DeviceName": "generic_arm64",
|
|
||||||
"DeviceArch": "arm64",
|
|
||||||
"DeviceArchVariant": "armv8-a",
|
|
||||||
"DeviceCpuVariant": "generic",
|
|
||||||
"DeviceAbi": [
|
|
||||||
"arm64-v8a"
|
|
||||||
],
|
|
||||||
"DeviceSecondaryArch": "arm",
|
|
||||||
"DeviceSecondaryArchVariant": "armv8-a",
|
|
||||||
"DeviceSecondaryCpuVariant": "generic",
|
|
||||||
"DeviceSecondaryAbi": [
|
|
||||||
"armeabi-v7a",
|
|
||||||
"armeabi"
|
|
||||||
],
|
|
||||||
"HostArch": "x86_64",
|
|
||||||
"HostSecondaryArch": "x86",
|
|
||||||
"CrossHost": "windows",
|
|
||||||
"CrossHostArch": "x86",
|
|
||||||
"CrossHostSecondaryArch": "x86_64",
|
|
||||||
"AAPTCharacteristics": "nosdcard",
|
|
||||||
"AAPTConfig": [
|
|
||||||
"normal",
|
|
||||||
"large",
|
|
||||||
"xlarge",
|
|
||||||
"hdpi",
|
|
||||||
"xhdpi",
|
|
||||||
"xxhdpi"
|
|
||||||
],
|
|
||||||
"AAPTPreferredConfig": "xhdpi",
|
|
||||||
"AAPTPrebuiltDPI": [
|
|
||||||
"xhdpi",
|
|
||||||
"xxhdpi"
|
|
||||||
],
|
|
||||||
"Malloc_not_svelte": true,
|
|
||||||
"Malloc_zero_contents": true,
|
|
||||||
"Malloc_pattern_fill_contents": false,
|
|
||||||
"Safestack": false,
|
|
||||||
"BootJars": [],
|
|
||||||
"UpdatableBootJars": [],
|
|
||||||
"Native_coverage": null
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function run_soong() {
|
function run_soong() {
|
||||||
|
|
Loading…
Reference in New Issue