blob: 5712da9a25d48c6c5a55c79afbe7692cd3d33f43 [file] [log] [blame]
Colin Cross36f55aa2022-03-21 18:46:41 -07001// Copyright 2022 Google Inc. All rights reserved.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15package main
16
17import (
18 "bytes"
19 "strings"
20 "testing"
21)
22
23func Test_extractR8CompilerHash(t *testing.T) {
24 testCases := []struct {
25 name string
26 data string
27
28 hash string
29 err string
30 }{
31 {
32 name: "simple",
33 data: `# compiler: R8
34# compiler_version: 3.3.18-dev
35# min_api: 10000
36# compiler_hash: bab44c1a04a2201b55fe10394f477994205c34e0
37# common_typos_disable
38# {"id":"com.android.tools.r8.mapping","version":"2.0"}
39# pg_map_id: 7fe8b95
40# pg_map_hash: SHA-256 7fe8b95ae71f179f63d2a585356fb9cf2c8fb94df9c9dd50621ffa6d9e9e88da
41android.car.userlib.UserHelper -> android.car.userlib.UserHelper:
42`,
43 hash: "7fe8b95ae71f179f63d2a585356fb9cf2c8fb94df9c9dd50621ffa6d9e9e88da",
44 },
45 {
46 name: "empty",
47 data: ``,
48 hash: "",
49 },
50 {
51 name: "non comment line",
52 data: `# compiler: R8
53# compiler_version: 3.3.18-dev
54# min_api: 10000
55# compiler_hash: bab44c1a04a2201b55fe10394f477994205c34e0
56# common_typos_disable
57# {"id":"com.android.tools.r8.mapping","version":"2.0"}
58# pg_map_id: 7fe8b95
59android.car.userlib.UserHelper -> android.car.userlib.UserHelper:
60# pg_map_hash: SHA-256 7fe8b95ae71f179f63d2a585356fb9cf2c8fb94df9c9dd50621ffa6d9e9e88da
61`,
62 hash: "",
63 },
64 {
65 name: "invalid hash",
66 data: `# pg_map_hash: foobar 7fe8b95ae71f179f63d2a585356fb9cf2c8fb94df9c9dd50621ffa6d9e9e88da`,
67 err: "invalid hash type",
68 },
69 }
70
71 for _, tt := range testCases {
72 t.Run(tt.name, func(t *testing.T) {
73 hash, err := extractR8CompilerHash(bytes.NewBufferString(tt.data))
74 if err != nil {
75 if tt.err != "" {
76 if !strings.Contains(err.Error(), tt.err) {
77 t.Fatalf("incorrect error in extractR8CompilerHash, want %s got %s", tt.err, err)
78 }
79 } else {
80 t.Fatalf("unexpected error in extractR8CompilerHash: %s", err)
81 }
82 } else if tt.err != "" {
83 t.Fatalf("missing error in extractR8CompilerHash, want %s", tt.err)
84 }
85
86 if g, w := hash, tt.hash; g != w {
87 t.Errorf("incorrect hash, want %q got %q", w, g)
88 }
89 })
90 }
91}