diff options
author | 2020-06-05 11:09:27 +0200 | |
---|---|---|
committer | 2020-06-11 11:22:31 +0200 | |
commit | e4d12a04684ad7792f797fb676541af99311d941 (patch) | |
tree | fae8fa50c05b3a751de136f6a816a163639de5b6 /rust/project_json_test.go | |
parent | 4a19d08d39f85403708111dbe44bdd1174959566 (diff) |
Add rust-project.json generator
Because we are not relying on Cargo.toml for our crate dependencies,
we need to provide a structured file to rust-analyzer which describes
the locations of the crates. Add a generator for that purpose, similarly
to cc/compdb and cc/ccdeps.
Bug: 156395307
Test: SOONG_GEN_RUST_PROJECT=1 m nothing && \
cat ${ANDROID_BUILD_TOP}/out/soong/rust-project.json
Change-Id: I46efe0adeddae281eaf86707504c3aa15b5e80b8
Diffstat (limited to 'rust/project_json_test.go')
-rw-r--r-- | rust/project_json_test.go | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/rust/project_json_test.go b/rust/project_json_test.go new file mode 100644 index 000000000..6786e72c7 --- /dev/null +++ b/rust/project_json_test.go @@ -0,0 +1,55 @@ +// Copyright 2020 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package rust + +import ( + "io/ioutil" + "path/filepath" + "testing" + + "android/soong/android" + "android/soong/cc" +) + +func TestProjectJson(t *testing.T) { + bp := `rust_library { + name: "liba", + srcs: ["src/lib.rs"], + crate_name: "a" + }` + GatherRequiredDepsForTest() + env := map[string]string{"SOONG_GEN_RUST_PROJECT": "1"} + fs := map[string][]byte{ + "foo.rs": nil, + "src/lib.rs": nil, + } + + cc.GatherRequiredFilesForTest(fs) + + config := android.TestArchConfig(buildDir, env, bp, fs) + ctx := CreateTestContext() + ctx.Register(config) + _, errs := ctx.ParseFileList(".", []string{"Android.bp"}) + android.FailIfErrored(t, errs) + _, errs = ctx.PrepareBuildActions(config) + android.FailIfErrored(t, errs) + + // The JSON file is generated via WriteFileToOutputDir. Therefore, it + // won't appear in the Output of the TestingSingleton. Manually verify + // it exists. + _, err := ioutil.ReadFile(filepath.Join(buildDir, "rust-project.json")) + if err != nil { + t.Errorf("rust-project.json has not been generated") + } +} |