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.