Loading rust/project_json.go +6 −2 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ type rustProjectCrate struct { RootModule string `json:"root_module"` Edition string `json:"edition,omitempty"` Deps []rustProjectDep `json:"deps"` Cfgs []string `json:"cfgs"` Cfg []string `json:"cfg"` Env map[string]string `json:"env"` } Loading Loading @@ -230,7 +230,7 @@ func (singleton *projectGeneratorSingleton) addCrate(ctx android.SingletonContex RootModule: rootModule, Edition: comp.edition(), Deps: make([]rustProjectDep, 0), Cfgs: make([]string, 0), Cfg: make([]string, 0), Env: make(map[string]string), } Loading @@ -238,6 +238,10 @@ func (singleton *projectGeneratorSingleton) addCrate(ctx android.SingletonContex crate.Env["OUT_DIR"] = comp.CargoOutDir().String() } for _, feature := range comp.Properties.Features { crate.Cfg = append(crate.Cfg, "feature=\""+feature+"\"") } deps := make(map[string]int) singleton.mergeDependencies(ctx, rModule, &crate, deps) Loading rust/project_json_test.go +36 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ import ( "encoding/json" "io/ioutil" "path/filepath" "sort" "strings" "testing" Loading Loading @@ -115,6 +116,41 @@ func TestProjectJsonDep(t *testing.T) { validateJsonCrates(t, jsonContent) } func TestProjectJsonFeature(t *testing.T) { bp := ` rust_library { name: "liba", srcs: ["a/src/lib.rs"], crate_name: "a", features: ["f1", "f2"] } ` jsonContent := testProjectJson(t, bp) crates := validateJsonCrates(t, jsonContent) for _, c := range crates { crate := validateCrate(t, c) cfgs, ok := crate["cfg"].([]interface{}) if !ok { t.Fatalf("Unexpected type for cfgs: %v", crate) } expectedCfgs := []string{"feature=\"f1\"", "feature=\"f2\""} foundCfgs := []string{} for _, cfg := range cfgs { cfg, ok := cfg.(string) if !ok { t.Fatalf("Unexpected type for cfg: %v", cfg) } foundCfgs = append(foundCfgs, cfg) } sort.Strings(foundCfgs) for i, foundCfg := range foundCfgs { if foundCfg != expectedCfgs[i] { t.Errorf("Incorrect features: got %v; want %v", foundCfg, expectedCfgs[i]) } } } } func TestProjectJsonBinary(t *testing.T) { bp := ` rust_binary { Loading Loading
rust/project_json.go +6 −2 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ type rustProjectCrate struct { RootModule string `json:"root_module"` Edition string `json:"edition,omitempty"` Deps []rustProjectDep `json:"deps"` Cfgs []string `json:"cfgs"` Cfg []string `json:"cfg"` Env map[string]string `json:"env"` } Loading Loading @@ -230,7 +230,7 @@ func (singleton *projectGeneratorSingleton) addCrate(ctx android.SingletonContex RootModule: rootModule, Edition: comp.edition(), Deps: make([]rustProjectDep, 0), Cfgs: make([]string, 0), Cfg: make([]string, 0), Env: make(map[string]string), } Loading @@ -238,6 +238,10 @@ func (singleton *projectGeneratorSingleton) addCrate(ctx android.SingletonContex crate.Env["OUT_DIR"] = comp.CargoOutDir().String() } for _, feature := range comp.Properties.Features { crate.Cfg = append(crate.Cfg, "feature=\""+feature+"\"") } deps := make(map[string]int) singleton.mergeDependencies(ctx, rModule, &crate, deps) Loading
rust/project_json_test.go +36 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ import ( "encoding/json" "io/ioutil" "path/filepath" "sort" "strings" "testing" Loading Loading @@ -115,6 +116,41 @@ func TestProjectJsonDep(t *testing.T) { validateJsonCrates(t, jsonContent) } func TestProjectJsonFeature(t *testing.T) { bp := ` rust_library { name: "liba", srcs: ["a/src/lib.rs"], crate_name: "a", features: ["f1", "f2"] } ` jsonContent := testProjectJson(t, bp) crates := validateJsonCrates(t, jsonContent) for _, c := range crates { crate := validateCrate(t, c) cfgs, ok := crate["cfg"].([]interface{}) if !ok { t.Fatalf("Unexpected type for cfgs: %v", crate) } expectedCfgs := []string{"feature=\"f1\"", "feature=\"f2\""} foundCfgs := []string{} for _, cfg := range cfgs { cfg, ok := cfg.(string) if !ok { t.Fatalf("Unexpected type for cfg: %v", cfg) } foundCfgs = append(foundCfgs, cfg) } sort.Strings(foundCfgs) for i, foundCfg := range foundCfgs { if foundCfg != expectedCfgs[i] { t.Errorf("Incorrect features: got %v; want %v", foundCfg, expectedCfgs[i]) } } } } func TestProjectJsonBinary(t *testing.T) { bp := ` rust_binary { Loading