Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 45376407 authored by Anton Hansson's avatar Anton Hansson
Browse files

Expand neverallow for sdk_version: none

Allow the platform stubs to specify sdk_version: none,
and add generic support for a regexp matcher.

Bug: 144149403
Test: m
Change-Id: Icaece0d9797bace8ae9741f7a029b9ea57fcbbb9
parent 0d4b9e32
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package android
import (
	"path/filepath"
	"reflect"
	"regexp"
	"strconv"
	"strings"

@@ -147,7 +148,8 @@ func createLibcoreRules() []Rule {
	rules := []Rule{
		NeverAllow().
			NotIn(coreLibraryProjects...).
			With("sdk_version", "none"),
			With("sdk_version", "none").
			WithoutMatcher("name", Regexp("^android_.*stubs_current$")),
	}

	return rules
@@ -286,6 +288,18 @@ func (m *startsWithMatcher) String() string {
	return ".starts-with(" + m.prefix + ")"
}

type regexMatcher struct {
	re *regexp.Regexp
}

func (m *regexMatcher) test(value string) bool {
	return m.re.MatchString(value)
}

func (m *regexMatcher) String() string {
	return ".regexp(" + m.re.String() + ")"
}

type isSetMatcher struct{}

func (m *isSetMatcher) test(value string) bool {
@@ -501,6 +515,14 @@ func StartsWith(prefix string) ValueMatcher {
	return &startsWithMatcher{prefix}
}

func Regexp(re string) ValueMatcher {
	r, err := regexp.Compile(re)
	if err != nil {
		panic(err)
	}
	return &regexMatcher{r}
}

// assorted utils

func cleanPaths(paths []string) []string {
+10 −0
Original line number Diff line number Diff line
@@ -226,6 +226,16 @@ var neverallowTests = []struct {
				}`),
		},
	},
	{
		name: "sdk_version: \"none\" on android_*stubs_current stub",
		fs: map[string][]byte{
			"frameworks/base/Android.bp": []byte(`
				java_library {
					name: "android_stubs_current",
					sdk_version: "none",
				}`),
		},
	},
	{
		name: "sdk_version: \"none\" outside core libraries",
		fs: map[string][]byte{