diff --git a/.golangci.yml b/.golangci.yml index 8c4834bc..3b311bff 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -40,6 +40,7 @@ linters: - godot - gocognit - funlen + - dupl disable: - bodyclose - depguard @@ -108,3 +109,10 @@ issues: - lll - path: (sys/.*/init.*|sys/targets/common.go) text: "don't use ALL_CAPS in Go names" + # TODO: this is bad, need to fix and remove the suppression. + - path: (pkg/report/(net|open)bsd.*) + linters: + - dupl + - path: (dashboard/app/.*_test\.go) + linters: + - dupl diff --git a/pkg/vcs/git_repo_test.go b/pkg/vcs/git_repo_test.go index 2e768a72..2bb8570d 100644 --- a/pkg/vcs/git_repo_test.go +++ b/pkg/vcs/git_repo_test.go @@ -315,10 +315,29 @@ func TestBisect(t *testing.T) { commits = append(commits, com.Hash) t.Logf("%v %v", com.Hash, com.Title) } + type predFunc func() (BisectResult, error) type Test struct { - pred func() (BisectResult, error) + pred predFunc result []string } + makePred := func(res1, res2, res3 BisectResult) predFunc { + return func() (BisectResult, error) { + current, err := repo.repo.HeadCommit() + if err != nil { + t.Fatal(err) + } + switch current.Hash { + case commits[1]: + return res1, nil + case commits[2]: + return res2, nil + case commits[3]: + return res3, nil + default: + return 0, fmt.Errorf("unknown commit %v", current.Hash) + } + } + } tests := []Test{ { // All are bad. @@ -343,62 +362,17 @@ func TestBisect(t *testing.T) { }, { // Some are skipped. - func() (BisectResult, error) { - current, err := repo.repo.HeadCommit() - if err != nil { - t.Fatal(err) - } - switch current.Hash { - case commits[1]: - return BisectSkip, nil - case commits[2]: - return BisectSkip, nil - case commits[3]: - return BisectGood, nil - default: - return 0, fmt.Errorf("unknown commit %v", current.Hash) - } - }, + makePred(BisectSkip, BisectSkip, BisectGood), []string{commits[4]}, }, { // Some are skipped. - func() (BisectResult, error) { - current, err := repo.repo.HeadCommit() - if err != nil { - t.Fatal(err) - } - switch current.Hash { - case commits[1]: - return BisectGood, nil - case commits[2]: - return BisectSkip, nil - case commits[3]: - return BisectBad, nil - default: - return 0, fmt.Errorf("unknown commit %v", current.Hash) - } - }, + makePred(BisectGood, BisectSkip, BisectBad), []string{commits[2], commits[3]}, }, { // Some are skipped. - func() (BisectResult, error) { - current, err := repo.repo.HeadCommit() - if err != nil { - t.Fatal(err) - } - switch current.Hash { - case commits[1]: - return BisectSkip, nil - case commits[2]: - return BisectSkip, nil - case commits[3]: - return BisectGood, nil - default: - return 0, fmt.Errorf("unknown commit %v", current.Hash) - } - }, + makePred(BisectSkip, BisectSkip, BisectGood), []string{commits[4]}, }, } diff --git a/sys/targets/targets.go b/sys/targets/targets.go index 47b3d8a9..b33dd560 100644 --- a/sys/targets/targets.go +++ b/sys/targets/targets.go @@ -264,23 +264,7 @@ var List = map[string]map[string]*Target{ KernelHeaderArch: "x64", CCompiler: sourceDirVar + "/prebuilt/third_party/clang/linux-x64/bin/clang", Objdump: sourceDirVar + "/prebuilt/third_party/clang/linux-x64/bin/llvm-objdump", - CFlags: []string{ - "-Wno-deprecated", - "--target=x86_64-fuchsia", - "-ldriver", - "-lfdio", - "-lzircon", - "--sysroot", sourceDirVar + "/out/x64/zircon_toolchain/obj/zircon/public/sysroot/sysroot", - "-I", sourceDirVar + "/zircon/system/ulib/fdio/include", - "-I", sourceDirVar + "/zircon/system/ulib/fidl/include", - "-I", sourceDirVar + "/src/lib/ddk/include", - "-I", sourceDirVar + "/out/x64/fidling/gen/sdk/fidl/fuchsia.device", - "-I", sourceDirVar + "/out/x64/fidling/gen/sdk/fidl/fuchsia.device.manager", - "-I", sourceDirVar + "/out/x64/fidling/gen/sdk/fidl/fuchsia.hardware.nand", - "-I", sourceDirVar + "/out/x64/fidling/gen/sdk/fidl/fuchsia.hardware.usb.peripheral", - "-I", sourceDirVar + "/out/x64/fidling/gen/zircon/vdso/zx", - "-L", sourceDirVar + "/out/x64/x64-shared", - }, + CFlags: fuchsiaCFlags("x64", "x86_64"), }, "arm64": { PtrSize: 8, @@ -288,23 +272,7 @@ var List = map[string]map[string]*Target{ KernelHeaderArch: "arm64", CCompiler: sourceDirVar + "/prebuilt/third_party/clang/linux-x64/bin/clang", Objdump: sourceDirVar + "/prebuilt/third_party/clang/linux-x64/bin/llvm-objdump", - CFlags: []string{ - "-Wno-deprecated", - "--target=aarch64-fuchsia", - "-ldriver", - "-lfdio", - "-lzircon", - "--sysroot", sourceDirVar + "/out/arm64/zircon_toolchain/obj/zircon/public/sysroot/sysroot", - "-I", sourceDirVar + "/zircon/system/ulib/fdio/include", - "-I", sourceDirVar + "/zircon/system/ulib/fidl/include", - "-I", sourceDirVar + "/src/lib/ddk/include", - "-I", sourceDirVar + "/out/arm64/fidling/gen/sdk/fidl/fuchsia.device", - "-I", sourceDirVar + "/out/arm64/fidling/gen/sdk/fidl/fuchsia.device.manager", - "-I", sourceDirVar + "/out/arm64/fidling/gen/sdk/fidl/fuchsia.hardware.nand", - "-I", sourceDirVar + "/out/arm64/fidling/gen/sdk/fidl/fuchsia.hardware.usb.peripheral", - "-I", sourceDirVar + "/out/arm64/fidling/gen/zircon/vdso/zx", - "-L", sourceDirVar + "/out/arm64/arm64-shared", - }, + CFlags: fuchsiaCFlags("arm64", "aarch64"), }, }, "windows": { @@ -419,6 +387,27 @@ var ( } ) +func fuchsiaCFlags(arch, clangArch string) []string { + out := sourceDirVar + "/out/" + arch + return []string{ + "-Wno-deprecated", + "--target", clangArch + "-fuchsia", + "-ldriver", + "-lfdio", + "-lzircon", + "--sysroot", out + "/zircon_toolchain/obj/zircon/public/sysroot/sysroot", + "-I", sourceDirVar + "/zircon/system/ulib/fdio/include", + "-I", sourceDirVar + "/zircon/system/ulib/fidl/include", + "-I", sourceDirVar + "/src/lib/ddk/include", + "-I", out + "/fidling/gen/sdk/fidl/fuchsia.device", + "-I", out + "/fidling/gen/sdk/fidl/fuchsia.device.manager", + "-I", out + "/fidling/gen/sdk/fidl/fuchsia.hardware.nand", + "-I", out + "/fidling/gen/sdk/fidl/fuchsia.hardware.usb.peripheral", + "-I", out + "/fidling/gen/zircon/vdso/zx", + "-L", out + "/" + arch + "-shared", + } +} + func init() { for OS, archs := range List { for arch, target := range archs {