ensure_git_rev_available(v, channel)
tarball = git_get_tarball(v, channel)
+ if section in exprs:
+ raise Exception('Duplicate channel "%s"' % section)
exprs[section] = (
'f: f { name = "%s"; channelName = "%%s"; src = builtins.storePath "%s"; }' %
(config[section]['release_name'], tarball))
for config in configs:
for section in config.sections():
if 'alias_of' in config[section]:
+ if section in exprs:
+ raise Exception('Duplicate channel "%s"' % section)
exprs[section] = exprs[str(config[section]['alias_of'])]
command = [
--- /dev/null
+#!/bin/sh
+
+repo_dir1="`mktemp -d`"
+repo1="$repo_dir1/repo"
+git init "$repo1"
+(
+ cd "$repo1"
+ echo Contents > test-file
+ git add test-file
+ git commit -m 'Commit message'
+)
+
+repo_dir2="`mktemp -d`"
+repo2="$repo_dir2/repo"
+git init "$repo2"
+(
+ cd "$repo2"
+ echo Contents > test-file
+ git add test-file
+ git commit -m 'Commit message'
+)
+
+conf1="`mktemp`"
+cat > "$conf1" <<EOF
+[same]
+git_repo = file://$repo1
+git_ref = master
+EOF
+
+conf2="`mktemp`"
+cat > "$conf2" <<EOF
+[same]
+git_repo = file://$repo2
+git_ref = master
+EOF
+
+python3 ./pinch.py pin "$conf1"
+python3 ./pinch.py pin "$conf2"
+
+if python3 ./pinch.py update --dry-run "$conf1" "$conf2";then
+ echo "FAIL: Duplicate names should be rejected"
+ exit 1
+else
+ echo PASS
+fi
+
+rm -rf "$repo_dir1" "$repo_dir2" "$conf1" "$conf2"
+