I am new to golang and in order to complete a coding challenge I have downloaded a code snippet and i have gone through the readme.md file and after running run.bat command as stated in the readme.md file an executable file geektrust.exe is created but when I am trying to run the code by giving command go run main.go along with along with file path ./geektrust sample_input/input1.txt, it's always printing an error message "Error opening the input file". For your reference I am providing you the source code file,README.md file Note:- the input file has the extension .txt, it's a text file
`main.go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
cliArgs := os.Args[1:]
if len(cliArgs) == 0 {
fmt.Println("Please provide the input file path")
return
}
filePath := cliArgs[0]
file, err := os.Open(filePath)
if err != nil {
fmt.Println("Error opening the input file")
return
}
defer file.Close()
scanner := bufio.NewScanner(file)
for scanner.Scan() {
/*
args := scanner.Text()
argList := strings.Fields(args)
Add your code here to process the input commands
*/
}
}
README.md file
Pre-requisites
- Go 1.15.7/1.16.8/1.17
- go tool
How to run the code
We have provided scripts to execute the code.
Use run.sh
if you are Linux/Unix/macOS Operating systems and run.bat
if you are on Windows. Both the files run the commands silently and prints only output from the input file sample_input/input1.txt
. You are supposed to add the input commands in the file from the appropriate problem statement.
Internally both the scripts run the following commands
-
go build .
- This will build an executable by the name geektrust in the directory $GOPATH/src/geektrust besides the main.go file . - Execute the file from the directory $GOPATH/src/geektrust using the command
./geektrust sample_input/input1.txt
We expect your program to take the location to the text file as parameter. Input needs to be read from a text file, and output should be printed to the console. The text file will contain only commands in the format prescribed by the respective problem.
This main file, main.go should receive in the command line argument and parse the file passed in. Once the file is parsed and the application processes the commands, it should only print the output.
# Running the code for multiple test cases
Please fill input1.txt
and input2.txt
with the input commands and use those files in run.bat
or run.sh
. Replace ./geektrust sample_input/input1.txt
with ./geektrust sample_input/input2.txt
to run the test case from the second file.
# How to execute the unit tests
The unit tests are ran and the coverage is calculated using the library gotestsum
. This is independent of your solution and there is no need to add any dependency. However this will work only if you use Go Modules for dependency management.
We execute the unit tests by running the following command from the directory $GOPATH/src/geektrust
gotestsum --hide-summary=all ./...
We check for the coverage of unit tests by executing the following command. from the directory $GOPATH/src/geektrust
gotestsum --hide-summary=all -- -coverprofile=cover.out ./...
Help
You can refer our help documents here
You can read build instructions here`
Top comments (1)
Make sure you are providing the correct file path as an argument when running the code. Double-check that the input file is in the correct location and that you are running the code from the right directory. If the input file is in a different directory, you may need to provide an absolute or relative path to it.
Also, ensure that the input file is named correctly and has the ".txt" extension as mentioned in the README.md file. If everything seems correct, try running the scanning Service code from the same directory where the "geektrust" executable is located.