os: add stubs for Readlink and File.Seek for baremetal targets, with smoke test.

Test currently enabled on pybadge (chosen at random)

TODO:
- enable test on arduino; currently fails with "interp: ptrtoint integer size..." (#2389)
- enable test on nintendoswitch; currently fails with many missing definitions (#2530)
This commit is contained in:
Dan Kegel
2022-01-20 13:46:27 -08:00
committed by Ron Evans
parent f5b7925047
commit 9c3f9537be
3 changed files with 37 additions and 0 deletions
+2
View File
@@ -298,6 +298,8 @@ tinygo-bench-wasi-fast:
.PHONY: smoketest
smoketest:
$(TINYGO) version
# regression test for #2563
cd tests/os/smoke && $(TINYGO) test -c -target=pybadge && rm smoke.test
# test all examples (except pwm)
$(TINYGO) build -size short -o test.hex -target=pca10040 examples/blinky1
@$(MD5SUM) test.hex
+8
View File
@@ -62,6 +62,14 @@ func Pipe() (r *File, w *File, err error) {
return nil, nil, ErrNotImplemented
}
func (f *File) Seek(offset int64, whence int) (ret int64, err error) {
return 0, ErrNotImplemented
}
func Readlink(name string) (string, error) {
return "", ErrNotImplemented
}
func tempDir() string {
return "/tmp"
}
+27
View File
@@ -0,0 +1,27 @@
package os_smoke_test
// Simple smoke tests for the os package or things that depend on it.
// Intended to catch build tag mistakes affecting bare metal targets.
import (
"fmt"
"path/filepath"
"testing"
)
// Regression test for https://github.com/tinygo-org/tinygo/issues/2563
func TestFilepath(t *testing.T) {
if filepath.Base("foo/bar") != "bar" {
t.Errorf("filepath.Base is very confused")
}
}
// Regression test for https://github.com/tinygo-org/tinygo/issues/2530
func TestFmt(t *testing.T) {
n, err := fmt.Printf("Hello, world!\n")
if err != nil {
t.Errorf("printf returned error %s", err)
} else if n != 14 {
t.Errorf("printf returned %d, expected 14", n)
}
}