CodeNewbie Community 🌱

SHUBHAM
SHUBHAM

Posted on

Facing error while trying to get access to input file in golang

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
    */

}
Enter fullscreen mode Exit fullscreen mode

}

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)

Collapse
 
josephflyer917 profile image
josephflyer917

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.