Markus Siemens
11 years ago
8 changed files with 162 additions and 55 deletions
@ -1,55 +1,51 @@ |
|||
#!/usr/bin/env bash |
|||
|
|||
RM="/bin/rm -f" |
|||
CPYTHON3=python3.3 |
|||
MP_PY=../unix/micropython |
|||
|
|||
numtests=0 |
|||
numtestcases=0 |
|||
numpassed=0 |
|||
numfailed=0 |
|||
namefailed= |
|||
|
|||
if [ $# -eq 0 ] |
|||
then |
|||
tests="basics/*.py io/*.py" |
|||
else |
|||
tests="$@" |
|||
fi |
|||
|
|||
for infile in $tests |
|||
do |
|||
basename=`basename $infile .py` |
|||
outfile=${basename}.out |
|||
expfile=${basename}.exp |
|||
|
|||
$CPYTHON3 -B $infile > $expfile |
|||
$MP_PY $infile > $outfile |
|||
((numtestcases = numtestcases + $(cat $expfile | wc -l))) |
|||
|
|||
diff --brief $expfile $outfile > /dev/null |
|||
|
|||
if [ $? -eq 0 ] |
|||
then |
|||
echo "pass $infile" |
|||
$RM $outfile |
|||
$RM $expfile |
|||
((numpassed=numpassed + 1)) |
|||
else |
|||
echo "FAIL $infile" |
|||
((numfailed=numfailed + 1)) |
|||
namefailed="$namefailed $basename" |
|||
fi |
|||
|
|||
((numtests=numtests + 1)) |
|||
done |
|||
|
|||
echo "$numtests tests performed ($numtestcases individual testcases)" |
|||
echo "$numpassed tests passed" |
|||
if [[ $numfailed != 0 ]] |
|||
then |
|||
echo "$numfailed tests failed -$namefailed" |
|||
exit 1 |
|||
else |
|||
exit 0 |
|||
fi |
|||
#! /usr/bin/env python3.3 |
|||
|
|||
import os |
|||
import subprocess |
|||
import sys |
|||
from glob import glob |
|||
|
|||
if os.name == 'nt': |
|||
CPYTHON3 = 'python3.3.exe' |
|||
MP_PY = '../windows/micropython.exe' |
|||
else: |
|||
CPYTHON3 = 'python3.3' |
|||
MP_PY = '../unix/micropython' |
|||
|
|||
|
|||
test_count = 0 |
|||
testcase_count = 0 |
|||
passed_count = 0 |
|||
failed_tests = [] |
|||
tests = [] |
|||
|
|||
if not sys.argv[1:]: |
|||
tests = glob('basics/*.py') + glob('io/*.py') |
|||
else: |
|||
tests = sys.argv[1:] |
|||
|
|||
for test_file in tests: |
|||
test_name = os.path.splitext(os.path.basename(test_file))[0] |
|||
|
|||
output_expected = subprocess.check_output([CPYTHON3, '-B', test_file]) |
|||
output_mypy = subprocess.check_output([MP_PY, test_file]) |
|||
|
|||
testcase_count += len(output_expected.splitlines()) |
|||
|
|||
if output_expected != output_mypy: |
|||
print("pass ", test_file) |
|||
passed_count += 1 |
|||
else: |
|||
print("FAIL ", test_file) |
|||
failed_tests.append(test_name) |
|||
|
|||
test_count += 1 |
|||
|
|||
print("{} tests performed ({} individual testcases)".format(test_count, |
|||
testcase_count)) |
|||
print("{} tests passed".format(passed_count)) |
|||
|
|||
if len(failed_tests) > 0: |
|||
print("{} tests failed: {}".format(len(failed_tests), |
|||
' '.join(failed_tests))) |
|||
sys.exit(1) |
|||
|
@ -0,0 +1,36 @@ |
|||
include ../py/mkenv.mk |
|||
|
|||
# define main target
|
|||
PROG = micropython.exe |
|||
|
|||
# qstr definitions (must come before including py.mk)
|
|||
QSTR_DEFS = qstrdefsport.h |
|||
|
|||
# include py core make definitions
|
|||
include ../py/py.mk |
|||
|
|||
# compiler settings
|
|||
CFLAGS = -I. -I$(PY_SRC) -Wall -Werror -ansi -std=gnu99 -DUNIX |
|||
LDFLAGS = -lm |
|||
|
|||
# Debugging/Optimization
|
|||
ifdef DEBUG |
|||
CFLAGS += -O0 -g |
|||
else |
|||
CFLAGS += -Os #-DNDEBUG |
|||
endif |
|||
|
|||
# source files
|
|||
SRC_C = \
|
|||
main.c \
|
|||
file.c \
|
|||
|
|||
OBJ = $(PY_O) $(addprefix $(BUILD)/, $(SRC_C:.c=.o)) |
|||
LIB = -lreadline |
|||
LIB += -lws2_32 |
|||
LIB += -lmman |
|||
# the following is needed for BSD
|
|||
#LIB += -ltermcap
|
|||
|
|||
include ../py/mkrules.mk |
|||
|
@ -0,0 +1,2 @@ |
|||
#include <stdio.h> |
|||
#include "../unix/file.c" |
@ -0,0 +1,5 @@ |
|||
#include "../unix/main.c" |
|||
|
|||
void rawsocket_init() { |
|||
// Do nothing here
|
|||
} |
@ -0,0 +1,36 @@ |
|||
// options to control how Micro Python is built
|
|||
|
|||
// Linking with GNU readline causes binary to be licensed under GPL
|
|||
#ifndef MICROPY_USE_READLINE |
|||
#define MICROPY_USE_READLINE (1) |
|||
#endif |
|||
|
|||
#define MICROPY_EMIT_X64 (1) |
|||
#define MICROPY_EMIT_THUMB (0) |
|||
#define MICROPY_EMIT_INLINE_THUMB (0) |
|||
#define MICROPY_MEM_STATS (1) |
|||
#define MICROPY_DEBUG_PRINTERS (1) |
|||
#define MICROPY_ENABLE_REPL_HELPERS (1) |
|||
#define MICROPY_ENABLE_LEXER_UNIX (1) |
|||
#define MICROPY_ENABLE_FLOAT (1) |
|||
#define MICROPY_LONGINT_IMPL (MICROPY_LONGINT_IMPL_LONGLONG) |
|||
|
|||
// type definitions for the specific machine
|
|||
|
|||
#ifdef __LP64__ |
|||
typedef long machine_int_t; // must be pointer size
|
|||
typedef unsigned long machine_uint_t; // must be pointer size
|
|||
#else |
|||
// These are definitions for machines where sizeof(int) == sizeof(void*),
|
|||
// regardless for actual size.
|
|||
typedef int machine_int_t; // must be pointer size
|
|||
typedef unsigned int machine_uint_t; // must be pointer size
|
|||
#endif |
|||
|
|||
#define BYTES_PER_WORD sizeof(machine_int_t) |
|||
|
|||
typedef void *machine_ptr_t; // must be of pointer size
|
|||
typedef const void *machine_const_ptr_t; // must be of pointer size
|
|||
typedef double machine_float_t; |
|||
|
|||
machine_float_t machine_sqrt(machine_float_t x); |
@ -0,0 +1,8 @@ |
|||
// qstrs specific to this port
|
|||
|
|||
Q(sys) |
|||
Q(argv) |
|||
Q(open) |
|||
Q(stdin) |
|||
Q(stdout) |
|||
Q(stderr) |
Loading…
Reference in new issue