From a5fb785334d8c0b31ccc4cfa92f4976a69bd8187 Mon Sep 17 00:00:00 2001 From: Ron Evans Date: Wed, 18 Sep 2019 10:43:20 +0200 Subject: [PATCH] compiler: ensure that any passed in target, if it does not point to a .json file, is a full LLVM triple Signed-off-by: Ron Evans --- target.go | 2 +- target_test.go | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 target_test.go diff --git a/target.go b/target.go index 7dcaa968..ad701e83 100644 --- a/target.go +++ b/target.go @@ -206,7 +206,7 @@ func LoadTarget(target string) (*TargetSpec, error) { // Load target from given triple, ignore GOOS/GOARCH environment // variables. tripleSplit := strings.Split(target, "-") - if len(tripleSplit) == 1 { + if len(tripleSplit) < 3 { return nil, errors.New("expected a full LLVM target or a custom target in -target flag") } goos := tripleSplit[2] diff --git a/target_test.go b/target_test.go new file mode 100644 index 00000000..659dcd64 --- /dev/null +++ b/target_test.go @@ -0,0 +1,19 @@ +package main + +import "testing" + +func TestLoadTarget(t *testing.T) { + _, err := LoadTarget("arduino") + if err != nil { + t.Error("LoadTarget test failed:", err) + } + + _, err = LoadTarget("notexist") + if err == nil { + t.Error("LoadTarget should have failed with non existing target") + } + + if err.Error() != "expected a full LLVM target or a custom target in -target flag" { + t.Error("LoadTarget failed for wrong reason:", err) + } +}