| OLD | NEW |
| 1 // Copyright 2015 The LUCI Authors. All rights reserved. | 1 // Copyright 2015 The LUCI Authors. All rights reserved. |
| 2 // Use of this source code is governed under the Apache License, Version 2.0 | 2 // Use of this source code is governed under the Apache License, Version 2.0 |
| 3 // that can be found in the LICENSE file. | 3 // that can be found in the LICENSE file. |
| 4 | 4 |
| 5 package main | 5 package main |
| 6 | 6 |
| 7 import ( | 7 import ( |
| 8 "path/filepath" | 8 "path/filepath" |
| 9 "strings" | 9 "strings" |
| 10 "testing" | 10 "testing" |
| 11 | 11 |
| 12 » "github.com/luci/luci-go/client/internal/common" | 12 » "github.com/luci/luci-go/client/isolate" |
| 13 "github.com/luci/luci-go/common/flag/stringmapflag" | 13 "github.com/luci/luci-go/common/flag/stringmapflag" |
| 14 | 14 |
| 15 . "github.com/smartystreets/goconvey/convey" | 15 . "github.com/smartystreets/goconvey/convey" |
| 16 ) | 16 ) |
| 17 | 17 |
| 18 func TestConvertPyToGoArchiveCMDArgs(t *testing.T) { | 18 func TestConvertPyToGoArchiveCMDArgs(t *testing.T) { |
| 19 t.Parallel() | 19 t.Parallel() |
| 20 Convey(`Archive command line arguments should be converted properly for
Go.`, t, func() { | 20 Convey(`Archive command line arguments should be converted properly for
Go.`, t, func() { |
| 21 data := []struct { | 21 data := []struct { |
| 22 input []string | 22 input []string |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 84 "--extra-variable", "version_full=42.0.2284.0", | 84 "--extra-variable", "version_full=42.0.2284.0", |
| 85 "--config-variable", "OS=linux", | 85 "--config-variable", "OS=linux", |
| 86 } | 86 } |
| 87 root := absToOS("e:", "/tmp/bar") | 87 root := absToOS("e:", "/tmp/bar") |
| 88 opts, err := parseArchiveCMD(args, root) | 88 opts, err := parseArchiveCMD(args, root) |
| 89 base := filepath.Dir(root) | 89 base := filepath.Dir(root) |
| 90 So(opts.Isolate, ShouldResemble, filepath.Join(base, "boz", "bar
.isolate")) | 90 So(opts.Isolate, ShouldResemble, filepath.Join(base, "boz", "bar
.isolate")) |
| 91 So(opts.Isolated, ShouldResemble, filepath.Join(base, "biz", "ba
r.isolated")) | 91 So(opts.Isolated, ShouldResemble, filepath.Join(base, "biz", "ba
r.isolated")) |
| 92 So(err, ShouldBeNil) | 92 So(err, ShouldBeNil) |
| 93 So(stringmapflag.Value{"OS": "linux"}, ShouldResemble, opts.Conf
igVariables) | 93 So(stringmapflag.Value{"OS": "linux"}, ShouldResemble, opts.Conf
igVariables) |
| 94 » » if common.IsWindows() { | 94 » » if isolate.IsWindows() { |
| 95 So(stringmapflag.Value{"PRODUCT_DIR": "../../out/Release
", "EXECUTABLE_SUFFIX": ".exe", "DEPTH": "../.."}, ShouldResemble, opts.PathVari
ables) | 95 So(stringmapflag.Value{"PRODUCT_DIR": "../../out/Release
", "EXECUTABLE_SUFFIX": ".exe", "DEPTH": "../.."}, ShouldResemble, opts.PathVari
ables) |
| 96 } else { | 96 } else { |
| 97 So(stringmapflag.Value{"PRODUCT_DIR": "../../out/Release
", "EXECUTABLE_SUFFIX": "", "DEPTH": "../.."}, ShouldResemble, opts.PathVariable
s) | 97 So(stringmapflag.Value{"PRODUCT_DIR": "../../out/Release
", "EXECUTABLE_SUFFIX": "", "DEPTH": "../.."}, ShouldResemble, opts.PathVariable
s) |
| 98 } | 98 } |
| 99 So(stringmapflag.Value{"version_full": "42.0.2284.0"}, ShouldRes
emble, opts.ExtraVariables) | 99 So(stringmapflag.Value{"version_full": "42.0.2284.0"}, ShouldRes
emble, opts.ExtraVariables) |
| 100 }) | 100 }) |
| 101 } | 101 } |
| 102 | 102 |
| 103 // Verify that if the isolate/isolated paths are absolute, we don't | 103 // Verify that if the isolate/isolated paths are absolute, we don't |
| 104 // accidentally interpret them as relative to the cwd. | 104 // accidentally interpret them as relative to the cwd. |
| 105 func TestArchiveAbsolutePaths(t *testing.T) { | 105 func TestArchiveAbsolutePaths(t *testing.T) { |
| 106 t.Parallel() | 106 t.Parallel() |
| 107 Convey(`Archive command line should correctly handle absolute paths.`, t
, func() { | 107 Convey(`Archive command line should correctly handle absolute paths.`, t
, func() { |
| 108 root := absToOS("e:", "/tmp/bar/") | 108 root := absToOS("e:", "/tmp/bar/") |
| 109 args := []string{ | 109 args := []string{ |
| 110 "--isolated", root + "foo.isolated", | 110 "--isolated", root + "foo.isolated", |
| 111 "--isolate", root + "foo.isolate", | 111 "--isolate", root + "foo.isolate", |
| 112 } | 112 } |
| 113 opts, err := parseArchiveCMD(args, absToOS("x:", "/var/lib")) | 113 opts, err := parseArchiveCMD(args, absToOS("x:", "/var/lib")) |
| 114 So(err, ShouldBeNil) | 114 So(err, ShouldBeNil) |
| 115 So(opts.Isolate, ShouldResemble, root+"foo.isolate") | 115 So(opts.Isolate, ShouldResemble, root+"foo.isolate") |
| 116 So(opts.Isolated, ShouldResemble, root+"foo.isolated") | 116 So(opts.Isolated, ShouldResemble, root+"foo.isolated") |
| 117 }) | 117 }) |
| 118 } | 118 } |
| 119 | 119 |
| 120 // Private stuff. | 120 // Private stuff. |
| 121 | 121 |
| 122 // absToOS converts a POSIX path to OS specific format. | 122 // absToOS converts a POSIX path to OS specific format. |
| 123 func absToOS(drive, p string) string { | 123 func absToOS(drive, p string) string { |
| 124 » if common.IsWindows() { | 124 » if isolate.IsWindows() { |
| 125 return drive + strings.Replace(p, "/", "\\", -1) | 125 return drive + strings.Replace(p, "/", "\\", -1) |
| 126 } | 126 } |
| 127 return p | 127 return p |
| 128 } | 128 } |
| OLD | NEW |