123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- package stdlib_test
- import (
- "io/ioutil"
- "os"
- "testing"
- "github.com/d5/tengo/v2"
- "github.com/d5/tengo/v2/require"
- )
- func TestReadFile(t *testing.T) {
- content := []byte("the quick brown fox jumps over the lazy dog")
- tf, err := ioutil.TempFile("", "test")
- require.NoError(t, err)
- defer func() { _ = os.Remove(tf.Name()) }()
- _, err = tf.Write(content)
- require.NoError(t, err)
- _ = tf.Close()
- module(t, "os").call("read_file", tf.Name()).
- expect(&tengo.Bytes{Value: content})
- }
- func TestReadFileArgs(t *testing.T) {
- module(t, "os").call("read_file").expectError()
- }
- func TestFileStatArgs(t *testing.T) {
- module(t, "os").call("stat").expectError()
- }
- func TestFileStatFile(t *testing.T) {
- content := []byte("the quick brown fox jumps over the lazy dog")
- tf, err := ioutil.TempFile("", "test")
- require.NoError(t, err)
- defer func() { _ = os.Remove(tf.Name()) }()
- _, err = tf.Write(content)
- require.NoError(t, err)
- _ = tf.Close()
- stat, err := os.Stat(tf.Name())
- if err != nil {
- t.Logf("could not get tmp file stat: %s", err)
- return
- }
- module(t, "os").call("stat", tf.Name()).expect(&tengo.ImmutableMap{
- Value: map[string]tengo.Object{
- "name": &tengo.String{Value: stat.Name()},
- "mtime": &tengo.Time{Value: stat.ModTime()},
- "size": tengo.Int{Value: stat.Size()},
- "mode": tengo.Int{Value: int64(stat.Mode())},
- "directory": tengo.FalseValue,
- },
- })
- }
- func TestFileStatDir(t *testing.T) {
- td, err := ioutil.TempDir("", "test")
- require.NoError(t, err)
- defer func() { _ = os.RemoveAll(td) }()
- stat, err := os.Stat(td)
- require.NoError(t, err)
- module(t, "os").call("stat", td).expect(&tengo.ImmutableMap{
- Value: map[string]tengo.Object{
- "name": &tengo.String{Value: stat.Name()},
- "mtime": &tengo.Time{Value: stat.ModTime()},
- "size": tengo.Int{Value: stat.Size()},
- "mode": tengo.Int{Value: int64(stat.Mode())},
- "directory": tengo.TrueValue,
- },
- })
- }
- func TestOSExpandEnv(t *testing.T) {
- curMaxStringLen := tengo.MaxStringLen
- defer func() { tengo.MaxStringLen = curMaxStringLen }()
- tengo.MaxStringLen = 12
- _ = os.Setenv("TENGO", "FOO BAR")
- module(t, "os").call("expand_env", "$TENGO").expect("FOO BAR")
- _ = os.Setenv("TENGO", "FOO")
- module(t, "os").call("expand_env", "$TENGO $TENGO").expect("FOO FOO")
- _ = os.Setenv("TENGO", "123456789012")
- module(t, "os").call("expand_env", "$TENGO").expect("123456789012")
- _ = os.Setenv("TENGO", "1234567890123")
- module(t, "os").call("expand_env", "$TENGO").expectError()
- _ = os.Setenv("TENGO", "123456")
- module(t, "os").call("expand_env", "$TENGO$TENGO").expect("123456123456")
- _ = os.Setenv("TENGO", "123456")
- module(t, "os").call("expand_env", "${TENGO}${TENGO}").
- expect("123456123456")
- _ = os.Setenv("TENGO", "123456")
- module(t, "os").call("expand_env", "$TENGO $TENGO").expectError()
- _ = os.Setenv("TENGO", "123456")
- module(t, "os").call("expand_env", "${TENGO} ${TENGO}").expectError()
- }
|