You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.6 KiB
86 lines
2.6 KiB
// Copyright 2019 The Chromium OS Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"regexp"
|
|
"testing"
|
|
)
|
|
|
|
func TestRemovePrintCmdlineArg(t *testing.T) {
|
|
withTestContext(t, func(ctx *testContext) {
|
|
cmd := ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(gccX86_64, "-print-cmdline", mainCc)))
|
|
if err := verifyArgCount(cmd, 0, "-print-cmdline"); err != nil {
|
|
t.Error(err)
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestPrintCompilerCommand(t *testing.T) {
|
|
withTestContext(t, func(ctx *testContext) {
|
|
ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(gccX86_64, "-print-cmdline", mainCc)))
|
|
if matched, _ := regexp.MatchString(`cd '.*' && '.*/x86_64-cros-linux-gnu-gcc.real'.*'main.cc'`, ctx.stderrString()); !matched {
|
|
t.Errorf("sub command not printed to stderr. Got: %s", ctx.stderrString())
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestPrintNestedCommand(t *testing.T) {
|
|
withTestContext(t, func(ctx *testContext) {
|
|
// Note: -clang-syntax calls clang to check the syntax
|
|
ctx.must(callCompiler(ctx, ctx.cfg, ctx.newCommand(gccX86_64, "-print-cmdline", "-clang-syntax", mainCc)))
|
|
if matched, _ := regexp.MatchString(`cd '.*' && '.*usr/bin/clang'.*'main.cc'.*'-fsyntax-only'`, ctx.stderrString()); !matched {
|
|
t.Errorf("sub command not printed to stderr. Got: %s", ctx.stderrString())
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestPrintCmdWd(t *testing.T) {
|
|
withTestContext(t, func(ctx *testContext) {
|
|
printCmd(ctx, &command{
|
|
Path: "/somepath",
|
|
})
|
|
if ctx.stderrString() != fmt.Sprintf("cd '%s' && '/somepath'\n", ctx.tempDir) {
|
|
t.Errorf("unexpected result. Got: %s", ctx.stderrString())
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestPrintCmdAbsolutePath(t *testing.T) {
|
|
withTestContext(t, func(ctx *testContext) {
|
|
printCmd(ctx, &command{
|
|
Path: "somepath",
|
|
})
|
|
if ctx.stderrString() != fmt.Sprintf("cd '%s' && '%s/somepath'\n", ctx.tempDir, ctx.tempDir) {
|
|
t.Errorf("unexpected result. Got: %s", ctx.stderrString())
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestPrintCmdEnvUpdates(t *testing.T) {
|
|
withTestContext(t, func(ctx *testContext) {
|
|
printCmd(ctx, &command{
|
|
Path: "/somepath",
|
|
EnvUpdates: []string{"a=b"},
|
|
})
|
|
if ctx.stderrString() != fmt.Sprintf("cd '%s' && env 'a=b' '/somepath'\n", ctx.tempDir) {
|
|
t.Errorf("unexpected result. Got: %s", ctx.stderrString())
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestPrintCmdArgs(t *testing.T) {
|
|
withTestContext(t, func(ctx *testContext) {
|
|
printCmd(ctx, &command{
|
|
Path: "/somepath",
|
|
Args: []string{"-a"},
|
|
})
|
|
if ctx.stderrString() != fmt.Sprintf("cd '%s' && '/somepath' '-a'\n", ctx.tempDir) {
|
|
t.Errorf("unexpected result. Got: %s", ctx.stderrString())
|
|
}
|
|
})
|
|
}
|