My apologies for taking so long to respond; a new job and cold weather have 
taken up most of my time.

I have two versions of the application; one CLI and one web. The programs create 
characters for games and fiction, and use data text files relative to the binary ( 
<binary>/data/* ) to get names. The reason for not embedding names into the 
binary is so the data files can be altered to suit the user's needs. They may want 
Elven names, or Chinese, or whatever. The web program also uses template files, but 
those could probably be embedded.

The tests for the CLI work 
(https://github.com/makhidkarun/crewgen/blob/master/cmd/teamgen/main_test.go), but I have 
not figured out how to make the web version tests work 
(https://github.com/makhidkarun/crewgen/blob/master/cmd/crewgen/main_test.go). If I 
uncomment lines 38-57 of the web tests and run "go test" in that directory, I 
get:

###
Building crewgen...
Running crewgen tests...
Running in /tmp/TestHandleDocroot84710494/001, with 
/home/leam/lang/git/makhidkarun/crewgen/cmd/crewgen as dir.
open /tmp/go-build3480032656/b001/data/human_male_first.txt: no such file or 
directory
open /tmp/go-build3480032656/b001/data/human_last.txt: no such file or directory
open /tmp/go-build3480032656/b001/data/human_female_first.txt: no such file or 
directory
open /tmp/go-build3480032656/b001/data/human_last.txt: no such file or directory
2022/02/25 04:48:27 open /tmp/go-build3480032656/b001/web/layout.tmpl: no such 
file or directory
--- FAIL: TestHandleDocroot (0.00s)
    --- FAIL: TestHandleDocroot/BaseCrewgenRun (0.00s)
        main_test.go:53: Response code is 500
###

It seems that identifying the /tmp/go-build* directory would be useful, in that 
I could write testdata files there and do better tests. Otherwise, building in 
a specified pre-existing location so I can make sure the data files are already 
in place.

Thoughts?

Leam



On 2/23/22 09:26, David Finkel wrote:


On Wed, Feb 23, 2022 at 8:53 AM Leam Hall <leamh...@gmail.com 
<mailto:leamh...@gmail.com>> wrote:

    My program uses data and template files located relative to the binary. 
Since go test creates the binary under test in /tmp/go-build....., there are no 
data or template files. How do I either specify what directory to build in so I 
can create the files, or get the tmp directory name before the tests are run so 
I can write files to it?


When go test runs tests, they run with the current working directory inside the 
package's directory, so relative paths should work.

Another option that you might want to consider is using //go:embed directives to 
embed those files in your binary. (package doc: https://pkg.go.dev/embed 
<https://pkg.go.dev/embed>)
This way you never need to resolve anything relative to the binary again.

Note: unless you use mlock(2) embedding in the binary shouldn't bloat memory 
usage, since the data will only be paged into memory at first-access.


    Thanks!

    Leam

-- Site Automation Engineer   (reuel.net/resume <http://reuel.net/resume>)
    Scribe: The Domici War     (domiciwar.net <http://domiciwar.net>)
    General Ne'er-do-well      (github.com/LeamHall 
<http://github.com/LeamHall>)

-- You received this message because you are subscribed to the Google Groups "golang-nuts" group.
    To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com 
<mailto:golang-nuts%2bunsubscr...@googlegroups.com>.
    To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/7d8cf3dc-14ab-315f-ce5a-9e3cca877e17%40gmail.com
 
<https://groups.google.com/d/msgid/golang-nuts/7d8cf3dc-14ab-315f-ce5a-9e3cca877e17%40gmail.com>.


--
Site Automation Engineer   (reuel.net/resume)
Scribe: The Domici War     (domiciwar.net)
General Ne'er-do-well      (github.com/LeamHall)

--
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/60b3e74a-13cb-b2f8-2c1f-18ef195ddee2%40gmail.com.

Reply via email to