-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
#2 Add binary analysis #3
base: main
Are you sure you want to change the base?
Changes from all commits
4fc9874
041e377
d3390ff
628baa3
dd7487a
9a17644
f27a589
2a4ec20
b13f2f6
89fb6d7
52cff28
a7e4173
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -33,5 +33,16 @@ jobs: | |
- name: Check for documentation style errors | ||
working-directory: ./docs | ||
run: ./scripts/doc8_style_check.sh | ||
|
||
- name: Set up Go | ||
uses: actions/setup-go@v4 | ||
with: | ||
go-version: '1.20' | ||
|
||
- name: Build Golang library | ||
run: go build -v ./... | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why not run just |
||
|
||
- name: Build Golang Tests | ||
run: go test -v ./... | ||
|
||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
# This workflow will build a golang project | ||
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-go | ||
|
||
name: Go | ||
|
||
on: | ||
push: | ||
branches: [ $default-branch ] | ||
pull_request: | ||
branches: [ $default-branch ] | ||
|
||
jobs: | ||
|
||
build: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
|
||
- name: Set up Go | ||
uses: actions/setup-go@v4 | ||
with: | ||
go-version: '1.20' | ||
|
||
- name: Build | ||
run: go build -v ./... | ||
|
||
- name: Test | ||
run: go test -v ./... |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
// | ||
// Copyright (c) nexB Inc. and others. All rights reserved. | ||
// ScanCode is a trademark of nexB Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
// See http://www.apache.org/licenses/LICENSE-2.0 for the license text. | ||
// See https://github.com/nexB/go-inspector for support or download. | ||
// See https://aboutcode.org for more information about nexB OSS projects. | ||
// | ||
|
||
package go_inspector | ||
|
||
import ( | ||
"debug/buildinfo" | ||
"encoding/json" | ||
"errors" | ||
) | ||
|
||
type Package struct { | ||
Path string `json:"path"` | ||
Version string `json:"version"` | ||
Sum string `json:"sum"` | ||
} | ||
|
||
// InspectLibrariesFunc interface to abstract the inspection of libraries | ||
type InspectLibrariesFunc func(filepath string) ([]Package, error) | ||
|
||
// InspectLibraries return all 3rd party packages used by the binary | ||
func (i InspectLibrariesFunc) InspectLibraries(filepath string) ([]Package, error) { | ||
var packages []Package | ||
bi, err := buildinfo.ReadFile(filepath) | ||
if err != nil { | ||
return packages, errors.New("file not found") | ||
} | ||
for _, v := range bi.Deps { | ||
item := Package{Path: v.Path, Version: v.Version, Sum: v.Sum} | ||
packages = append(packages, item) | ||
} | ||
return packages, nil | ||
} | ||
|
||
// ConvertToJSONWithPosixPaths allows to inspect libraries at the specified path, convert the file paths to POSIX format, and obtain the JSON representation of the library information with POSIX paths. | ||
func ConvertToJSONWithPosixPaths(path string, inspector InspectLibrariesFunc) ([]byte, error) { | ||
vendors, err := inspector.InspectLibraries(path) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
// Marshal the data to JSON | ||
dataJSON, err := json.Marshal(vendors) | ||
if err != nil { | ||
return nil, err | ||
} | ||
|
||
return dataJSON, nil | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
// Copyright (c) nexB Inc. and others. All rights reserved. | ||
// ScanCode is a trademark of nexB Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
// See http://www.apache.org/licenses/LICENSE-2.0 for the license text. | ||
// See https://github.com/nexB/go-inspector for support or download. | ||
// See https://aboutcode.org for more information about nexB OSS projects. | ||
package go_inspector | ||
CatalinStratu marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
import ( | ||
"testing" | ||
) | ||
|
||
func TestInspectLibraries(t *testing.T) { | ||
// Test case 1: Provide a valid filepath | ||
filepath := "examples/files/basic_golang_app/basicGoApp.exe" | ||
mockInspect := new(InspectLibrariesFunc) | ||
packages, err := mockInspect.InspectLibraries(filepath) | ||
if err != nil { | ||
t.Errorf("Unexpected error: %v", err) | ||
} | ||
|
||
// Check the length of the packages | ||
expectedNumPackages := 14 | ||
if len(packages) != expectedNumPackages { | ||
t.Errorf("Expected %d packages, but got %d", expectedNumPackages, len(packages)) | ||
} | ||
|
||
// Test case 2: Provide an invalid filepath | ||
invalidFilepath := "nonexistent/file" | ||
_, err = mockInspect.InspectLibraries(invalidFilepath) | ||
if err == nil { | ||
t.Errorf("Expected an error for an invalid filepath, but got none") | ||
} | ||
} | ||
func TestConvertToJSONWithPosixPaths(t *testing.T) { | ||
mockInspect := new(InspectLibrariesFunc) | ||
dataJSON, err := ConvertToJSONWithPosixPaths("examples/files/basic_golang_app/basicGoApp.exe", mockInspect.InspectLibraries) | ||
if err != nil { | ||
t.Fatalf("ConvertToJSONWithPosixPaths failed: %v", err) | ||
} | ||
|
||
// Check if dataJSON contains the expected JSON representation of the packages | ||
expectedJSON := `[{"path":"github.com/gin-contrib/sse","version":"v0.1.0","sum":"h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE="},{"path":"github.com/gin-gonic/gin","version":"v1.8.1","sum":"h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8="},{"path":"github.com/go-playground/locales","version":"v0.14.0","sum":"h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU="},{"path":"github.com/go-playground/universal-translator","version":"v0.18.0","sum":"h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho="},{"path":"github.com/go-playground/validator/v10","version":"v10.11.0","sum":"h1:0W+xRM511GY47Yy3bZUbJVitCNg2BOGlCyvTqsp/xIw="},{"path":"github.com/leodido/go-urn","version":"v1.2.1","sum":"h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w="},{"path":"github.com/mattn/go-isatty","version":"v0.0.14","sum":"h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y="},{"path":"github.com/pelletier/go-toml/v2","version":"v2.0.2","sum":"h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw="},{"path":"github.com/ugorji/go/codec","version":"v1.2.7","sum":"h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0="},{"path":"golang.org/x/crypto","version":"v0.0.0-20220722155217-630584e8d5aa","sum":"h1:zuSxTR4o9y82ebqCUJYNGJbGPo6sKVl54f/TVDObg1c="},{"path":"golang.org/x/net","version":"v0.0.0-20220725212005-46097bf591d3","sum":"h1:2yWTtPWWRcISTw3/o+s/Y4UOMnQL71DWyToOANFusCg="},{"path":"golang.org/x/text","version":"v0.3.7","sum":"h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk="},{"path":"google.golang.org/protobuf","version":"v1.28.0","sum":"h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw="},{"path":"gopkg.in/yaml.v2","version":"v2.4.0","sum":"h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY="}]` | ||
CatalinStratu marked this conversation as resolved.
Show resolved
Hide resolved
|
||
if string(dataJSON) != expectedJSON { | ||
t.Errorf("Expected JSON: %s, but got %s", expectedJSON, string(dataJSON)) | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
// | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can you keep your package names all lower case? Use underscore as separator There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Can you give me a little more details? |
||
// Copyright (c) nexB Inc. and others. All rights reserved. | ||
// ScanCode is a trademark of nexB Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
// See http://www.apache.org/licenses/LICENSE-2.0 for the license text. | ||
// See https://github.com/nexB/go-inspector for support or download. | ||
// See https://aboutcode.org for more information about nexB OSS projects. | ||
// | ||
|
||
package main | ||
|
||
import ( | ||
"fmt" | ||
goinspector "github.com/nexB/go-inspector" | ||
CatalinStratu marked this conversation as resolved.
Show resolved
Hide resolved
|
||
"os" | ||
) | ||
|
||
func main() { | ||
args := os.Args | ||
if len(args) != 2 { | ||
fmt.Printf("Usage: %v \n", args[0]) | ||
fmt.Printf(" Load executable file file, and\n") | ||
fmt.Printf(" print portions of its creation info data.\n") | ||
return | ||
} | ||
mockInspect := new(goinspector.InspectLibrariesFunc) | ||
jsonData, err := goinspector.ConvertToJSONWithPosixPaths(args[1], mockInspect.InspectLibraries) | ||
if err != nil { | ||
CatalinStratu marked this conversation as resolved.
Show resolved
Hide resolved
|
||
fmt.Println("Error:", err) | ||
os.Exit(1) | ||
} | ||
|
||
fmt.Println(string(jsonData)) | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
module github.com/nexB/go-inspector/basicGoApp | ||
CatalinStratu marked this conversation as resolved.
Show resolved
Hide resolved
CatalinStratu marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
go 1.16 | ||
|
||
require ( | ||
github.com/gin-gonic/gin v1.8.1 | ||
github.com/go-playground/validator/v10 v10.11.0 // indirect | ||
github.com/goccy/go-json v0.9.10 // indirect | ||
github.com/google/go-cmp v0.5.6 // indirect | ||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect | ||
github.com/pelletier/go-toml/v2 v2.0.2 // indirect | ||
github.com/stretchr/testify v1.7.2 | ||
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect | ||
golang.org/x/net v0.0.0-20220725212005-46097bf591d3 // indirect | ||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect | ||
) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= | ||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= | ||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||
github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= | ||
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= | ||
github.com/gin-gonic/gin v1.8.1 h1:4+fr/el88TOO3ewCmQr8cx/CtZ/umlIRIs5M4NTNjf8= | ||
github.com/gin-gonic/gin v1.8.1/go.mod h1:ji8BvRH1azfM+SYow9zQ6SZMvR8qOMZHmsCuWR9tTTk= | ||
github.com/go-playground/assert/v2 v2.0.1 h1:MsBgLAaY856+nPRTKrp3/OZK38U/wa0CcBYNjji3q3A= | ||
github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= | ||
github.com/go-playground/locales v0.14.0 h1:u50s323jtVGugKlcYeyzC0etD1HifMjqmJqb8WugfUU= | ||
github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= | ||
github.com/go-playground/universal-translator v0.18.0 h1:82dyy6p4OuJq4/CByFNOn/jYrnRPArHwAcmLoJZxyho= | ||
github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= | ||
github.com/go-playground/validator/v10 v10.10.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= | ||
github.com/go-playground/validator/v10 v10.11.0 h1:0W+xRM511GY47Yy3bZUbJVitCNg2BOGlCyvTqsp/xIw= | ||
github.com/go-playground/validator/v10 v10.11.0/go.mod h1:i+3WkQ1FvaUjjxh1kSvIA4dMGDBiPU55YFDl0WbKdWU= | ||
github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= | ||
github.com/goccy/go-json v0.9.10 h1:hCeNmprSNLB8B8vQKWl6DpuH0t60oEs+TAk9a7CScKc= | ||
github.com/goccy/go-json v0.9.10/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= | ||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= | ||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= | ||
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= | ||
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= | ||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= | ||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= | ||
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= | ||
github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= | ||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= | ||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= | ||
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= | ||
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | ||
github.com/leodido/go-urn v1.2.1 h1:BqpAaACuzVSgi/VLzGZIobT2z4v53pjosyNd9Yv6n/w= | ||
github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= | ||
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= | ||
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= | ||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | ||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= | ||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= | ||
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= | ||
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= | ||
github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= | ||
github.com/pelletier/go-toml/v2 v2.0.2 h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw= | ||
github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI= | ||
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= | ||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||
github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= | ||
github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8= | ||
github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= | ||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | ||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||
github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= | ||
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= | ||
github.com/ugorji/go v1.2.7 h1:qYhyWUUd6WbiM+C6JZAUkIJt/1WrjzNHY9+KCIjVqTo= | ||
github.com/ugorji/go v1.2.7/go.mod h1:nF9osbDWLy6bDVv/Rtoh6QgnvNDpmCalQV5urGCCS6M= | ||
github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0= | ||
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY= | ||
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= | ||
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= | ||
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa h1:zuSxTR4o9y82ebqCUJYNGJbGPo6sKVl54f/TVDObg1c= | ||
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= | ||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= | ||
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= | ||
golang.org/x/net v0.0.0-20220725212005-46097bf591d3 h1:2yWTtPWWRcISTw3/o+s/Y4UOMnQL71DWyToOANFusCg= | ||
golang.org/x/net v0.0.0-20220725212005-46097bf591d3/go.mod h1:AaygXjzTFtRAg2ttMY5RMuhpJ3cNnI0XpyFJD1iQRSM= | ||
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s= | ||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= | ||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= | ||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= | ||
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= | ||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= | ||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= | ||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= | ||
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= | ||
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= | ||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= | ||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= | ||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= | ||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= | ||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= | ||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= | ||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
// | ||
// Copyright (c) nexB Inc. and others. All rights reserved. | ||
CatalinStratu marked this conversation as resolved.
Show resolved
Hide resolved
|
||
// ScanCode is a trademark of nexB Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
// See http://www.apache.org/licenses/LICENSE-2.0 for the license text. | ||
// See https://github.com/nexB/go-inspector for support or download. | ||
// See https://aboutcode.org for more information about nexB OSS projects. | ||
// | ||
|
||
package main | ||
|
||
import ( | ||
"github.com/gin-gonic/gin" | ||
"net/http" | ||
) | ||
|
||
var db = make(map[string]string) | ||
|
||
func setupRouter() *gin.Engine { | ||
r := gin.Default() | ||
|
||
// Ping test | ||
r.GET("/ping", func(c *gin.Context) { | ||
c.String(http.StatusOK, "pong") | ||
}) | ||
|
||
// Get user value | ||
r.GET("/user/:name", func(c *gin.Context) { | ||
user := c.Params.ByName("name") | ||
value, ok := db[user] | ||
if ok { | ||
c.JSON(http.StatusOK, gin.H{"user": user, "value": value}) | ||
} else { | ||
c.JSON(http.StatusOK, gin.H{"user": user, "status": "no value"}) | ||
} | ||
}) | ||
|
||
return r | ||
} | ||
|
||
func main() { | ||
r := setupRouter() | ||
|
||
// Listen and Server in 0.0.0.0:8080 | ||
r.Run(":8080") | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
// | ||
// Copyright (c) nexB Inc. and others. All rights reserved. | ||
// ScanCode is a trademark of nexB Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
// See http://www.apache.org/licenses/LICENSE-2.0 for the license text. | ||
// See https://github.com/nexB/go-inspector for support or download. | ||
// See https://aboutcode.org for more information about nexB OSS projects. | ||
// | ||
|
||
package main | ||
|
||
import ( | ||
"net/http" | ||
"net/http/httptest" | ||
"testing" | ||
|
||
"github.com/stretchr/testify/assert" | ||
) | ||
|
||
func TestPingRoute(t *testing.T) { | ||
router := setupRouter() | ||
|
||
w := httptest.NewRecorder() | ||
req, _ := http.NewRequest("GET", "/ping", nil) | ||
router.ServeHTTP(w, req) | ||
|
||
assert.Equal(t, http.StatusOK, w.Code) | ||
assert.Equal(t, "pong", w.Body.String()) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You cannot run the tests as part of the documentation workflow. Either create a new workflow or use the azure pipeline instead.