aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2012-03-21 19:32:39 -0400
committerMike Frysinger <vapier@gentoo.org>2012-03-21 19:32:39 -0400
commitbed527f2ff330bdf49e46bf351d069a310bff102 (patch)
tree3dcb8d4ccc83bd275c332495f095805ee8e229c0 /tests
parentgcc-config: tweak usage() help and message (diff)
downloadgcc-config-bed527f2ff330bdf49e46bf351d069a310bff102.tar.gz
gcc-config-bed527f2ff330bdf49e46bf351d069a310bff102.tar.bz2
gcc-config-bed527f2ff330bdf49e46bf351d069a310bff102.zip
tests: add some!
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'tests')
-rw-r--r--tests/.gitignore1
-rw-r--r--tests/args/test.bad12
-rw-r--r--tests/args/test.bad.exp4
-rw-r--r--tests/args/test.split6
-rw-r--r--tests/args/test.split.exp1
-rw-r--r--tests/multi-configs/etc/env.d/gcc/arm-none-eabi-4.5.36
-rw-r--r--tests/multi-configs/etc/env.d/gcc/arm-unknown-linux-gnu-4.5.36
-rw-r--r--tests/multi-configs/etc/env.d/gcc/arm-unknown-linux-gnueabi-4.5.36
-rw-r--r--tests/multi-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu1
-rw-r--r--tests/multi-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.05
-rw-r--r--tests/multi-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.15
-rw-r--r--tests/multi-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.25
-rw-r--r--tests/multi-configs/test.current5
-rw-r--r--tests/multi-configs/test.current.exp3
-rw-r--r--tests/multi-configs/test.list3
-rw-r--r--tests/multi-configs/test.list.exp10
-rw-r--r--tests/multi-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep0
-rw-r--r--tests/multi-native-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu1
-rw-r--r--tests/multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.05
-rw-r--r--tests/multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.15
-rw-r--r--tests/multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.25
-rw-r--r--tests/multi-native-configs/test.current5
-rw-r--r--tests/multi-native-configs/test.current.exp3
-rw-r--r--tests/multi-native-configs/test.list3
-rw-r--r--tests/multi-native-configs/test.list.exp4
-rw-r--r--tests/multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep0
-rw-r--r--tests/multi-native-selected-configs/etc/env.d/gcc/avr-4.5.36
-rw-r--r--tests/multi-native-selected-configs/etc/env.d/gcc/config-avr1
-rw-r--r--tests/multi-native-selected-configs/etc/env.d/gcc/config-powerpc64-unknown-linux-gnu1
-rw-r--r--tests/multi-native-selected-configs/etc/env.d/gcc/config-sh4-unknown-linux-gnu1
-rw-r--r--tests/multi-native-selected-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu1
-rw-r--r--tests/multi-native-selected-configs/etc/env.d/gcc/powerpc64-unknown-linux-gnu-4.5.36
-rw-r--r--tests/multi-native-selected-configs/etc/env.d/gcc/sh4-unknown-linux-gnu-4.5.36
-rw-r--r--tests/multi-native-selected-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.05
-rw-r--r--tests/multi-native-selected-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.15
-rw-r--r--tests/multi-native-selected-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.25
-rw-r--r--tests/multi-native-selected-configs/test.current11
-rw-r--r--tests/multi-native-selected-configs/test.current.exp5
-rw-r--r--tests/multi-native-selected-configs/test.list3
-rw-r--r--tests/multi-native-selected-configs/test.list.exp10
-rw-r--r--tests/multi-native-selected-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/32/.keep0
-rw-r--r--tests/no-config/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.25
-rw-r--r--tests/no-config/test.list3
-rw-r--r--tests/no-config/test.list.exp5
-rw-r--r--tests/no-config/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep0
-rwxr-xr-xtests/run_tests104
-rw-r--r--tests/rw-multi-native-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu1
-rw-r--r--tests/rw-multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.05
-rw-r--r--tests/rw-multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.15
-rw-r--r--tests/rw-multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.25
-rw-r--r--tests/rw-multi-native-configs/lib/.keep0
-rw-r--r--tests/rw-multi-native-configs/test.select7
-rw-r--r--tests/rw-multi-native-configs/test.select.exp3
-rw-r--r--tests/rw-multi-native-configs/test.use-old3
-rw-r--r--tests/rw-multi-native-configs/test.use-old.exp1
-rw-r--r--tests/rw-multi-native-configs/usr/bin/.keep0
-rw-r--r--tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.0/32/.keep0
-rw-r--r--tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.0/libgcc.a0
-rw-r--r--tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/32/.keep0
-rw-r--r--tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/libgcc.a0
-rw-r--r--tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep0
-rw-r--r--tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/libgcc.a0
-rwxr-xr-xtests/rw-multi-native-configs/usr/lib/misc/gcc-config0
-rwxr-xr-xtests/rw-multi-native-configs/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.0/cpp0
-rwxr-xr-xtests/rw-multi-native-configs/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.1/cpp0
-rwxr-xr-xtests/rw-multi-native-configs/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.2/cpp0
-rw-r--r--tests/single-config/etc/env.d/gcc/config-x86_64-pc-linux-gnu1
-rw-r--r--tests/single-config/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.25
-rw-r--r--tests/single-config/test.current3
-rw-r--r--tests/single-config/test.current.exp2
-rw-r--r--tests/single-config/test.list3
-rw-r--r--tests/single-config/test.list.exp2
-rw-r--r--tests/single-config/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep0
73 files changed, 339 insertions, 0 deletions
diff --git a/tests/.gitignore b/tests/.gitignore
new file mode 100644
index 0000000..27ca7f7
--- /dev/null
+++ b/tests/.gitignore
@@ -0,0 +1 @@
+/*/log
diff --git a/tests/args/test.bad b/tests/args/test.bad
new file mode 100644
index 0000000..d8a9df2
--- /dev/null
+++ b/tests/args/test.bad
@@ -0,0 +1,12 @@
+#!/bin/bash
+flags=(
+ -Q
+ "-E -B"
+ "-E -L"
+ "-B -L"
+)
+for f in "${flags[@]}" ; do
+ gcc-config ${f} && exit 1
+done
+
+exec gcc-config -h >/dev/null
diff --git a/tests/args/test.bad.exp b/tests/args/test.bad.exp
new file mode 100644
index 0000000..db51597
--- /dev/null
+++ b/tests/args/test.bad.exp
@@ -0,0 +1,4 @@
+ * gcc-config: Invalid switch! Run gcc-config without parameters for help.
+ * gcc-config: too many actions selected!
+ * gcc-config: too many actions selected!
+ * gcc-config: too many actions selected!
diff --git a/tests/args/test.split b/tests/args/test.split
new file mode 100644
index 0000000..0e6b7b5
--- /dev/null
+++ b/tests/args/test.split
@@ -0,0 +1,6 @@
+#!/bin/bash
+profiles=(
+ x86_64-pc-linux-gnu-4.6.0
+)
+gcc-config -S ${profiles[@]}
+[[ $? -eq 0 ]]
diff --git a/tests/args/test.split.exp b/tests/args/test.split.exp
new file mode 100644
index 0000000..9d2cc79
--- /dev/null
+++ b/tests/args/test.split.exp
@@ -0,0 +1 @@
+x86_64-pc-linux-gnu 4.6.0
diff --git a/tests/multi-configs/etc/env.d/gcc/arm-none-eabi-4.5.3 b/tests/multi-configs/etc/env.d/gcc/arm-none-eabi-4.5.3
new file mode 100644
index 0000000..89ec41c
--- /dev/null
+++ b/tests/multi-configs/etc/env.d/gcc/arm-none-eabi-4.5.3
@@ -0,0 +1,6 @@
+LDPATH="/usr/lib/gcc/arm-none-eabi/4.5.3"
+MANPATH="/usr/share/gcc-data/arm-none-eabi/4.5.3/man"
+INFOPATH="/usr/share/gcc-data/arm-none-eabi/4.5.3/info"
+STDCXX_INCDIR="g++-v4"
+CTARGET=arm-none-eabi
+GCC_PATH="/usr/x86_64-pc-linux-gnu/arm-none-eabi/gcc-bin/4.5.3"
diff --git a/tests/multi-configs/etc/env.d/gcc/arm-unknown-linux-gnu-4.5.3 b/tests/multi-configs/etc/env.d/gcc/arm-unknown-linux-gnu-4.5.3
new file mode 100644
index 0000000..b7a140e
--- /dev/null
+++ b/tests/multi-configs/etc/env.d/gcc/arm-unknown-linux-gnu-4.5.3
@@ -0,0 +1,6 @@
+LDPATH="/usr/lib/gcc/arm-unknown-linux-gnu/4.5.3"
+MANPATH="/usr/share/gcc-data/arm-unknown-linux-gnu/4.5.3/man"
+INFOPATH="/usr/share/gcc-data/arm-unknown-linux-gnu/4.5.3/info"
+STDCXX_INCDIR="g++-v4"
+CTARGET=arm-unknown-linux-gnu
+GCC_PATH="/usr/x86_64-pc-linux-gnu/arm-unknown-linux-gnu/gcc-bin/4.5.3"
diff --git a/tests/multi-configs/etc/env.d/gcc/arm-unknown-linux-gnueabi-4.5.3 b/tests/multi-configs/etc/env.d/gcc/arm-unknown-linux-gnueabi-4.5.3
new file mode 100644
index 0000000..e4eb06f
--- /dev/null
+++ b/tests/multi-configs/etc/env.d/gcc/arm-unknown-linux-gnueabi-4.5.3
@@ -0,0 +1,6 @@
+LDPATH="/usr/lib/gcc/arm-unknown-linux-gnueabi/4.5.3"
+MANPATH="/usr/share/gcc-data/arm-unknown-linux-gnueabi/4.5.3/man"
+INFOPATH="/usr/share/gcc-data/arm-unknown-linux-gnueabi/4.5.3/info"
+STDCXX_INCDIR="g++-v4"
+CTARGET=arm-unknown-linux-gnueabi
+GCC_PATH="/usr/x86_64-pc-linux-gnu/arm-unknown-linux-gnueabi/gcc-bin/4.5.3"
diff --git a/tests/multi-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu b/tests/multi-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu
new file mode 100644
index 0000000..fc02d33
--- /dev/null
+++ b/tests/multi-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu
@@ -0,0 +1 @@
+CURRENT=x86_64-pc-linux-gnu-4.6.2
diff --git a/tests/multi-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.0 b/tests/multi-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.0
new file mode 100644
index 0000000..58188f6
--- /dev/null
+++ b/tests/multi-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.0
@@ -0,0 +1,5 @@
+LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.0"
+MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.0/man"
+INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.0/info"
+STDCXX_INCDIR="g++-v4"
+GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.0"
diff --git a/tests/multi-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.1 b/tests/multi-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.1
new file mode 100644
index 0000000..d096389
--- /dev/null
+++ b/tests/multi-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.1
@@ -0,0 +1,5 @@
+LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1:/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/32"
+MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.1/man"
+INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.1/info"
+STDCXX_INCDIR="g++-v4"
+GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.1"
diff --git a/tests/multi-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2 b/tests/multi-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2
new file mode 100644
index 0000000..51657e5
--- /dev/null
+++ b/tests/multi-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2
@@ -0,0 +1,5 @@
+LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32"
+MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/man"
+INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/info"
+STDCXX_INCDIR="g++-v4"
+GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.2"
diff --git a/tests/multi-configs/test.current b/tests/multi-configs/test.current
new file mode 100644
index 0000000..0241a70
--- /dev/null
+++ b/tests/multi-configs/test.current
@@ -0,0 +1,5 @@
+#!/bin/bash
+gcc-config -c || exit 1
+gcc-config -c x86_64-pc-linux-gnu || exit 1
+gcc-config -c arm-none-eabi
+[[ $? -ne 0 ]]
diff --git a/tests/multi-configs/test.current.exp b/tests/multi-configs/test.current.exp
new file mode 100644
index 0000000..c801f27
--- /dev/null
+++ b/tests/multi-configs/test.current.exp
@@ -0,0 +1,3 @@
+x86_64-pc-linux-gnu-4.6.2
+x86_64-pc-linux-gnu-4.6.2
+ * gcc-config: No gcc profile is active!
diff --git a/tests/multi-configs/test.list b/tests/multi-configs/test.list
new file mode 100644
index 0000000..8e2a891
--- /dev/null
+++ b/tests/multi-configs/test.list
@@ -0,0 +1,3 @@
+#!/bin/bash
+gcc-config -C -l "$@"
+[[ $? -eq 0 ]]
diff --git a/tests/multi-configs/test.list.exp b/tests/multi-configs/test.list.exp
new file mode 100644
index 0000000..18640e1
--- /dev/null
+++ b/tests/multi-configs/test.list.exp
@@ -0,0 +1,10 @@
+Using gcc-config info in @ROOT@/
+ [1] arm-none-eabi-4.5.3
+
+ [2] arm-unknown-linux-gnu-4.5.3
+
+ [3] arm-unknown-linux-gnueabi-4.5.3
+
+ [4] x86_64-pc-linux-gnu-4.6.0
+ [5] x86_64-pc-linux-gnu-4.6.1
+ [6] x86_64-pc-linux-gnu-4.6.2 *
diff --git a/tests/multi-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep b/tests/multi-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/multi-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep
diff --git a/tests/multi-native-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu b/tests/multi-native-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu
new file mode 100644
index 0000000..fc02d33
--- /dev/null
+++ b/tests/multi-native-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu
@@ -0,0 +1 @@
+CURRENT=x86_64-pc-linux-gnu-4.6.2
diff --git a/tests/multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.0 b/tests/multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.0
new file mode 100644
index 0000000..58188f6
--- /dev/null
+++ b/tests/multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.0
@@ -0,0 +1,5 @@
+LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.0"
+MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.0/man"
+INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.0/info"
+STDCXX_INCDIR="g++-v4"
+GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.0"
diff --git a/tests/multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.1 b/tests/multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.1
new file mode 100644
index 0000000..d096389
--- /dev/null
+++ b/tests/multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.1
@@ -0,0 +1,5 @@
+LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1:/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/32"
+MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.1/man"
+INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.1/info"
+STDCXX_INCDIR="g++-v4"
+GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.1"
diff --git a/tests/multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2 b/tests/multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2
new file mode 100644
index 0000000..51657e5
--- /dev/null
+++ b/tests/multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2
@@ -0,0 +1,5 @@
+LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32"
+MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/man"
+INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/info"
+STDCXX_INCDIR="g++-v4"
+GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.2"
diff --git a/tests/multi-native-configs/test.current b/tests/multi-native-configs/test.current
new file mode 100644
index 0000000..f4ed2e9
--- /dev/null
+++ b/tests/multi-native-configs/test.current
@@ -0,0 +1,5 @@
+#!/bin/bash
+gcc-config -c || exit 1
+gcc-config -c x86_64-pc-linux-gnu || exit 1
+gcc-config -c foooooooooooooooooo
+[[ $? -ne 0 ]]
diff --git a/tests/multi-native-configs/test.current.exp b/tests/multi-native-configs/test.current.exp
new file mode 100644
index 0000000..09b744d
--- /dev/null
+++ b/tests/multi-native-configs/test.current.exp
@@ -0,0 +1,3 @@
+x86_64-pc-linux-gnu-4.6.2
+x86_64-pc-linux-gnu-4.6.2
+ * gcc-config: Could not locate 'foooooooooooooooooo' in '@ROOT@/etc/env.d/gcc/' !
diff --git a/tests/multi-native-configs/test.list b/tests/multi-native-configs/test.list
new file mode 100644
index 0000000..8e2a891
--- /dev/null
+++ b/tests/multi-native-configs/test.list
@@ -0,0 +1,3 @@
+#!/bin/bash
+gcc-config -C -l "$@"
+[[ $? -eq 0 ]]
diff --git a/tests/multi-native-configs/test.list.exp b/tests/multi-native-configs/test.list.exp
new file mode 100644
index 0000000..35646d8
--- /dev/null
+++ b/tests/multi-native-configs/test.list.exp
@@ -0,0 +1,4 @@
+Using gcc-config info in @ROOT@/
+ [1] x86_64-pc-linux-gnu-4.6.0
+ [2] x86_64-pc-linux-gnu-4.6.1
+ [3] x86_64-pc-linux-gnu-4.6.2 *
diff --git a/tests/multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep b/tests/multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep
diff --git a/tests/multi-native-selected-configs/etc/env.d/gcc/avr-4.5.3 b/tests/multi-native-selected-configs/etc/env.d/gcc/avr-4.5.3
new file mode 100644
index 0000000..3c149bc
--- /dev/null
+++ b/tests/multi-native-selected-configs/etc/env.d/gcc/avr-4.5.3
@@ -0,0 +1,6 @@
+LDPATH="/usr/lib/gcc/avr/4.5.3"
+MANPATH="/usr/share/gcc-data/avr/4.5.3/man"
+INFOPATH="/usr/share/gcc-data/avr/4.5.3/info"
+STDCXX_INCDIR="g++-v4"
+CTARGET=avr
+GCC_PATH="/usr/x86_64-pc-linux-gnu/avr/gcc-bin/4.5.3"
diff --git a/tests/multi-native-selected-configs/etc/env.d/gcc/config-avr b/tests/multi-native-selected-configs/etc/env.d/gcc/config-avr
new file mode 100644
index 0000000..61bab80
--- /dev/null
+++ b/tests/multi-native-selected-configs/etc/env.d/gcc/config-avr
@@ -0,0 +1 @@
+CURRENT=avr-4.5.3
diff --git a/tests/multi-native-selected-configs/etc/env.d/gcc/config-powerpc64-unknown-linux-gnu b/tests/multi-native-selected-configs/etc/env.d/gcc/config-powerpc64-unknown-linux-gnu
new file mode 100644
index 0000000..22af3a9
--- /dev/null
+++ b/tests/multi-native-selected-configs/etc/env.d/gcc/config-powerpc64-unknown-linux-gnu
@@ -0,0 +1 @@
+CURRENT=powerpc64-unknown-linux-gnu-4.5.3
diff --git a/tests/multi-native-selected-configs/etc/env.d/gcc/config-sh4-unknown-linux-gnu b/tests/multi-native-selected-configs/etc/env.d/gcc/config-sh4-unknown-linux-gnu
new file mode 100644
index 0000000..51c5bb0
--- /dev/null
+++ b/tests/multi-native-selected-configs/etc/env.d/gcc/config-sh4-unknown-linux-gnu
@@ -0,0 +1 @@
+CURRENT=sh4-unknown-linux-gnu-4.5.3
diff --git a/tests/multi-native-selected-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu b/tests/multi-native-selected-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu
new file mode 100644
index 0000000..496f06c
--- /dev/null
+++ b/tests/multi-native-selected-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu
@@ -0,0 +1 @@
+CURRENT=x86_64-pc-linux-gnu-4.6.1
diff --git a/tests/multi-native-selected-configs/etc/env.d/gcc/powerpc64-unknown-linux-gnu-4.5.3 b/tests/multi-native-selected-configs/etc/env.d/gcc/powerpc64-unknown-linux-gnu-4.5.3
new file mode 100644
index 0000000..14cb291
--- /dev/null
+++ b/tests/multi-native-selected-configs/etc/env.d/gcc/powerpc64-unknown-linux-gnu-4.5.3
@@ -0,0 +1,6 @@
+LDPATH="/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.5.3"
+MANPATH="/usr/share/gcc-data/powerpc64-unknown-linux-gnu/4.5.3/man"
+INFOPATH="/usr/share/gcc-data/powerpc64-unknown-linux-gnu/4.5.3/info"
+STDCXX_INCDIR="g++-v4"
+CTARGET=powerpc64-unknown-linux-gnu
+GCC_PATH="/usr/x86_64-pc-linux-gnu/powerpc64-unknown-linux-gnu/gcc-bin/4.5.3"
diff --git a/tests/multi-native-selected-configs/etc/env.d/gcc/sh4-unknown-linux-gnu-4.5.3 b/tests/multi-native-selected-configs/etc/env.d/gcc/sh4-unknown-linux-gnu-4.5.3
new file mode 100644
index 0000000..3cf4fed
--- /dev/null
+++ b/tests/multi-native-selected-configs/etc/env.d/gcc/sh4-unknown-linux-gnu-4.5.3
@@ -0,0 +1,6 @@
+LDPATH="/usr/lib/gcc/sh4-unknown-linux-gnu/4.5.3"
+MANPATH="/usr/share/gcc-data/sh4-unknown-linux-gnu/4.5.3/man"
+INFOPATH="/usr/share/gcc-data/sh4-unknown-linux-gnu/4.5.3/info"
+STDCXX_INCDIR="g++-v4"
+CTARGET=sh4-unknown-linux-gnu
+GCC_PATH="/usr/x86_64-pc-linux-gnu/sh4-unknown-linux-gnu/gcc-bin/4.5.3"
diff --git a/tests/multi-native-selected-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.0 b/tests/multi-native-selected-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.0
new file mode 100644
index 0000000..58188f6
--- /dev/null
+++ b/tests/multi-native-selected-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.0
@@ -0,0 +1,5 @@
+LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.0"
+MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.0/man"
+INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.0/info"
+STDCXX_INCDIR="g++-v4"
+GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.0"
diff --git a/tests/multi-native-selected-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.1 b/tests/multi-native-selected-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.1
new file mode 100644
index 0000000..d096389
--- /dev/null
+++ b/tests/multi-native-selected-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.1
@@ -0,0 +1,5 @@
+LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1:/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/32"
+MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.1/man"
+INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.1/info"
+STDCXX_INCDIR="g++-v4"
+GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.1"
diff --git a/tests/multi-native-selected-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2 b/tests/multi-native-selected-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2
new file mode 100644
index 0000000..51657e5
--- /dev/null
+++ b/tests/multi-native-selected-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2
@@ -0,0 +1,5 @@
+LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32"
+MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/man"
+INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/info"
+STDCXX_INCDIR="g++-v4"
+GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.2"
diff --git a/tests/multi-native-selected-configs/test.current b/tests/multi-native-selected-configs/test.current
new file mode 100644
index 0000000..2db2238
--- /dev/null
+++ b/tests/multi-native-selected-configs/test.current
@@ -0,0 +1,11 @@
+#!/bin/bash
+targs=(
+ ""
+ x86_64-pc-linux-gnu
+ avr
+ powerpc64-unknown-linux-gnu
+ sh4-unknown-linux-gnu
+)
+for t in "${targs[@]}" ; do
+ gcc-config -c ${t} || exit 1
+done
diff --git a/tests/multi-native-selected-configs/test.current.exp b/tests/multi-native-selected-configs/test.current.exp
new file mode 100644
index 0000000..d6a36b9
--- /dev/null
+++ b/tests/multi-native-selected-configs/test.current.exp
@@ -0,0 +1,5 @@
+x86_64-pc-linux-gnu-4.6.1
+x86_64-pc-linux-gnu-4.6.1
+avr-4.5.3
+powerpc64-unknown-linux-gnu-4.5.3
+sh4-unknown-linux-gnu-4.5.3
diff --git a/tests/multi-native-selected-configs/test.list b/tests/multi-native-selected-configs/test.list
new file mode 100644
index 0000000..8e2a891
--- /dev/null
+++ b/tests/multi-native-selected-configs/test.list
@@ -0,0 +1,3 @@
+#!/bin/bash
+gcc-config -C -l "$@"
+[[ $? -eq 0 ]]
diff --git a/tests/multi-native-selected-configs/test.list.exp b/tests/multi-native-selected-configs/test.list.exp
new file mode 100644
index 0000000..2bd4005
--- /dev/null
+++ b/tests/multi-native-selected-configs/test.list.exp
@@ -0,0 +1,10 @@
+Using gcc-config info in @ROOT@/
+ [1] avr-4.5.3 *
+
+ [2] powerpc64-unknown-linux-gnu-4.5.3 *
+
+ [3] sh4-unknown-linux-gnu-4.5.3 *
+
+ [4] x86_64-pc-linux-gnu-4.6.0
+ [5] x86_64-pc-linux-gnu-4.6.1 *
+ [6] x86_64-pc-linux-gnu-4.6.2
diff --git a/tests/multi-native-selected-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/32/.keep b/tests/multi-native-selected-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/32/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/multi-native-selected-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/32/.keep
diff --git a/tests/no-config/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2 b/tests/no-config/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2
new file mode 100644
index 0000000..51657e5
--- /dev/null
+++ b/tests/no-config/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2
@@ -0,0 +1,5 @@
+LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32"
+MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/man"
+INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/info"
+STDCXX_INCDIR="g++-v4"
+GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.2"
diff --git a/tests/no-config/test.list b/tests/no-config/test.list
new file mode 100644
index 0000000..58cab33
--- /dev/null
+++ b/tests/no-config/test.list
@@ -0,0 +1,3 @@
+#!/bin/bash
+gcc-config -C -l "$@"
+[[ $? -ne 0 ]]
diff --git a/tests/no-config/test.list.exp b/tests/no-config/test.list.exp
new file mode 100644
index 0000000..0cb83fd
--- /dev/null
+++ b/tests/no-config/test.list.exp
@@ -0,0 +1,5 @@
+ * gcc-config: No gcc profile is active!
+
+Using gcc-config info in @ROOT@/
+@GCC_CONFIG@: @ROOT@/etc/env.d/gcc/config-x86_64-pc-linux-gnu: No such file or directory
+ [1] x86_64-pc-linux-gnu-4.6.2
diff --git a/tests/no-config/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep b/tests/no-config/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/no-config/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep
diff --git a/tests/run_tests b/tests/run_tests
new file mode 100755
index 0000000..1d35d9f
--- /dev/null
+++ b/tests/run_tests
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+# Avoid bash localization of error messages
+export LC_ALL=C
+
+if ! . /etc/init.d/functions.sh 2>/dev/null ; then
+ ebegin() { printf '%s ... ' "$*" ; }
+ eend() {
+ local r=${1:-0}
+ shift
+ if [[ $r -eq 0 ]] ; then
+ echo "[ ok ]"
+ else
+ echo "$* [ !! ]"
+ fi
+ return $r
+ }
+ die() { echo "$*"; exit 1; }
+fi
+
+vars=( CHOST GCC_CONFIG ROOT TROOT NOCOLOR )
+unset ${vars[@]}
+
+TROOT=${PWD}
+GCC_CONFIG="${TROOT}/../gcc-config"
+if ! "${GCC_CONFIG}" --help >/dev/null ; then
+ die "could not find gcc-config in ${TROOT}/../"
+fi
+PATH="${TROOT}/..:${PATH}"
+
+NOCOLOR="true"
+# This CHOST value doesn't matter. It could be anything.
+# As long as all the configs we test are based on this being
+# the CHOST value.
+CHOST="x86_64-pc-linux-gnu"
+
+cmp_log() {
+ local ret log=$1 exp=$2
+ local v args=()
+ for v in ${vars[@]} ; do
+ args+=( -e "s:@${v}@:${!v}:g" )
+ done
+ args+=( -e "s|: line [0-9]*: |: |g" )
+ sed "${args[@]}" "${exp}" > "${exp}.tmp"
+ sed "${args[@]}" "${log}" > "${log}.tmp"
+ diff -u "${exp}.tmp" "${log}.tmp" > "${log}.diff"
+ ret=$?
+ rm "${exp}.tmp"
+ return ${ret}
+}
+
+rm -f */*.log*
+rm -rf TMP-*-rw-*
+
+if [[ $# -eq 0 ]] ; then
+ set -- */test*
+else
+ set -- ${@/%//test*}
+ set -- ${@//\/\///}
+fi
+
+tret=0
+for t in "$@" ; do
+ [[ ${t} == *.exp ]] && continue
+
+ ebegin "Running ${t}"
+
+ test=${t##*/}
+ tdir=${t%/*}
+ if [[ ${tdir} == rw-* ]] ; then
+ cp -pPR "${tdir}" "TMP-${test}-${tdir}"
+ tdir="TMP-${test}-${tdir}"
+ fi
+
+ ROOT=${TROOT}/${tdir}
+
+ r="${ROOT}/runit"
+ cat <<-EOF > "${r}"
+ #!/bin/bash
+ cd "${ROOT}"
+ $(for v in PATH ${vars[@]} ; do printf '%s="%s"\n' ${v} "${!v}" ; done)
+ export ${vars[@]}
+ . ./${test}
+ EOF
+ chmod a+rx "${r}"
+
+ log=${ROOT}/${test}.log
+ "${r}" >& "${log}"
+ ret=$?
+ reason="exit failure"
+
+ if [[ ${ret} -eq 0 ]] ; then
+ reason="log difference"
+ cmp_log "${log}" "${log%.log}.exp"
+ ret=$?
+ fi
+ if eend ${ret} "due to ${reason}; see ${log}" ; then
+ rm -f "${log}"* "${r}"
+ [[ ${tdir} == TMP-${test}-rw-* ]] && rm -rf "${tdir}"
+ else
+ : $(( tret += $? ))
+ fi
+done
+exit ${tret}
diff --git a/tests/rw-multi-native-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu b/tests/rw-multi-native-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu
new file mode 100644
index 0000000..fc02d33
--- /dev/null
+++ b/tests/rw-multi-native-configs/etc/env.d/gcc/config-x86_64-pc-linux-gnu
@@ -0,0 +1 @@
+CURRENT=x86_64-pc-linux-gnu-4.6.2
diff --git a/tests/rw-multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.0 b/tests/rw-multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.0
new file mode 100644
index 0000000..58188f6
--- /dev/null
+++ b/tests/rw-multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.0
@@ -0,0 +1,5 @@
+LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.0"
+MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.0/man"
+INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.0/info"
+STDCXX_INCDIR="g++-v4"
+GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.0"
diff --git a/tests/rw-multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.1 b/tests/rw-multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.1
new file mode 100644
index 0000000..d096389
--- /dev/null
+++ b/tests/rw-multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.1
@@ -0,0 +1,5 @@
+LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1:/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/32"
+MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.1/man"
+INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.1/info"
+STDCXX_INCDIR="g++-v4"
+GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.1"
diff --git a/tests/rw-multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2 b/tests/rw-multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2
new file mode 100644
index 0000000..51657e5
--- /dev/null
+++ b/tests/rw-multi-native-configs/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2
@@ -0,0 +1,5 @@
+LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32"
+MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/man"
+INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/info"
+STDCXX_INCDIR="g++-v4"
+GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.2"
diff --git a/tests/rw-multi-native-configs/lib/.keep b/tests/rw-multi-native-configs/lib/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rw-multi-native-configs/lib/.keep
diff --git a/tests/rw-multi-native-configs/test.select b/tests/rw-multi-native-configs/test.select
new file mode 100644
index 0000000..ffa6bbc
--- /dev/null
+++ b/tests/rw-multi-native-configs/test.select
@@ -0,0 +1,7 @@
+#!/bin/bash
+for (( i = 1; i < 4; ++i )) ; do
+ rm -f usr/bin/cpp
+ gcc-config -C ${i} "$@" || exit 1
+ [[ -e usr/bin/cpp ]] || exit 1
+ [[ -e etc/env.d/04gcc-${CHOST} ]] || exit 1
+done
diff --git a/tests/rw-multi-native-configs/test.select.exp b/tests/rw-multi-native-configs/test.select.exp
new file mode 100644
index 0000000..9467041
--- /dev/null
+++ b/tests/rw-multi-native-configs/test.select.exp
@@ -0,0 +1,3 @@
+ * Switching native-compiler to x86_64-pc-linux-gnu-4.6.0 ... [ ok ]
+ * Switching native-compiler to x86_64-pc-linux-gnu-4.6.1 ... [ ok ]
+ * Switching native-compiler to x86_64-pc-linux-gnu-4.6.2 ... [ ok ]
diff --git a/tests/rw-multi-native-configs/test.use-old b/tests/rw-multi-native-configs/test.use-old
new file mode 100644
index 0000000..faf5605
--- /dev/null
+++ b/tests/rw-multi-native-configs/test.use-old
@@ -0,0 +1,3 @@
+#!/bin/bash
+gcc-config -C -O "$@"
+[[ $? -eq 0 ]]
diff --git a/tests/rw-multi-native-configs/test.use-old.exp b/tests/rw-multi-native-configs/test.use-old.exp
new file mode 100644
index 0000000..6d414a1
--- /dev/null
+++ b/tests/rw-multi-native-configs/test.use-old.exp
@@ -0,0 +1 @@
+ * Switching native-compiler to x86_64-pc-linux-gnu-4.6.2 ... [ ok ]
diff --git a/tests/rw-multi-native-configs/usr/bin/.keep b/tests/rw-multi-native-configs/usr/bin/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rw-multi-native-configs/usr/bin/.keep
diff --git a/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.0/32/.keep b/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.0/32/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.0/32/.keep
diff --git a/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.0/libgcc.a b/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.0/libgcc.a
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.0/libgcc.a
diff --git a/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/32/.keep b/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/32/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/32/.keep
diff --git a/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/libgcc.a b/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/libgcc.a
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.1/libgcc.a
diff --git a/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep b/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep
diff --git a/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/libgcc.a b/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/libgcc.a
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/rw-multi-native-configs/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/libgcc.a
diff --git a/tests/rw-multi-native-configs/usr/lib/misc/gcc-config b/tests/rw-multi-native-configs/usr/lib/misc/gcc-config
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/tests/rw-multi-native-configs/usr/lib/misc/gcc-config
diff --git a/tests/rw-multi-native-configs/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.0/cpp b/tests/rw-multi-native-configs/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.0/cpp
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/tests/rw-multi-native-configs/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.0/cpp
diff --git a/tests/rw-multi-native-configs/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.1/cpp b/tests/rw-multi-native-configs/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.1/cpp
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/tests/rw-multi-native-configs/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.1/cpp
diff --git a/tests/rw-multi-native-configs/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.2/cpp b/tests/rw-multi-native-configs/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.2/cpp
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/tests/rw-multi-native-configs/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.2/cpp
diff --git a/tests/single-config/etc/env.d/gcc/config-x86_64-pc-linux-gnu b/tests/single-config/etc/env.d/gcc/config-x86_64-pc-linux-gnu
new file mode 100644
index 0000000..fc02d33
--- /dev/null
+++ b/tests/single-config/etc/env.d/gcc/config-x86_64-pc-linux-gnu
@@ -0,0 +1 @@
+CURRENT=x86_64-pc-linux-gnu-4.6.2
diff --git a/tests/single-config/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2 b/tests/single-config/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2
new file mode 100644
index 0000000..51657e5
--- /dev/null
+++ b/tests/single-config/etc/env.d/gcc/x86_64-pc-linux-gnu-4.6.2
@@ -0,0 +1,5 @@
+LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32"
+MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/man"
+INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/4.6.2/info"
+STDCXX_INCDIR="g++-v4"
+GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/4.6.2"
diff --git a/tests/single-config/test.current b/tests/single-config/test.current
new file mode 100644
index 0000000..5999ed6
--- /dev/null
+++ b/tests/single-config/test.current
@@ -0,0 +1,3 @@
+#!/bin/bash
+gcc-config -c || exit 1
+gcc-config -c x86_64-pc-linux-gnu || exit 1
diff --git a/tests/single-config/test.current.exp b/tests/single-config/test.current.exp
new file mode 100644
index 0000000..45640c3
--- /dev/null
+++ b/tests/single-config/test.current.exp
@@ -0,0 +1,2 @@
+x86_64-pc-linux-gnu-4.6.2
+x86_64-pc-linux-gnu-4.6.2
diff --git a/tests/single-config/test.list b/tests/single-config/test.list
new file mode 100644
index 0000000..8e2a891
--- /dev/null
+++ b/tests/single-config/test.list
@@ -0,0 +1,3 @@
+#!/bin/bash
+gcc-config -C -l "$@"
+[[ $? -eq 0 ]]
diff --git a/tests/single-config/test.list.exp b/tests/single-config/test.list.exp
new file mode 100644
index 0000000..1c1b2c9
--- /dev/null
+++ b/tests/single-config/test.list.exp
@@ -0,0 +1,2 @@
+Using gcc-config info in @ROOT@/
+ [1] x86_64-pc-linux-gnu-4.6.2 *
diff --git a/tests/single-config/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep b/tests/single-config/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/single-config/usr/lib/gcc/x86_64-pc-linux-gnu/4.6.2/32/.keep