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)
Этот коммит содержится в:
Dan Kegel 2022-01-20 13:46:27 -08:00 коммит произвёл Ron Evans
родитель f5b7925047
коммит 9c3f9537be
3 изменённых файлов: 37 добавлений и 0 удалений

Просмотреть файл

@ -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

Просмотреть файл

@ -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
tests/os/smoke/smoke_test.go Обычный файл
Просмотреть файл

@ -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)
}
}